Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas tardes,
Estoy haciando una practica , con un ARDUINO UNO.
Un led varia su intermitencia respecto al valor de un poteciometro. Lo que ocurre que quiero que cuando el potenciometro llegue a un valor proximo a 500 (cerca de la mitat de su recorrido) este se apague.
Pruebo y pruebo pero no me funciona y continua en intermitencia . La intermitencia si que varia segun el recorido del potenciometro.
El codigo es;
int potPin = 0; // pin entrada para potenciómetro
int ledPin = 13; // pin de salida para el LED
void setup()
{
pinMode(ledPin, OUTPUT); // declara ledPin como SALIDA
}
void loop()
{
int potenciometro = analogRead(potPin);
if(potenciometro > 500); // para apagar el led
{
digitalWrite(ledPin, HIGH); // pone ledPin en on
delay(analogRead(potPin)); // detiene la ejecución un tiempo “potPin”
}
digitalWrite(ledPin, LOW); // pone ledPin en off
delay(analogRead(potPin)); // detiene la ejecución
// un tiempo “potPin”
}
Muchas gracias
A ver, dos cosas:
El error es porque has puesto un ; a final del if: if(potenciometro > 500); y por eso el if no cumple su función, ya que termina ahí y siempre se ejecuta el bloque siguiente con llaves (que se convierte en independiente del if).
Lo segundo es un consejo y es que si ya has leido el valor del potenciómetro en una variable, úsala en el resto de los casos.
Por tanto tu código debería quedar así:int potPin = 0; // pin entrada para potenciómetro
int ledPin = 13; // pin de salida para el LED
void setup()
{
pinMode(ledPin, OUTPUT); // declara ledPin como SALIDA
}
void loop()
{
int potenciometro = analogRead(potPin);
if(potenciometro > 500) // para apagar el led
{
digitalWrite(ledPin, HIGH); // pone ledPin en on
delay(potenciometro); // detiene la ejecución un tiempo “potPin”
}
digitalWrite(ledPin, LOW); // pone ledPin en off
delay(potenciometro); // detiene la ejecución
// un tiempo “potPin”
}
De nada.