fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Aprendiz - Tengo problemas con instruccion If

3 Respuestas
2 Usuarios
0 Reactions
4,484 Visitas
miquel
Respuestas: 8
Topic starter
(@miquel)
Active Member
Registrado: hace 12 años

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

Responder
2 respuestas
sistemasorp
Respuestas: 478
(@sistemasorp)
Ardero
Registrado: hace 15 años

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”
}

Responder
sistemasorp
Respuestas: 478
(@sistemasorp)
Ardero
Registrado: hace 15 años

De nada.

Responder
Compartir: