Se pueden usar interrupciones? Si, se pueden, pero para qué si puedes hacerlo prescindiendo de ellas!!
Veo una tendencia a escribir 4 lineas de código y manejar un pulsador con interrupciones, cuando no hace falta.
Pueden programar limpiamente con millis() y atender todo.
Ademas, un código con delay a la larga tiene problemas, no tomen esto como REGLA porque hay muchos codigos con delay pero en lo personal no me gustan.
Me enseñaron que las interrupciones se usan para seguir eventos que las requieren no por cualquier situación que me resuelve el problema.
Lean el texto
una salida que me esta encendiendo un led con un pulsador durante 30 segundos y luego lo apaga, lo que necesito es apagar ese led con ese mismo pulsador en cualquier momento, sin necesidad de esperar que transcurran los 30 segundos.
30 segundos!!!!! y como solución dan interrupciones.. para mi es como usar un 555 con un Arduino sabiendo que hay TIMER para hacerlo.
No estoy contra genobraker, que quede claro, pero imaginen esto
void loop() {
digitalWrite(pin, HIGH); // prendo led
delay(30000); // 30 segundos
digitalWrite(pin, LOW); // prendo led
delay(30000); // 30 segundos
}
En este código pretenden poner una interrupción?
no puede hacer esto
void loop() {
switch(estado) {
case 0: digitalWrite(pin, HIGH); // prendo led
estado = 1;
start = millis(); // tomo el tiempo parcial
break;
case 1: if (millis() - start > 30000) {
digitalWrite(pin, LOW); // prendo led
start = millis();
estado = 2;
}
break;
case 2: if (millis() - start > 30000) {
estado = 0; // ser repite todo
}
break;
}
}
aca tienen un código que fluye sin frenos (delay()), que permite leer un pulsador fuera del switch sin usar interrupciones.
Es complicado ? menos que usar interrupciones.
Elijan el método que gusten, pero aprendan a usar interrupciones que hacen falta.
Es mi opinión y no tienen porque seguirla.