Paso 5: codificación
Este código debe ser capaces de ser copiados y pegados en el IDE de Arduino.
Básicamente, después de que todo lo creado, el arduino lee qué botón se pulsó, cuantas veces y, si las prensas total es igual a una cantidad determinada, recopila los datos para que coincida con un número predeterminado de Prensas para cada botón.
Voy a guardar mi intento de explicar esto y dirigirlo a gtr_stitch'skeypad como lo hace un gran trabajo explicando la programación.
En el código, puede cambiar cuántas prensas cada botón debe recibir para poder activar el servo. Asimismo, puede cambiar el retraso que espera la cerradura después de recibir una combinación incorrecta o tiempo que el servo permanece activado.
Si usted encuentra cualquier cosa confuso, por favor deja un comentario y lo intentaré mi mejor para explicar.
#include < Servo.h >
Servo MyServo;
const int button1 = A0;
const int button2 = A1;
const int button3 = A2;
const int button4 = A3;
realiza un seguimiento de cuántas veces se presiona el botón
count1 int = 0;
count2 int = 0;
count3 int = 0;
int count4 = 0;
seguimiento de estado de botón
estado1 int = 0;
state2 int = 0;
state3 int = 0;
int state4 = 0;
seguimiento de estado anterior
prev1 int = 0;
prev2 int = 0;
prev3 int = 0;
prev4 int = 0;
totalCount es cuántas veces se presiona el botón
int totalcount = 0;
declarar los LEDS
int verde = 8;
int rojo = 10;
void setup() {}
pinMode (button1, entrada);
pinMode (button2, entrada);
pinMode (button3, entrada);
pinMode (button4, entrada);
pinMode (verde, salida);
pinMode (rojo, salida);
Serial.Begin(9600);
MyServo.attach(9);
MyServo.write(0);
para (int i = 0; i < 180; i ++) {}
MyServo.write(i);
Delay(50);
}
MyServo.write(0);
}
void loop() {}
estado1 = digitalRead(button1);
state2 = digitalRead(button2);
state3 = digitalRead(button3);
state4 = digitalRead(button4);
Si (estado1! = prev1) {}
Delay(10);
Si (estado1 == HIGH) {}
count1 ++;
}
}
Si (state2! = prev2) {}
Delay(10);
Si (state2 == HIGH) {}
count2 ++;
}
}
Si (state3! = prev3) {}
Delay(10);
Si (state3 == HIGH) {}
count3 ++;
}
}
Si (state4! = prev4) {}
Delay(10);
Si (state4 == HIGH) {}
count4 ++;
}
}
prev1 = estado1;
prev2 = state2;
prev3 = state3;
prev4 = state4;
totalCount = count1, count2 count3 + count4;
Si (totalcount == 4) {}
Si (count1 == 1 & & count2 == 0 & & count3 == 1 & & count4 == 2) {}
Serial.println ("código aceptado");
MyServo.write(90);
digitalWrite (verde, alto);
digitalWrite (rojo, baja);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
totalCount = 0;
Delay(10000);
Serial.println();
MyServo.write(0);
digitalWrite (verde, baja);
}
Else {}
Si (count1! = 1 & & count2! = 0 & & count3! = 1 & & count4! = 2 & & totalcount == 4) {}
Serial.println ("código REJECED");
digitalWrite (rojo, alto);
digitalWrite (verde, baja);
count1 = 0;
count2 = 0;
count3 - 0;
count4 = 0;
totalCount = 0;
Delay(5000);
Serial.println ("entrar código");
digitalWrite (rojo, baja);
}
else if (count1 > 1 & & count2 > 0 & & count3 > 1 & & count4 > 2 || totalcount == 4) {}
Serial.println ("código rechazado");
digitalWrite (rojo, alto);
digitalWrite (verde, baja);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
totalCount = 0;
Delay(5000);
Serial.println ("entrar código");
digitalWrite (rojo, baja);
}
}
}
}