Schritt 9: Abbau der Arduino Code
#include<Servo.h> int redLED = 12; int greenLED = 13; int button1 = A4; int buttonState = 0; Servo myservo;
Dies ist nur die Pins einrichten. Ich werde nicht erklären, diese Zeit zu verlieren.
void setup() { pinMode(redLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(button1, INPUT); myservo.attach(9); }
Einrichten der Ausgänge.
void loop() { buttonState = digitalRead(button1); int analog1 = analogRead(A0); int pot1 = analog1 * (10.0 / 1023.0); int analog2 = analogRead(A1); int pot2 = analog2 * (10.0 / 1023.0); int analog3 = analogRead(A2); int pot3 = analog3 * (10.0 / 1023.0); int analog4 = analogRead(A3); int pot4 = analog4 * (10.0 / 1023.0);
ButtonState = digitalRead(button1);
Dies setzt die Worte "ButtonState" die digitale Lesung Pin button1, die pin A4. Da es mit die DigitalRead-Funktion 'ButtonSate' kann entweder hoch oder niedrig.
Int analog1 = analogRead(A0);
Dies ist für die Aufnahme analoger lesen an den Pins A0. Die analoge Anzeige ist 0-1023.
Int pot1 = analog1 * (10,0 / 1023.0);
Konvertieren Sie den analogen Lesen von Pin A0 bis 0-10 von 0-1023
Der Rest des Codes ist für die anderen analogen Messwerte auf den anderen Pins A0-A3.
if (pot1 == 4 && pot2 == 5 && pot3 == 6 && pot4 == 1) { digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); } else if (buttonState == HIGH) { digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); delay(5000); } else { digitalWrite(greenLED, LOW); digitalWrite(redLED, HIGH); myservo.write(170); }
if (pot1 == 4 && pot2 == 5 && pot3 == 3 && pot4 == 6)
Nun ist dies, wo Sie müssen Sie Ihre eigene Kombination hinein. Ich werde mir machen 4536.
Dies soll Folgendes testen: Wenn pot1 gleich 4, und wenn pot2 gleich 5, und wenn pot3 6 entspricht, und wenn pot4 gleich 1 ist, folgendermaßen vor. Ändern Sie die Zahlen pot1, 2, 3 und 4 gleich zu Ihren eigenen Code erstellen.
{ digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); }
Wir fügen eine weitere If Anweisung
ElseIf (ButtonState == HIGH) ist das digitale Lesen am Pin A4 hoch??? Ja ist es! Also tun...
{ digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); delay(5000); }
Wenn entweder von diesen, wenn Aussagen sind nicht wahr, dann gehen Sie folgendermaßen vor:
anderes
{
DigitalWrite (GreenLED, LOW);
DigitalWrite (RedLED, HIGH);
myservo.Write(170);
}
Jetzt Sie vielleicht bemerkt haben habe ich eine Verzögerung in der Schaltfläche "Block, aber nicht den Topf-Block. Nun ist der Grund, warum ich das tat, so, dass Sie nicht die Taste gedrückt halten. Wenn Sie über den Code schauen, sehen Sie, dass es keine Verzögerungen, sodass Arduino ständig die Schleife immer und immer und immer wieder mit einer sehr schnellen Geschwindigkeit tut. Der Code sagt: "Wenn die Schaltfläche" hoch ist, öffnen Sie die Tür ". Nun, wenn Sie die Taste loslassen, die Schleife geschlungen und es sieht die Schaltfläche ist nicht hoch, so dass es die Tür verriegelt. Mit der Verzögerung sobald es, dass die Taste gedrückt ist erkennt, es wird Vorform unserer Aktion (Entsperrung der Tür, die LEDS ändern), dann ist 5 Sekunden vor der Ausführung der Schleife wieder warten. Wenn Sie nicht verstehen, versuchen Sie es. Nehmen Sie die Verzögerung und sehen Sie, was passiert.