Hola,
He estado haciendo un proyecto semestral en arduino, tenía que hacer algo en lenguaje C y como arduino es similar mi profesora me permitio desarrollarlo en ese entorno. El codigo que hice es el siguiente:
#include <Servo.h>
int op, NUM, GAR, i;
Servo servo;
void setup() {
Serial.begin(9600);
pinMode(8,OUTPUT);//El 7 va a controlar el LED
pinMode(12,OUTPUT);//El 12 va a controlar el LED del garage
servo.attach(9);// El 9 va a controlar los grados del servomotor
Serial.println("Menu");
Serial.println("1. Encendido y apagado de las luces");
Serial.println("2. Abrir el garage");
Serial.println("3. Controlar acensores");
}
void loop() {
op= Serial.read();
switch(op){
case 1:
Serial.println("Ha elegido el control de luces, presione 1 para encender y 0 para apagar");
NUM=Serial.read();
if(NUM==1){
Serial.println("Ha encendido las luces");
digitalWrite(8,HIGH);}
else if(NUM==0){
Serial.println("Ha apagado las luces");
digitalWrite(8,LOW);}
break;
case 2:
Serial.println("Ha elegido controlar el garage, 1 para abrirlo y 0 para cerrarlo");
GAR=Serial.read();
if(GAR==1){
Serial.println("Ha elegido abrir el garage");
for(i=0; i<=6 ; i++){
digitalWrite(12,HIGH);
delay(1000);
digitalWrite(12,LOW);
}
servo.write(90);}
else if(GAR==0){
Serial.println("Ha cerrado el Garage");
servo.write(0); break;
}
}
}
El programa se compila bien y al menos el menu es mostrado en el monitor serial. El problema principal es al elegir los case, al elegir el case 1 no se ejecutan los if.
Probe quitando los if y dejando solo el digitalwrite, el led prende perfectamente, en el case 2 probe eliminando el servo y el if, dejando solo el contador, para este caso el led parpadea como debería.
Es este problema solucionable, es decir, ¿Puedo ejecutar ese if dentro de un switch? O acaso lo que estoy haciendo es algo tonto.
El tema es que es mi primer proyecto arduino y me siento algo confundido por tanta información que hay en internet, espero que me puedan ayudar.
Gracias!