Interrupciones

Hola a todos! :wink:

Estoy trabado contando interrupciones en un encoder. En principio es para un robot que camina por un laberinto.

La parte en la que estoy es que si llega el sensor de distancia a una medida menor de 10cm, gira en un sentido una serie de vueltas que cuento con el encoder.

El c贸digo es el siguiente:

#include <DistanceGP2Y0A41SK.h>

DistanceGP2Y0A41SK Dist;
int distance;
long cuenta;

void setup(){
聽 pinMode(13, OUTPUT);
聽 digitalWrite (13, LOW);
聽 Serial.begin(9600);
聽 Dist.begin(A1);
}

void medida(){
聽 distance = Dist.getDistanceCentimeter();
聽 Serial.print("Distance in centimeters: ");
聽 Serial.println(distance);
}

void contador(){
聽 suma ++;
聽 cuenta = suma;
聽 Serial.print(suma);
}

void giro(){
聽 attachInterrupt (5, contador, CHANGE);
聽 while (cuenta < 20){
聽 聽 digitalWrite (13, HIGH);
聽 }
}

void loop(){
聽 detachInterrupt(0);聽 
聽 medida();
聽 if (distance < 10){
聽 giro();
聽 suma = 0;
聽 }
聽 digitalWrite(13, LOW);
}

El caso es que no s茅 porqu茅 el c贸digo solo me realiza una iteraci贸n, luego se me queda pillado siempre鈥

la verdad que no te entiendo. no se que sensor usas . no se que quieres lograr. "se me queda pillado siempre" -----驴?

ta buena la caricatura del perfil

驴Y si pruebas

void giro(){
聽 attachInterrupt (5, contador, CHANGE);
聽 cuenta = 0;
聽 while (cuenta < 20){
聽 聽 cuenta++;聽 聽 // Porque si no, cuenta siempre valdr谩 lo mismo, digo yo, resultado... bucle sin fin
聽 聽 digitalWrite (13, HIGH);
聽 }
}