Go Down

Topic: Primeros pasos con arduino y primer problema (Read 1 time) 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy