Pages: [1]   Go Down
Author Topic: Problemas con bucle IF (soy recien nacido con Arduino)  (Read 1062 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
//--------------------------------------------------
//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
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

al terminar una funcion no hay que poner ;

Quote
};

solo pon

Quote
}
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Argentina-sgo
Offline Offline
Full Member
***
Karma: 2
Posts: 101
Novato, en electrónica desde el 2012.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Argentina-sgo
Offline Offline
Full Member
***
Karma: 2
Posts: 101
Novato, en electrónica desde el 2012.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: