Hola amigos:
Una vez mas, os agradeceria vuestra colaboración.
Con cierta frecuencia me sucede, que cuando tengo un código que funciona bien, si añado alguna instrucción mas, sale el tipico aviso...."Id.exe ha detectado un problema y debe cerrarse etc,etc"...
Envio un codigo, en el que vereis al final una sentencia switch.
Si lo dejo tal como está, da el mensaje de error. Si suprimo los dos ultimos "case"(el 3 y el 4) , ejecuta el codigo correctamente.
Tengo un UNO con una versión 1.6.5.
/*
LEDS EN SECUENCIA
UTILIZACION SWITCH
Conmutador con resistencia pulldown a pin 2
============= =================
*/
int bote = 0;
int caja = 0;
const int Conmutador = 2;
int retardo = 1200;
void setup() {
Serial.begin(9600);
for (int Pin = 8; Pin < 12; Pin++) // Declara como salidas del 8 al 11.
{
pinMode(Pin, OUTPUT);
}
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(Conmutador, INPUT);
}
void loop() {
Serial.print("caja: "); //Imprime Nº "caja"
delay(10);
Serial.println(caja);
delay(retardo);
int valor = digitalRead(Conmutador);
Serial.print("Conmutador valor: ");
delay(10);
Serial.println(valor);
delay(retardo);
if (valor == LOW) // Si el valor es LOW: Se apaga todo ===============
{
for (int Pin = 8; Pin < 12; Pin++)
{
digitalWrite(Pin, LOW);
}
}
else
{
Serial.println("ENCIENDE TODO !!!");
delay(10);
for (int Pin = 8; Pin < 12; Pin++)// Enciende todo ==========
{
digitalWrite(Pin, HIGH);
delay(5); //------------------- Permite a FOR un encendido rapido
}
}
delay(retardo+500);// Da un retardo(+500)despues del encendido de todos los LEDS
//antes de aplicar caja y SWITCH.
caja++; // ============= aumenta el valor de "caja" en 1
bote++;
if (caja > 5){ // Si "CAJA" es mayor que 5 se reinicia a 0.
caja = 0;}
if (bote > 5){ // Si "BOTE" es mayor que 5 se reinicia a 0.
bote = 0;}// LL-IF
switch (caja)
{
case 0: // No hace nada
case 1:
digitalWrite(8,LOW);
break;
case 2:
digitalWrite(9,LOW);
break;
case 3:
digitalWrite(10,LOW);
break;
case 4:
digitalWrite(11,LOW);
break;
}
switch (bote)
{
case 1:
digitalWrite(6,HIGH);
break;
case 2:
digitalWrite(7,HIGH);
break;
case 3: //========= lineas mencionadas
digitalWrite(6,LOW);
break;
case 4:
digitalWrite(7,LOW);
break; //============
}
}
// ============ FIN ============
Espero alguna ayuda, ya que no he encontrado ninguna solucion en San Google
Gracias anticipadas. Saludos !!!