Go Down

Topic: Primeros pasos con arduino y primer problema (Read 994 times) previous topic - next topic

arsantalla

:)Con un potenciometro conectado a la entrada analogica intentaba que el LED conectado al pin 13 se encendiese y se apagase mas rapido o lento dependiendo del giro que yo le daba al potenciometro.

Y todo fue de perlas pues fui usando los ejemplos para crear mi propio programa de control.

¡¡¡Pero solo lograba que se encendiese y se apagase un numero FIJO de veces!!!

Y me estaba volviendo loco!!!

¿que podria ir mal en la placa?

finalmente descubri que la funcion MILLIS() me daba un numero que iba en aumento a medida que pasaban los segundos y ese numero yo lo almacenaba en una variable definida al principio de mi programa; concretamente en: int previousMillis...

Entonces me di cuenta!!!... ...se supone que una variable int solo puede almacenar un numero que no sea demasiado grande, asi que voy a cambiar "int" por "long" y a ver que pasa... ¡¡y si sigue fallando tiro la placa a la basura!!

...y el problema se resolvio!... aun veo parpadear el LED naranja unas dos veces por segundo, mientras que antes se me quedaba encendido fijo al medio minuto de resetear la placa arduino. :)

Aqui pongo el codigo para variar el parpadeo del led conectado al pin 13 digital de arduino con un potenciometro externo conectado entre GND, V5+ y la entrada analogica 0:

int ledPin = 13;                // LED conectado al pin digital número 13
long previousMillis = 0;        // Almacena la última vez que el LED fué modificado
int value = LOW;                // Estado anterior del LED
int interval = 1000;            // Intervalo de parpadeo (milisegundos)

void setup()
{
 pinMode(ledPin, OUTPUT);       // Configura como salida el pin digital
}

void loop()
{
 if (millis() - previousMillis > interval)
 {
   previousMillis = millis();   // Recuerda la última vez que el estado del LED cambió
   if (value == LOW)            // Si el LED está apagado lo enciende y viceversa.
   {
     value = HIGH;
   }
   else
   {
     value = LOW;
   }
   digitalWrite(ledPin, value);
 }
 interval = analogRead(0);
}


David Cuartielles

Hola,

esto hubiera sido bueno postearlo en la web en Español ... lo podrias ahi? Seguro que mucha gente se interesara por este mismo problema.

Un saludo,

/David

Go Up