Stap 9: Afbreken van de Code van de Arduino
#include<Servo.h> int redLED = 12; int greenLED = 13; int button1 = A4; int buttonState = 0; Servo myservo;
Dit is gewoon het opzetten van alle de pinnen. Ik ga niet te verspillen tijd aan het uitleggen dit.
void setup() { pinMode(redLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(button1, INPUT); myservo.attach(9); }
Opzetten van de de uitgangen.
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);
Dit is de instelling van de woorden 'buttonState' de de digitale lezing pin button1, oftewel pin A4. Omdat deze gebruik van de functie van de digitalRead 'buttonSate maakt' kan ofwel worden hoog of laag.
int analog1 = analogRead(A0);
Dit is voor het nemen van een analoge lezen op pinnen A0. De analoge lezing is 0-1023.
int pot1 = analog1 * (10.0 / 1023.0);
Omzetten van de analoge lezen van pin A0 tot en met 0-10 van 0-1023
De rest van de code is voor de andere analoge lezingen op de andere pinnen 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)
Nu is dit waar je nodig om je eigen combinatie in. I 'm gonna make mine 4536.
Dit is het testen van het volgende: als pot1 gelijk aan 4 is, en als pot2 gelijk aan 5 is, en als pot3 gelijk aan 6 is, en als pot4 gelijk aan 1 is, het volgende doen. Wijzigen van de nummers pot1, 2, 3 en 4 gelijk aan het maken van uw eigen code.
{ digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); }
Laten we het toevoegen van een ander als verklaring
elseif (buttonState == HIGH) Is de digitale lezing pin A4 hoog??? Ja dat is zo! Dus doen...
{ digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); delay(5000); }
Als beide van deze verklaringen zijn niet waar, doe dan het volgende:
anders
{
digitalWrite (greenLED, laag);
digitalWrite (redLED, hoge);
myservo.write(170);
}
Nu je hebt misschien gemerkt ik heb toegevoegd een vertraging in de knop-blok, maar niet het blok van de pot. Nou is de reden waarom ik deed dit zodat u niet hoeft te houden van de knop. Als je op de code kijkt, ziet u dat er geen vertragingen, zijn dus Arduino voortdurend de lus over en over en weer met een zeer snelle snelheid doet. Dus de code zegt, "als de knop hoog is, openen de deur '. Nou als u de knop loslaat, de lus is lus en ziet de de knop is niet hoog, zodat zij de deur sloten. Met de vertraging, zodra het ontdekt dat de knop is ingedrukt, het zal het uitvoeren van onze actie (ontgrendelen van de deur, het veranderen van de LED's), dan is wachten tot 5 seconden voordat de lus opnieuw uit te voeren. Als u niet begrijpt, probeer het. Neem de vertraging en zien wat er gebeurt.