El ejercicio a consiste en controlar la frecuencia de encendido de un LED mediante un potenciómetro.
Girando el potenciómetro variamos el valor de su resistencia y la caída de tensión en A0.
Según la tensión aplicada sea 0-5V, Arduino hace una conversión Analógico/Digital y obtenemos un valor entre 0-1023.
Mediante la instrucción analogRead leemos el valor de la tensión en el pin A0 y asignamos esa lectura al delay.
int potenciometro = A0;
int led = 8;
int lectura = 0;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
lectura = analogRead(potenciometro);
Serial.println(lectura);
digitalWrite(led, HIGH);
delay(lectura);
digitalWrite(led, LOW);
delay(lectura);
}
Se sustituye el potenciómetro por una LDR.
Para añadir interés a la práctica, hemos realizado un escalado del valor de la lectura, abriendo la posibilidad de dar un valor máximo de delay deseado al declarar una variable tipo “float“, un número real en el cual almacenaremos el resultado de la operación de reescalado.
int potenciometro = A0;
int led = 8;
int lectura = 0;
float delaymaximo = 400.0;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
lectura = analogRead(potenciometro);
Serial.println(lectura);
float lecturatemp = lectura*(delaymaximo/1023.0);
digitalWrite(led, HIGH);
delay(lecturatemp);
digitalWrite(led, LOW);
delay(lecturatemp);
}
Encender secuencialmente 5 LEDs controlando la velocidad (el delay) con un potenciómetro.
Para que sea lo más sensible posible a los cambios (que no tenga que esperar al siguiente loop para cambiar de velocidad), volvemos a leer el valor del potenciómetro antes de cada delay.
int led1 = 13;
int led2 = 12;
int led3 = 8;
int led4 = 7;
int led5 = 4;
int pot = A0;
int t = 0;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
Serial.begin(9600);
}
void loop() {
t = analogRead(pot);
Serial.println(lectura);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
delay(t);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
delay(t);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
delay(t);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
delay(t);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
delay(t);
}