Go Down

Topic: Problemas con bucle IF (soy recien nacido con Arduino) (Read 1 time) previous topic - next topic

dalozano

Hola,

Lo primero pedir disculpas por la chorrada de problema que tengo con mi código, puesto que seguro que cuando lo veáis pensaréis que soy medio lerdo, pero bueno, tengo que ir aprendiendo. Al tema...

Estoy picando el código para un proyecto de niño pequeño, en el que en función del número de veces que se haya pulsado un pulsador, se enciende un led azul, verde o rojo. Como véis, algo facilísimo.

El código es el siguiente:

Code: [Select]
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------

int Verde = 9;            // Asigno el pin al tono verde
int Azul = 10;            // Asigno el pin al tono Azul
int Rojo = 11;            // Asigno el pin al tono Rojo
int conta = 0;            // Variable para contar el numero de pulsaciones


//------------------------------------
//Funcion principal
//------------------------------------

void setup() {

  Serial.begin(9600);   //Inicia comunicación serial
  pinMode(2,INPUT);     //Configura el pin 2 como una entrada, pulsador
  pinMode(Verde, OUTPUT);     //Configuro el pin 9 como salida
  pinMode(Azul, OUTPUT);      //Configuro el pin 10 como salida
  pinMode(Rojo, OUTPUT);      //Configuro el pin 11 como salida
}

//Función para encender el LED verde
void colorverde() {                             

  analogWrite(Verde, HIGH);             //Visualizamos el tono verde
  analogWrite(Azul,  LOW);              //Apagamos el tono Azul
  analogWrite(Rojo,  LOW);              //Apagamos el tono Rojo
};

//Función para encender el LED Azul
void colorazul() {                         

  analogWrite(Verde, LOW);              //Apagamos el tono verde
  analogWrite(Azul,  HIGH);             //Visualizamos el tono Azul
  analogWrite(Rojo,  LOW);              //Apagamos el tono Rojo
};

//Función para encender el LED rojo
void colorrojo() {                             

  analogWrite(Verde, LOW);              //Apagamos el tono verde
  analogWrite(Azul,  LOW);              //Apagamos el tono Azul
  analogWrite(Rojo,  HIGH);             //Visualizamos el tono Rojo

};
 

//------------------------------------
//Funcion ciclicla
//------------------------------------

void loop() {                               
if ( digitalRead(2) == HIGH )
  {
      // Si el pulsador no esta oprimido, flanco de bajada
      if ( digitalRead(2) == LOW )
      {
         conta++;               //Incrementa el contador
         Serial.println(conta); //Imprime el valor por consola
         delay (100);           // Retardo
      }
  }

  if (conta <= 3)  //Si se ha pulsado entre 1 y 3 veces se enciende el LED verde
  {
    colorverde();
  }

  if ((conta=>3) && (conta<6))  //Si se ha pulsado entre 3 y 6 veces se enciende el azul
  {
    colorazul();
  }

  if ((conta=>6) && (conta<9))  //Si se ha pulsado entre 6 y 9 veces se enciende el rojo
  {
    colorrojo();
  }
  if (conta == 9)  //de 9 volvemos a poner el contador a 0
  {
    contador = 0;
  }
}

//Fin programa



Al compilar el codigo me da el siguiente error:

sketch_nov04a.ino: In function 'void loop()':
sketch_nov04a:67: error: expected primary-expression before '>' token
sketch_nov04a:72: error: expected primary-expression before '>' token

La linea 67 es:  if (conta <= 3) 
Y la linea 72 es:  if ((conta=>3) && (conta<6)) 

Gracias de antemano por la ayuda

Sergegsx

al terminar una funcion no hay que poner ;

Quote
};


solo pon

Quote
}

Sergegsx

tambien, cuando pones igual mayor, tiene que ser mayor o igual
Quote
(conta=>3)

por
Quote
(conta>=3)

Sergegsx

y contador no existe, tienes que poner conta
Quote
contador = 0;

por
Quote
conta = 0;

nicko_esx

hola. pienzo que tal vez podrias usar la funcion swichCase http://arduino.cc/es/Reference/SwitchCase
me parece que es mejor un comparador multiple.  o tal vez si quieres la funcion if. podrias usar el else if.
me parece... por que veo que es similar a algunos ejemplos que hice alguna vez, como ser poner en posicion un servo de acuerdo al numero que mando por serial.... en ese usamos swichcase. por que lee el serial y si es tal numero hace tal cosa y va comparando susecivamente.

nicko_esx

hola de nuevo. mira recorde que habia visto un ejemplo similar a lo que queres hacer vos. esta en la pagina de arduteka. es una muy buena pagina
http://www.arduteka.com/2011/12/tutorial-arduino-0006-el-chupitometro/
el ejemplo se llama chupitometro. jejej. esta muy bueno. es tambien con pulsadores por cantidad de veces. solo que mueve un servo como resultado.
fijate si te sirve. tal vez te oriente un poco verlo. yo tambien soy recien nacido en arduino y mas aun en programacion. pero aprendi muchas cosas hasta hoy mirando ejemplos y analizandolos...
suerte

Go Up