Saludos amigos, soy algo nuevo en Arduino, hace unos años atras maneja los pic en lenguaje PicBasic, asi que algunas cosas se me hace conocidas, tengo una duda con el bucle FOR , estoy tratando de que encienda un led tres veces y se apague, logre que encendiera, pero sigue de largo, indefinido, no se si a mi codigo le hace falta un "END" como en PicBasic, agrego el Codigo que Intento hacer, si alguie me podria dar una mano
int x;
void setup() {
for (x=0; x<3; x++) {
pinMode(3,OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
for(x=0; x<3; x++) {
digitalWrite(3,HIGH);
delay(1000);
digitalWrite(3,LOW);
delay(1000);
}
}
En basic tienes el for cuya sentencia es más o menos:
FOR variable=inicio TO final [ PASO ]
' Código a realizar.
NEXT variable
Cuando entra en el bucle, lo primero que hace es inicializar una variable a un valor. Ejecuta el código dentro del bucle. Por ultimo realiza la comprobación de "next", que es incrementar la variable en uno, a no ser que se haya especificador un PASO distinto.
El for de C++ es más o menos similar.
for (inicialización ; parada ; accion) {
// código a realizar.
}
Aquí hay tres secciones: inicialización, condición de parada, acción:
- La inicialización es un código que se va a ejecutar cuando se entra en el bucle, puede hacer cualquier cosa, aunque generalmente se usar para establecer un valor inicial a una variable. En tu caso x=0.
- La condición de parada puede ser también cualquier cosa, es una condición que se evalua al entrar en el for y si es cierta se no se ejecuta nada.
- La acción, es lo que se realiza al final del bucle en cada pasada. Igualmente puede ser cualquier cosa, aunque generalmente incrementas la variable que usas como contador.
En tu ejemplo, haces el bucle for haciendo que el pin 3 se "encienda" y "apage". Hasta hay todo bien, pero olvidas un detalle: el LOOP es ciclico. Eso quiere decir que cuando el código del loop se haya ejecutado, se volverá a ejecutar, con lo que volverá a entrar en el bucle for y volveran a parpadear 3 veces, así hasta que pares en el arduino.
Prueba este código, analizas y luego me cuentas que ves:
int x;
void setup() {
pinMode(3, OUTPUT);
x=0;
}
void loop() {
if ( x<3 ) {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
x++;
}
}
De paso te invito a que te leas las NORMAS DEL FORO, para que puedas postear correctamente código.
gracias bro, no sabia esa funcion del IF sin el ELSE