Go Down

Topic: Problemas con un ejercicio de aprendizaje. Buscando el por que? (Read 197 times) previous topic - next topic

Walterronny

Buenas chicos! estoy empezando con el tema arduino (esta vez mas en serio :-[ ), resulta que estoy siguiendo este curso en youtube y voy por esta parte:

https://www.youtube.com/watch?v=EPKJSlyuMkY

El caso es que tengo el mismo codigo tal y como indica el profesor, pero mi problema es que no me funcionan los 3 leds.

Copio el codigo aqui:

///////////////////////////////

int leds[]={9,10,11};
int tiempo=200;
int i=0;
int foto=1;
int medida=0;
int luzled=0;

void setup() {

 Serial.begin(9600);
 for(i=0;i<3;i++)
 {
  pinMode(leds,OUTPUT);  
  }
}

void loop() {

 medida = analogRead(foto);
 Serial.println(medida);
 luzled= 255-(medida/4);
 Serial.println(luzled);
 for(i=0;i<3;i++);
 {
  analogWrite(leds,luzled);
  delay(100);
 }

}

///////////////////////////

Pense por un momento que me fallase la placa pero no, ya que al final del codigo

analogWrite(leds,luzled);

si cambio el i por 0,1 o 2 si que ilumina el led respectivamente 9,10,11. sin embargo lo dejo en i y no ilumina ninguno, es como si el i no representase los leds :S, sin embargo al profesor le funciona. QUiero saber donde esta el fallo antes de continuar con el siguiente capitulo a ver si podeis echarme una mano.

Muchas gracias!

Walterronny

Estoy viendo lo que he escrito y no se porque motivo me falta algo del codigo, es por el foro al postear parece ser que me quita algunos caracteres del array  :o

victorjam

El hecho de que os digamos que pongáis el código bien posteado, y nos cansamos de repetir que leais las NORMAS, son para evitar problemas, facilitar el trabajo y mas cosas. Pero, ea, nadie lo hace.

El código va con etiquetas code y se usa el delimitador [ con lo que si pones un array, se los masca si no va entre etiquetas code el código.

Los enlaces también deben ir con su etiqueta.

Tu código es este:

Code: [Select]

///////////////////////////////
int leds[] = {9, 10, 11};
int tiempo = 200;
int i = 0;
int foto = 1;
int medida = 0;
int luzled = 0;

void setup() {
  Serial.begin(9600);
  for (i = 0; i < 3; i++)  {
    pinMode(leds, OUTPUT);
  }
}

void loop() {
  medida = analogRead(foto);
  Serial.println(medida);
  luzled = 255 - (medida / 4);
  Serial.println(luzled);
  for (i = 0; i < 3; i++);
  {
    analogWrite(leds[i], luzled); // Usando el corchete!!
    delay(100);
  }
}
///////////////////////////

Walterronny

Perdonad! pues el codigo que tengo es este:

Code: [Select]

int leds[]={9,10,11};
int tiempo=200;
int i=0;
int foto=1;
int medida=0;
int luzled=0;

void setup() {

 Serial.begin(9600);
 for(i=0;i<3;i++)
 {
  pinMode(leds[i],OUTPUT); 
  }
}

void loop() {

 medida = analogRead(foto);
 Serial.println(medida);
 luzled= 255-(medida/4);
 Serial.println(luzled);
 for(i=0;i<3;i++);
 {
  analogWrite(leds[i],luzled);
  delay(100);
 }

}



No entiendo el motivo del porque no me iluminan los 3 leds cuando esta parte del codigo

Code: [Select]
analogWrite(leds[i],luzled);

sin embargue si cambio el "i" por 0, 1 o 2 si me iluminan los leds.

victorjam

Observa tu código:

Code: [Select]

 for(i=0;i<3;i++); // El for solo hace esto...
 {
  analogWrite(leds[i],luzled);
  delay(100);
 }


Tienes un ";" que sobra. Para que lo entiendas, el punto y coma final termina la sentencia for, con lo cual no llega a ejecutarse el analogwrite en los pines, simplemente incrementa i de 0 hasta 2.

Walterronny

Observa tu código:

Code: [Select]

 for(i=0;i<3;i++); // El for solo hace esto...
 {
  analogWrite(leds[i],luzled);
  delay(100);
 }


Tienes un ";" que sobra. Para que lo entiendas, el punto y coma final termina la sentencia for, con lo cual no llega a ejecutarse el analogwrite en los pines, simplemente incrementa i de 0 hasta 2.
Genial! he tenido que ver el codigo bien (y eso que es un codigo pero muy basico!) y poder ver el error.

Mil gracias!! a seguir aprendiendo con el proximo capitulo, si sabeis de algun otro canal de youtube donde realicen estos cursillos online me vendrian genial, saludos!

Go Up