Conversión a PWM

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:

  1. 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.

 


Deixa un comentario