Étape 5: codage
Ce code doit pouvoir être copié et collé dans l’IDE Arduino.
En gros, après que nous avons tout mis en place, l’arduino lit quel bouton a été enfoncé, combien de fois et, si les presses totales est égal à un certain montant, compile les données pour correspondre à un nombre prédéterminé de presses pour chaque bouton.
Je vous sauverai ma tentative pour expliquer cela et vous diriger vers gtr_stitch'skeypad comme il le fait un excellent travail expliquant la programmation.
Dans le code, vous pouvez changer combien chacun appuie sur le bouton doit recevoir afin d’activer le servo. De même, vous pouvez changer le retard que l’écluse attend après avoir reçu une combinaison incorrecte ou le temps que du servo reste activé.
Si vous trouvez quelque chose de pas clair, s’il vous plaît laissez un commentaire et je vais essayer de mon mieux pour expliquer.
#include < Servo.h >
Servo MyServo ;
const int button1 = A0 ;
const int button2 = A1 ;
const int button3 = A2 ;
const int button4 = A3 ;
assure le suivi du nombre de fois que vous appuyez sur le bouton
count1 int = 0 ;
count2 int = 0 ;
int count3 = 0 ;
int count4 = 0 ;
assure le suivi de l’état du bouton
int state1 = 0 ;
int state2 = 0 ;
Etat3 int = 0 ;
Etat4 int = 0 ;
assure le suivi des état antérieur
int prev1 = 0 ;
int prev2 = 0 ;
int prev3 = 0 ;
int prev4 = 0 ;
TotalCount est combien de fois la pression sur bouton
totalcount int = 0 ;
déclarer les LEDS
int vert = 8 ;
int rouge = 10 ;
void setup() {}
pinMode (button1, d’entrée) ;
pinMode (button2, entrée) ;
pinMode (button3, entrée) ;
pinMode (button4, entrée) ;
pinMode (verte, sortie) ;
pinMode (rouge, sortie) ;
Serial.Begin(9600) ;
MyServo.attach(9) ;
MyServo.write(0) ;
pour (int i = 0; i < 180; i ++) {}
MyServo.write(i) ;
Delay(50) ;
}
MyServo.write(0) ;
}
void loop() {}
State1 = digitalRead(button1) ;
State2 = digitalRead(button2) ;
Etat3 = digitalRead(button3) ;
Etat4 = digitalRead(button4) ;
Si (state1! = prev1) {}
Delay(10) ;
Si (state1 == HIGH) {}
count1 ++ ;
}
}
Si (state2! = prev2) {}
Delay(10) ;
Si (state2 == HIGH) {}
count2 ++ ;
}
}
Si (Etat3! = prev3) {}
Delay(10) ;
Si (Etat3 == HIGH) {}
Count3 ++ ;
}
}
Si (Etat4! = prev4) {}
Delay(10) ;
Si (Etat4 == HIGH) {}
count4 ++ ;
}
}
prev1 = state1 ;
PREV2 = state2 ;
prev3 = Etat3 ;
prev4 = Etat4 ;
TotalCount = count1 count2 + count3 + count4 ;
Si (totalcount == 4) {}
Si (count1 == 1 & & count2 == 0 & & count3 == 1 & & count4 == 2) {}
Serial.println ("CODE accepté") ;
MyServo.write(90) ;
digitalWrite (vert, HIGH) ;
digitalWrite (rouge, faible) ;
count1 = 0 ;
count2 = 0 ;
Count3 = 0 ;
count4 = 0 ;
TotalCount = 0 ;
Delay(10000) ;
Serial.println() ;
MyServo.write(0) ;
digitalWrite (vert, faible) ;
}
else {}
Si (count1! = 1 & & count2! = 0 & & count3! = 1 & & count4! = 2 & & totalcount == 4) {}
Serial.println ("CODE REJECED") ;
digitalWrite (rouge, haute) ;
digitalWrite (vert, faible) ;
count1 = 0 ;
count2 = 0 ;
Count3 - 0 ;
count4 = 0 ;
TotalCount = 0 ;
Delay(5000) ;
Serial.println ("entrer CODE") ;
digitalWrite (rouge, faible) ;
}
ElseIf (count1 > 1 & & count2 > 0 & & count3 > 1 & & count4 > 2 || totalcount == 4) {}
Serial.println ("CODE rejeté") ;
digitalWrite (rouge, haute) ;
digitalWrite (vert, faible) ;
count1 = 0 ;
count2 = 0 ;
Count3 = 0 ;
count4 = 0 ;
TotalCount = 0 ;
Delay(5000) ;
Serial.println ("entrer CODE") ;
digitalWrite (rouge, faible) ;
}
}
}
}