Architekturmodell einer Bushaltestelle mit automatischem Sonnenschutz V2
Komponenten und Verbrauchsmaterialien
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| High Brightness LED, Weiß | | × | 6 | |
| | × | 3 | |
| | × | 1 | |
| Überbrückungsdrähte männlich/männlich | | × | 27 | |
| | × | 2 | |
| | × | 2 | |
| | × | 1 | |
| | × | 1 | |
Über dieses Projekt
Dies ist ein Upgrade des vorherigen Projekts (V 1.0)
Die wichtigsten Änderungen gegenüber V1.0 sind:
- Die Größe des Architekturmodells. Es hat eine Größe von 1,5m x 1m
- Das Gewicht des Sonnenschirms, deshalb ändern wir das Mikroservo SG99 in das MG995
- Wir haben eine externe Stromquelle hinzugefügt, damit das MG995 funktionieren kann
- Wir haben zwei verschiedene Mechanismen ausprobiert, um den Sonnenschutz auszudehnen/zusammenzuziehen. Der, der weggeworfen wurde, wird im zweiten Video gezeigt. Diejenige, die wir am Ende verwendet haben, wird im 3. gezeigt. Video.
- Ändern Sie die Skizze, um die VarSpeedServo-Bibliothek zu verwenden
- Kleiner Logikfehler in einem der Sonnenschutzzustände behoben (Dank an Gurneet1928)
Die V1.0 finden Sie unter folgendem Link:Modellversion 1.0
DIE VIDEOS:
Herstellung der Schaltung
Herstellung des Architekturmodells
Code
Der CodeC/C++
#include VarSpeedServo servo;int eastLight =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 debugging =false; // Auf TRUE setzen, um das Debuggen von Serial Consolevoid setup () zu aktivieren {pinMode (A4, OUTPUT); // Innenbeleuchtung der Bushaltestelle pinMode(A5, OUTPUT); // Straßenlaterne PinMode (A1, INPUT); // Westlicht PinMode (A2, INPUT); // Ostlicht PinMode (A3, INPUT); // Regensensor analoger PinMode (2, INPUT); // Regensensor digital servo.attach (A0); // Servo servo.write (sunshadeContracted, servoSpeed, true); wenn (Debugging) {Serial.begin (9600); Serial.println ("*** DEBUGGING STARTED ***"); Serial.println("----------------------------------"); }}void oya_mydebug(String text, int value =NULL){ // Ich habe 'oya_' hinzugefügt, um einen Absturz mit möglichen // Debugging-Funktionen einer externen Bibliothek zu vermeiden. Oya ist eine Abkürzung des Namens // meiner Firma OfficeYA if (Debugging) {Serial.print (Text); wenn (Wert) {Serial.print (" ="); Serial.println (Wert); } sonst { Serial.println ( " "); } }}void expand_collapse(int eastLight, int westernLight){ if (easternLight <=westernLight) { // Es ist Sonnenaufgang oya_mydebug("Es ist Sonnenaufgang"); if (sunshadePosition !=sunshadeExpanded) { servo.write (sunshadeExpanded, servoSpeed, true); oya_mydebug("Sonnenschutz erweitert"); } } if (easternLight> westernLight) { // Es ist unten oya_mydebug("Sonne geht unter"); if (sunshadePosition !=sunshadeContracted) { servo.write (sunshadeContracted, servoSpeed, true); oya_mydebug("Sonnenschutz zusammengezogen"); } }}void loop () {// Sensorwerte abrufen EasternLight =analogRead (A2); westernLight =analogRead(A1); rainSensed =analogRead(A3); Sonnenschutzposition =servo.read(); ambientLighting =((easternLight + westernLight) / 2); // Durchschnitt der Helligkeit des Ostens und Westens oya_mydebug("easternLight", eastLight); oya_mydebug("westernLight", westernLight); oya_mydebug("rainSensed", rainSensed); oya_mydebug("sunshadePosition", sunshadePosition); oya_mydebug("ambientLighting", ambientLighting); // Herausfinden, ob es regnet? if (rainSensed
Schaltpläne