Mi pregunta es muy simple pero esque no le entiendo muy bien a las interrupciones, en este código, al usar la interrupción puedo insertarle la variable con el teclado, y meterle 3 digitos, eg 105 o solo me va a dejar poner 1 y se va a salir, o voy a tener que usar la interrupción 3 veces?
#include<Keypad.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor
int boton = 0;
int x = 0;
int cantidad[2];
int valor = 0;
const byte ROWS = 4;
const byte COLS = 3;
int cant2=0;
int motor=0;
int vel=0;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'},
};
byte rowPins[ROWS] = {8, 7, 6, 5};
byte colPins[COLS] = {4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
keypad.setHoldTime(1000); // Default is 1000mS
keypad.setDebounceTime(50); // Default is 50mS
dht.begin(); //Se inicia el sensor
attachInterrupt(0,leerbotones,RISING);
}
void leerbotones(){
char tecla = keypad.getKey();
do {
if(tecla!= NO_KEY){
switch(tecla)
{
case '0':
cantidad[x] = 0;
x++;
Serial.print(cantidad[x]);
break;
case '1':
cantidad[x] = 1;
x++;
Serial.print(cantidad[x]);
break;
case '2':
cantidad[x] = 2;
x++;
Serial.print(cantidad[x]);
break;
case '3':
cantidad[x] = 3;
x++;
Serial.print(cantidad[x]);
break;
case '4':
cantidad[x]= 4;
x++;
Serial.print(cantidad[x]);
break;
case '5':
cantidad[x] = 5;
x++;
Serial.print(cantidad[x]);
break;
case '6':
cantidad[x] = 6;
x++;
Serial.print(cantidad[x]);
break;
case '7':
cantidad[x] = 7;
x++;
Serial.print(cantidad[x]);
break;
case '8':
cantidad[x] = 8;
x++;
Serial.print(cantidad[x]);
break;
case '9':
cantidad[x] = 9;
x++;
Serial.print(cantidad[x]);
break;
case '*':
cantidad[0] = 0;
cantidad[1] = 0;
cantidad[2] = 0;
Serial.print(cantidad[2]);
x=0;
break;
}
}
} while( tecla != '#');
for (x=2;x>=0;x--)
{
cant2=cant2+cantidad[x]*pow(10,x);
}
}
void loop() {
float h = dht.readHumidity(); //Se lee la humedad
float t = dht.readTemperature(); //Se lee la temperatura
//Se imprimen las variables
Serial.println("Humedad: ");
Serial.println(h);
Serial.println("Temperatura: ");
Serial.println(t);
delay(2000); //Se espera 2 segundos para seguir leyendo //datos
if (x>2)
x=0;
vel=(cant2-t)*1.62;
if (cant2<= t && cant2 > 0)
{ analogWrite (motor,vel);
}
}