Go Down

Topic: Intentando entender el comando IF (Read 422 times) previous topic - next topic

FernandoBS

Buenas.
Hace un tiempo que he descubierto Arduino y estoy, en modo auto-aprendizaje, supongo que como muchos, documentándome, viendo vídeos, youtubes, y buscando información, para poco a poco entender lo que se puede hacer y como programarlo.
Como novato, reconocido, me surge una duda con el comando IF.
Igual es muy obvio mi equivocación, mis disculpas, pero creo que se trata de ir subiendo escalón a escalón.
He hecho el siguiente programa / prueba:

int x=0;
void setup()
{
  pinMode(2,OUTPUT);
}
void loop()
  {
   if (x==10);
    {
      digitalWrite(2,HIGH);
      delay(5000);
      digitalWrite(2,LOW);
      delay(50);
      x=0;
    }
    //x++;
    //delay(10000);
}

Declaro la x como entero y con valor cero y le asigno a la salida 2 que se pueda encender un led.
la idea es que mientras va "rodando" el void, cuando el contador de x llegase a 10 (x==10), se cumple el IF y es entonces cuando se ejecutase lo que hay dentro del IF.
Lo curioso de este programilla es que he anulado el incremento del x (x++) y sin embargo sigue parpadeando, esto es, anulandole el autoincremento, llega a 10 y se enciende y se apaga la bombilla.
¿cómo es posible?. Puesto así, con la x con valor 0, sin autoincrementar el contador y sin que sume uno a uno hasta 10, no debería de entrar y ejecutar lo del IF. Creo que debería estar siempre apagado.

Seguro que es una chorrada, pero estoy haciendo miniprogramillas para intentar entender los comandos y esto no lo entiendo.
Pienso que este programa debe dejar la luz apagada todo el rato.

Si alguien me da "luz", pues muchas gracias de antemano.

Un saludo, desde Valencia.

ehrja

Hola buen día

Antes que nada te pido que si tu pregunta implica un codigo, lo enmarques con la etiqueta "#" buscala en el editor.

Bueno yo no diría que es IF es un comando; un comando es algo asi: "sudo apt get update"

If() es una estructura de control y es parte importante en la mayoría de los lenguajes de programación, tal vez quieras buscar por ahí para entender mas el mundo del arduino, el código que se emplea para programar arduino esta basado en C, seguramente en la biblioteca municipal encuentras algo, en Internet también hay mucha información.

Referencia Arduino http://arduino.cc/es/Reference/HomePage
____

El problema es que el if() tiene un punto y coma y no debe llevar punto y coma, con esto lo estas terminando inmediatamente;
este error es muy común en principiantes.
http://arduino.cc/es/Reference/If

Te recomiendo que para depurar y entender lo que pasa en el código en tiempo de ejecución utilices el monitor serial.
http://arduino.cc/es/Reference/Serial

vier

El punto y coma sobra, creo,También soy novato, pero creo que debería ser así
Code: [Select]

IF(x==10){
instrucciones;
}


FernandoBS

Hola EHRJ. muchas gracias por tus directrices. Efectivamente era tema de un punto y coma ;
Una vez subsanado el punto y coma ha funcionado sin problemas. El fallo ha sido al ver muchos ejemplos en libros, no en conjunto en total, y creo que siempre había que ponerlo. Me fijare más.

Vier, gracias a ti también por el apunte.

Quizá, apuntaría, que eso habría que ponerlo en el manual de referencia, para tenerlo en cuenta.

Un saludo desde Valencia, España.

MiguelLopez

Hola compañero,

Como bien te han argumentado ya, el ";" es lo que te está haciendo volverte loco.
Para el futuro y dado que te veo interesado en el tema, decirte que todas las instrucciones como el if, el for, el while, do-while .... que son digamos "sentencias" donde dentro quieres hacer algo como pretendías tú, siempre debes poner atención con los ";" porque como bien ha dicho el compañero te matan el proceso y lo que suspuestamente se debería ejecutar en cumplimiento de la condición se ejecuta porque en realidad no pertenece a esa sentencia para el compilador.

No te dé miedo preguntar que preguntando se aprende. Mucha suerte con tu iniciación  :)

Go Up