Buenas Noches Me encuentro realizando un proyecto de una cerradura automática utilizando un Arduino UNO y enviando los datos a través de una aplicación android por medio de bluetooth con un HC-06, Mi duda surge en lo siguiente:
Requiero evitar que mi Arduino lea dos veces seguidas el comando de abrir (open) o en su defecto Cerrar (close), ya que me causaría un problema en la cerradura excediento sus step y arruinando, el Arduino o la cerradura.
Ayuda por favor, Adjunto mi código, vale la pena decir que apenas estoy aprendiendo en ésto saludos a todos!
#define VELOCIDAD 2000
int Steps = 9;
int Direccion = 10;
int Reset = 8;
int pasos = 600;
int estado = 0;
void setup() {
Serial.begin(9600);
pinMode(Direccion, OUTPUT); //
pinMode(Steps, OUTPUT);
pinMode(Reset, OUTPUT);
}
void loop() {
if(Serial.available()>0){
estado = Serial.read(); }
digitalWrite(Reset, LOW);
if (estado =='X'){
digitalWrite(Reset, LOW);
delay(100);
digitalWrite(Reset, HIGH); // Giro a la derecha del motor (x es el comando)
digitalWrite(Direccion , HIGH);}
for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{
digitalWrite(Steps, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(Steps, LOW); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.
}
if (estado =='Y'){
digitalWrite(Reset, LOW);
delay(100);
digitalWrite(Reset , HIGH); // Giro a la izquierda del motor (Y es el comando )
digitalWrite(Direccion, LOW);}
for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{
digitalWrite(Steps, LOW); // LOW to HIGH hace que el motor avance ya que da la orden
digitalWrite(Steps, HIGH); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.
}
}