M4 Intensidad LED
Montaje 1-2: Control de la intensidad de iluminación de un LED
Como ejemplo práctico de la señal PWM vamos a realizar un control de iluminación sobre un diodo led.
Sin EDUBASICA
En una protoboard montamos el circuito formado por el potenciómetro conectado a la entrada analógica A0.
y también montamos el circuito conectado al pin digital D3, utilizado como salida PWM, de esta manera nos va a permitir variar la luminosidad del LED.
CON EDUBÁSICA
En este caso ya tiene integrado un potenciómetro conectado a la entrada A0.
Y vamos a utilizar de salida el diodo verde conectado a D3 y a una resistencia ya integrado en EDUBASICA:
Un vídeo de cómo queda.
Vamos a ver una pequeña demostración:
Cargamos el programa ejemplo, en la placa Arduino y teniendo acoplada la placa EduBásica o montados los circuitos en una placa protoboard, podemos ver su funcionamiento.
Para ver su funcionamiento activamos el monitor serie del IDE de programación y variamos el potenciómetro. El resultado es una variación de luminosidad y variación de valores en el monitor serie.
El siguiente gráfico es una pantalla del monitor serie con los valores leídos y el valor aplicado a la señal PWM para variar la luminosidad.
Programa. Instrucciones analorRead analogWrite y map
El valor del potenciómetro lo leerá la instrucción analogRead(pin) que lee valores analógicos cada 100µs y los convierte por el conversor analógico digital en valores de 10 bits por lo tanto de 0 a 1024. Los pines para leer sólo pueden ser los A0 al A5. (ver+)
Utilizaremos la instrucción analogWrite(pin,value) para crear la onda PWM en el pin correspondiente, que sólo puede ser en el Arduino Uno el 3, 5, 6, 9, 10, 11. El valor value es un número entre 0 y 255 y es simulado con una onda cuadrada de 490Hz o 980Hz (depende del pin, ver+).
Como uno lee 0 a 1024 y el otro necesita valores de 0 a 255 necesitamos un traductor o mapeo con la instrucción map(value, fromLow, fromHigh, toLow, toHigh) esta instrucción la colocaremos, como suele estar los intérpretes en medio, o sea, entre la instrucción analogRead y la analogWrite
Veremos más adelante esta instrucción map
https://create.arduino.cc/editor/javierquintana/8bee8469-df52-4b88-a406-9f54fe3e20f8/preview
Se trata de obtener el mismo efecto que se consiguió en la práctica correspondiente al potenciómetro, las instrucciones principales eran:
void loop() {
val = analogRead(0); // val tiene el rango 0-1024
analogWrite(3, val/4); //dividimos por 4 para entrar en el rango 0-255
}
Pero en este caso utilizaremos el mapeo.
La descripción de la práctica es la siguiente:
La regulación del potenciómetro provocará una variación de voltaje en el pin de entrada analógico 0 de Arduino. Se realizará una conversión analógica-digital en el que los valores de tensión analógicos entre 0 y 5 V se transforma a un rango discreto de valores de 0 a 1023. Para modificar la intensidad del led rojo le se enviará una señal pseudoanalógica PWM utilizando la salida 5 digital de Arduino. Para ello se enviará un valor de 0 a 255 que marcará el ciclo de trabajo de la onda cuadrada PWM. Previamente habrá que realizar un mapeo (instrucción map) para asignar valores desde el intervalo [0, 1023] al [0, 255].
SIN EDUBASICA
Tienes que conectar un led al D5 y un potenciómetro al A0
CON EDUBÁSICA
No tienes que conectar nada ;) ya está !
Continuamos
Este es el PROGRAMA:
```cpp+lineNumbers:true / Regular la luminosidad del LED rojo con el potenciómetro de Edubásica Conexiones: Pin 5 digital Arduino -> LED rojo Edubásica Pin 0 analógico Arduino -> Potenciómetro Edubásica /
int ledPin = 5; int potenPin = A0; int intensity, valor_poten;
void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); }
void loop() { valor_poten=analogRead(potenPin); intensity = map(valor_poten, 0, 1024, 0, 255); analogWrite(ledPin,intensity); //Envia una onda PWM especificado en la varible: intensity. // Observamos la lectura analogica para comprobar el fondo de escala (0 -> 1024)
Serial.print("valor analógico leído="); Serial.println(analogRead(potenPin)); delay (1000); } ```