Buenas, me gustaría realizar un contador que inicie cuando presiono un botón del teclado y finalice cuando presione otro botón. La finalidad es obtener el tiempo de movimiento de un carro controlado por bluetooth.
He estado intentando con la función pulseIn(), pero solo obtengo 0 en el puerto serial.
Probé con esté otro código que vi por acá, pero no me imprimía nada por el puerto serial.
void loop() {
estadoboton1 = digitalRead(boton1);
if(estadoboton1 == HIGH) {
tiempo=millis();
while(estadoboton1 == HIGH) {
tiempo2=millis();
estadoboton1 = digitalRead(boton1);
}
tiempo3=tiempo2-tiempo;
Serial.println(tiempo3);
if(tiempo3<1000 ){
Serial.println("mola");
}
else{ Serial.println("no mola"); }
}
}
Y este es el código que tengo ahorita.
int Led13 = 13;
int Led12 = 12;
char dato;
unsigned long duracion;
void setup() {
pinMode(Led13, OUTPUT);
pinMode(Led12, INPUT);
Serial.begin(9600);
}
void loop()
{
carro();
posicion();
}
void posicion()
{
duracion = pulseIn(Led12, HIGH);
Serial.println(duracion / 1000000); //en segundos
}
void carro()
{
if(Serial.available()> 0){
dato = Serial.read();
}
if(dato=='w'){
digitalWrite(Led13, HIGH);
digitalRead(Led12);
//Serial.println("adelante");
}
if(dato=='s'){
digitalWrite(Led13, LOW);
digitalRead(Led12);
//Serial.println("alto");
}
if(dato=='a'){
digitalWrite(Led13, HIGH);
digitalRead(Led12);
//Serial.println("izquierda");
}
if(dato=='d'){
digitalWrite(Led13, HIGH);
digitalRead(Led12);
//Serial.println("derecha");
}
if(dato=='r'){
digitalWrite(Led13, HIGH);
digitalRead(Led12);
//Serial.println("atras");
}
}