El microcontrolador del arduino Uno dispone de un conversor análogo digital de 10 bits, que permite leer valores analógicos desde 0 hasta 5 voltios, como por ejemplo a través de un potenciómetro o un sensor de temperatura o de una fotoresistencia, que se convertirán en valores dentro del rango desde 0 hasta 1023.
Se puede utilizar un potenciómetro para controlar el tiempo de parpadeo de un Led.
Veamos el programa en Arduino:
int potPin = 0; // pin de entrada análoga para potenciómetro
int ledPin = 10; // pin de salida para el Led
void setup ( )
{
pinMode (ledPin,OUTPUT); // se declara ledPin como salida
}
void loop ( )
{
digitalWrite (ledPin, HIGH); // coloca 5 voltios en el Led encendiendolo
delay (analogRead (potPin); // retardo de acuerdo al valor leido en el potenciometro
digitalWrite (ledPin, LOW); // coloca 0 voltios en el Led apagándolo
delay (analogRead (potPin); // retardo de acuerdo al valor leido en el potenciometro
}
Observe que el pin de entrada análoga no hubo necesidad de declararlo en el void setup ( ).
De acuerdo al esquema el voltaje análogo leido en el potenciómetro va por el pin 0 de entradas análogas del arduino al conversor análogo digital ADC de 10 bits. La salida binaria 0000000000 corresponde a 0 voltios, y los 10 unos: 1111111111 corresponde a los 5 voltios. La salida binaria del ADC se convierte a decimal, y esos valores desde el 0 hasta el 1023 son los que corresponden al retardo del Led en milisegundos, o sea el máximo retardo corresponde a 1023 milisegundos.
SALIDA ANÁLOGA:
Algunos arduinos poseen conversores DAC , entrada digital, salida análoga, de tal manera que la salida análoga AnalogWrite es verdaderamente análoga, desde 0 hasta 5 voltios.
Pero para el arduino UNO la salida analógica es emulada a través del procedimiento PWM.
En el arduino UNO, el microcontrolador ATmega168 permite habilitar como salidas analógicas tipo PWM los pines 3,5,6,9,10 y 11.
El valor que se puede enviar a estos pines de salida analógica puede darse en forma de variable o constante pero siempre dentro del arango del 0 al 255.
analogWrite(pin,valor); // escribe 'valor' en el 'pin' definido como analógico.
El siguiente ejemplo lee un valor analógico de un pin de entrada analógica, convierte el valor dividiendolo por 4 (debido a que 255 es aproximadamente la cuarta parte de 1023), y envía el nuevo valor convertido a una salida de tipo PWM o salida analógica:
int led = 10; // define el pin 10 como 'led'
int analog = 0; // define el apin A0 como 'analog'
int valor; // define la variable 'valor'
void setup ( ) {
pinMode (led,OUTPUT); } //se declara el pin 10 como salida, la entrada no es necesaria por ser analoga
void loop ( )
{
valor = analogRead (analog); // lee el pin 0 y lo asocia a la variable 'valor'
valor /= 4; // divide 'valor' entre 4 y lo reasigna a 'valor';
analogWrite (led, valor); // escribe en el pin 0 valor
No hay comentarios:
Publicar un comentario