REMIX - enkla Arduino knappsatsen (5 / 6 steg)
Steg 5: kodning
Denna kod ska kunna kopieras och klistras in i Arduino IDE.
I grund och botten när vi skapat allt, arduino läser vilken knapp trycktes, hur många gånger, och, om de totala pressarna är lika med ett visst belopp, sammanställer data för att matcha ett förutbestämt antal pressar för varje knapp.
Jag kommer att spara mitt försök att förklara detta och hänvisa dig till gtr_stitch "skeypad som han gör ett bra jobb att förklara programmering.
I koden, kan du ändra hur många pressar varje knapp måste få för att aktivera servo. På samma sätt kan du ändra fördröjningen låsa väntar efter att ha fått en felaktig kombination eller tid servo förblir aktiverat.
Om du hittar något oklart, lämna gärna en kommentar och jag ska försöka mitt bästa att förklara.
#include < Servo.h >
Servo MyServo;
CONST int Knapp1 = A0;
CONST int button2 = A1;
CONST int button3 = A2;
CONST int button4 = A3;
håller reda på hur många gånger knappen trycks
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
håller reda på delstaten knappen
int state1 = 0;
int state2 = 0;
int state3 = 0;
int state4 = 0;
håller reda på tidigare tillstånd
int prev1 = 0;
int prev2 = 0;
int prev3 = 0;
int prev4 = 0;
totalCount är hur många gånger har tryckt på knappen
int totalcount = 0;
deklarera Lysdioderna
int grön = 8.
int rött = 10;
void setup() {
pinMode (Knapp1, ingång);
pinMode (button2, ingång);
pinMode (button3, ingång);
pinMode (button4, ingång);
pinMode (grön, utgång);
pinMode (röd, produktionen);
Serial.BEGIN(9600);
MyServo.attach(9);
MyServo.write(0);
för (int jag = 0; jag < 180; i ++) {
MyServo.write(i);
Delay(50);
}
MyServo.write(0);
}
void loop() {
state1 = digitalRead(button1);
state2 = digitalRead(button2);
state3 = digitalRead(button3);
state4 = digitalRead(button4);
om (state1! = prev1) {
Delay(10);
om (state1 == hög) {
count1 ++;
}
}
om (state2! = prev2) {
Delay(10);
om (state2 == hög) {
count2 ++;
}
}
om (state3! = prev3) {
Delay(10);
om (state3 == hög) {
count3 ++;
}
}
om (state4! = prev4) {
Delay(10);
om (state4 == hög) {
count4 ++;
}
}
prev1 = state1;
prev2 = state2;
prev3 = state3;
prev4 = state4;
totalCount = count1 + count2 + count3 + count4;
om (totalcount == 4) {
om (count1 == 1 & & count2 == 0 & & count3 == 1 & & count4 == 2) {
Serial.println ("kod accepteras").
MyServo.write(90);
digitalWrite (grön, hög);
digitalWrite (röd, låg);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
totalCount = 0;
Delay(10000);
Serial.println();
MyServo.write(0);
digitalWrite (grön, låg);
}
annat {
om (count1! = 1 & & count2! = 0 & & count3! = 1 & & count4! = 2 & & totalcount == 4) {
Serial.println ("kod REJECED");
digitalWrite (röd, hög);
digitalWrite (grön, låg);
count1 = 0;
count2 = 0;
count3 - 0;
count4 = 0;
totalCount = 0;
Delay(5000);
Serial.println ("Ange kod");
digitalWrite (röd, låg);
}
annars om (count1 > 1 & & count2 > 0 & & count3 > 1 & & count4 > 2 || totalcount == 4) {
Serial.println ("kod FÖRKASTADE").
digitalWrite (röd, hög);
digitalWrite (grön, låg);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
totalCount = 0;
Delay(5000);
Serial.println ("Ange kod");
digitalWrite (röd, låg);
}
}
}
}