Étape 9: Briser le Code Arduino
#include<Servo.h> int redLED = 12; int greenLED = 13; int button1 = A4; int buttonState = 0; Servo myservo;
C’est juste mise en place toutes les quilles. Je vais pas perdre de temps expliquant cela.
void setup() { pinMode(redLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(button1, INPUT); myservo.attach(9); }
Mise en place des sorties.
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) ;
Cela met les mots « buttonState » le la lecture numérique à broche button1, qui est épingler A4. Comme il utilise la fonction digitalRead « buttonSate » peut être haute ou basse.
int analog1 = analogRead(A0) ;
Il s’agit de prendre un analogue de lecture aux broches A0. La lecture analogique est 0-1023.
int pot1 = analog1 * (10.0 / 1023.0);
Convertir l’analogique en lisant de broches A0 à 0-10 de: 0-1023
Le reste du code est pour les autres lectures analogiques sur les autres broches 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)
Maintenant, c’est où vous devez vous mettre votre propre combinaison. Je vais faire mienne 4536.
Il s’agit de tester ce qui suit : si pot1 est égal à 4 et si pot2 est égal à 5 et si pot3 est égal à 6, et si pot4 est égal à 1, procédez comme suit. Changer les numéros pot1, 2, 3 et 4 égal pour créer votre propre code.
{ digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); }
Nous allons ajouter un autre déclaration
ElseIf (buttonState == haute) est la lecture numérique à broche A4 haute??? Oui! Alors faire...
{ digitalWrite(greenLED, HIGH); digitalWrite(redLED, LOW); myservo.write(90); delay(5000); }
Si soit de ces si des déclarations ne sont pas vraies, puis procédez comme suit :
d’autre
{
digitalWrite (que, faible) ;
digitalWrite (redLED, HIGH) ;
myservo.Write(170) ;
}
Maintenant, vous avez peut-être remarqué, j’ai ajouté un retard dans le bloc de bouton, mais pas le bloc pot. Eh bien la raison pourquoi j’ai fait, c’est afin que vous n’avez pas à appuyer sur le bouton. Si vous examinez le code, vous verrez qu’il n’y a aucun retard, Arduino est constamment en train de la boucle encore et encore et encore à une vitesse très rapide. Donc le code dit, "si le bouton est élevé, déverrouiller la porte". Eh bien, si vous relâchez le bouton, la boucle est bouclée et il voit la le bouton n’est pas élevé, donc il verrouille la porte. Avec du retard, une fois qu’il détecte que le bouton est enfoncé, il sera préforme notre action (déverrouillage de la porte, changer les LEDS), puis est d’attendre 5 secondes avant de réexécuter la boucle. Si vous ne comprenez pas, essayez-le. Retirez le retard et voir ce qui se passe.