Modèle architectural d'un arrêt de bus avec pare-soleil automatique V2
Composants et fournitures
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| LED haute luminosité, blanche | | × | 6 | |
| | × | 3 | |
| Planche à pain (générique) | | × | 1 | |
| Câbles de raccordement mâle/mâle | | × | 27 | |
| | × | 2 | |
| | × | 2 | |
| | × | 1 | |
| | × | 1 | |
À propos de ce projet
Ceci est une mise à jour du projet précédent (V 1.0)
Les principaux changements par rapport à la V1.0 sont :
- La taille du modèle architectural. Il a une taille de 1,5 m x 1 m
- Le poids du pare-soleil, c'est pourquoi nous changeons le micro servo SG99 en MG995
- Nous avons ajouté une source d'alimentation externe pour que le MG995 puisse fonctionner
- Nous avons essayé deux mécanismes différents pour étendre/rétracter le pare-soleil. Celui qui a été jeté est montré dans la deuxième vidéo. Celui que nous avons utilisé à la fin est montré dans le 3ème. vidéo.
- Modifiez le croquis pour utiliser la bibliothèque VarSpeedServo
- Correction d'une petite erreur logique dans l'un des états du pare-soleil (merci à Gurneet1928)
Vous pouvez trouver la V1.0 sur le lien suivant :Modèle Version 1.0
LES VIDÉOS :
Réalisation du circuit
Réalisation de la maquette architecturale
Code
Le CodeC/C++
#include VarSpeedServo servo;int EasternLight =0;int westernLight =0;int rainSensed =0;int sunshadePosition =0;int rainThreshold =512;int sunshadeExpanded =120;int sunshadeContracted =60;int ambientLighting =0;int turnOnLightsOn =150;int ledIntensity =0;int ledPower =0;int servoSpeed =20;bool débogage =false; // Définir sur TRUE pour activer le débogage sur Serial Consolevoid setup(){ pinMode(A4, OUTPUT); // Éclairage intérieur de l'arrêt de bus pinMode(A5, OUTPUT); // Réverbère pinMode(A1, INPUT); // Western light pinMode (A2, INPUT); // Lumière orientale PinMode(A3, INPUT); // Capteur de pluie analogique pinMode(2, INPUT); // Capteur de pluie numérique servo.attach(A0) ; // Servo servo.write(sunshadeContracted, servoSpeed, true); if (débogage){ Serial.begin(9600); Serial.println("*** DÉBOGAGE COMMENCÉ ***"); Serial.println("---------------------------"); }}void oya_mydebug(String text, int value =NULL){ // J'ai ajouté 'oya_' comme moyen d'éviter un plantage avec toute fonction de débogage // possible qu'une bibliothèque externe pourrait avoir. Oya est une abréviation du nom // de ma société OfficeYA if (debugging){ Serial.print(text); if (valeur){ Serial.print(" ="); Serial.println(valeur); } else { Serial.println(" "); } }}void expand_collapse(int EasternLight, int westernLight){ if (EasternLight <=westernLight) { // C'est le lever du soleil oya_mydebug("C'est le lever du soleil"); if (sunshadePosition !=sunshadeExpanded) { servo.write(sunshadeExpanded, servoSpeed, true); oya_mydebug("Pare-soleil étendu"); } } if (EasternLight> westernLight) { // Il est en panne oya_mydebug("Le soleil se couche"); if (sunshadePosition !=sunshadeContracted) { servo.write(sunshadeContracted, servoSpeed, true); oya_mydebug("Pare-soleil contracté"); } }}void loop(){ // Récupère les valeurs du capteur EasternLight =analogRead(A2); westernLight =analogRead(A1) ; rainSensed =analogRead(A3) ; parasolPosition =servo.read(); ambientLighting =((EasternLight + westernLight) / 2); // Moyenne de la luminosité de l'est et de l'ouest oya_mydebug("EasternLight", EasternLight); oya_mydebug("westernLight", westernLight); oya_mydebug("rainSensed", rainSensed); oya_mydebug("Position parasol", Position parasol); oya_mydebug("ambientLighting", ambientLighting); // Découvrir s'il pleut ? if (rainSensed
Schémas