Descrición:
Imos utilizar a función map(valor, min, max, Nmin, Nmax); para converter o valor lido na entrada analóxica (que pode ser de 0 a 1023) a un valor que poidamos enviar a través dunha saída PWM (que ten un rango de 0 a 255)
pwm = map(valor,0,1023,0,255);
Despois enviamos ese valor a un LED conectado unha saída pwm, para que a súa luminosidade varíe en función da posición do cursor do potenciómetro.
Asemade, na consola serie podemos visualizar o valor que teñen as variables “valor” e “pwm” en cada momento.
Montaxe:
Utilizaremos a montaxe da práctica anterior de “Movendo un potenciómetro”, pero necesitaremos un único LED.
Programa:
// Declaración de variables int pot=0; // variable que le o valor do potenciómetro, entre 0 e 1023 int pwm=0; // variable que enviamos a un pin pwm, entre 0 e 255 int led3=11; // Configuración void setup() { Serial.begin(9600); // Inicia a comunicación serie pinMode(led3, OUTPUT); } // Programa void loop() { pot = analogRead(A0); // Asignamos á variable "pot" o valor lido na entrada analóxica A0 pwm = map(pot,0,1023,0,255); // Calculamos o valor correspondente pwm analogWrite(led3,pwm); // Enviamos o valor pwm a un LED Serial.print(pot); // Imprimimos na consola Serial.print(" ----> "); Serial.println(pwm); delay(200); }
Propostas:
- Variando a frecuencia: Fai un programa no que un LED escintile cun intervalo de 100 ms entre acendido e apagado cando leamos un valor 0 no potenciómetro. A medida que movemos o cursor vai aumentando o tempo ata que conseguimos que o LED escintile cun intervalo de 1000 ms cando lemos un valor de 1023 no potenciómetro.