Hola, buen día a todos.
Estoy utilizando dos optoacopladores H21A1, e intento hacer que detecte en que la direccion del giro del motor, por decirlo asi: si esta girando a la derecha, entonces sume un contador y si esta girando hacia la izquierda restele al contador lo que giro. tengo la parte del conteo y la logica de la resta, pero hace falta algo por que si entra a un ciclo if cumple una condición, pero esta cambia dentro del ciclo.
esta el sensor 1 y el sensor 2, fisicamente juntos el uno a lado del otro, el diente de un piñon pasa por el sensor 1 por lo que este se pone en HIGH, ahora el diente del piñon estara en el sensor 2 cambiando el estado sensor 1 = LOW y ahora el sensor 2 = HIGH. De esta manera el contador incrementara y la misma logica inversa ara que el contador decremente.
Pero algo esta mal. Si el diente se queda en uno de los dos sensores sigue sumando ó sigue restando mientras el diente este en uno de los dos sensores.
Gracias por su tiempo si leen esto y gracias por contribuir, buen día todos.
#include <EEPROM.h>
int Direccion = 0; //DIRECCION FISICA DE MEMORIA
bool senplaca = LOW; //SENSOR0
bool datoplaca = LOW;
bool datoantplaca = LOW;
bool sen1placa = LOW; //SENSOR1
bool dato1placa = LOW;
bool dato1antplaca = LOW;
int cont1mem1 = 0; //Regitro de conteo en memoria eeprom
#define Sensor_plcs 2 //SENSOR PLACAS CENTELLADORAS
#define Sensor1_plcs 3
void setup() {
Serial.begin(115200);
pinMode(Sensor_plcs, INPUT); //DEFINE ENTRADA
pinMode(Sensor1_plcs, INPUT); //DEFINE ENTRADA
EEPROM.write(0, 0);
EEPROM.write(1, 0);
EEPROM.write(2, 0);
}
void loop() {
senplaca = digitalRead(Sensor_plcs); //Lectura sensor placa
sen1placa = digitalRead(Sensor1_plcs);
cont1mem1 = EEPROM.read(Direccion + 1); //Lectura conteo de memoria eeprom
Serial.print("eeprom = ");
Serial.println(cont1mem1);
delay(50);
if(senplaca == HIGH && sen1placa == LOW){
cont1mem1++; //Contador
EEPROM.write(Direccion + 1, cont1mem1); //Guarda en memoria 1 el contador
cont1mem1 = EEPROM.read(Direccion + 1); //Lee
delay(50);
}else if(senplaca == LOW && sen1placa == HIGH){
cont1mem1--; //Contador
EEPROM.write(Direccion + 1, cont1mem1); //Guarda en memoria 1 el contador
cont1mem1 = EEPROM.read(Direccion + 1); //Lee
delay(50);
}
sen1placa = senplaca;
senplaca = sen1placa;
}