Entrada analógicas

Una entrada analógica en arduino toma valores entre 0 y 5 voltios y los convierte de forma a lineal a valores entre 0 y 1023.

ejemplo

si el pin analógico A0 recibe una tensión de 0V lee un valor 0

si el pin analógico A0 recibe una tensión de 2,5 V lee un valor 512

si el pin analógico A0 recibe una tensión de 5V lee un valor 1023

Vemos que diferencia de una entrada digital que solo tomaba dos valores 0 ó 1 una entrada analógica puede tomas 1024 valores diferentes que dependiendo del sensor a que este conectado nos puede dar información de temperatura, iluminación, posición…

Conocemos mas de las entradas analógicas en el siguiente enlace https://www.luisllamas.es/entradas-analogicas-en-arduino/ http://diymakers.es/sensores-en-entradas-analogicas-de-arduino/

En el siguiente programa, en función de la posición del potenciometro, tendremos todos los leds apagados o encendido el verde o el verde y el rojo o todos encendidos.

Utilizamos la entrada digital A0, la tensión que recibe depende la posición del potenciometro, si la tensión que recibe es menor de 1,25V los tres leds estan apagados, si esta entre 1,25V y 2,5V enciendo el led verde, entre 2,5 y 3,75 el verde y el rojo y si es mayor que 3,75 enciendo los tres led.

int Vpotenciometro;
  
int led_v=2;// led verde al pin2
int led_r=3;// led rojo al pin3
int led_a=4;// led amarillo al pin4
void setup()
{
pinMode(led_v,OUTPUT);
pinMode(led_r,OUTPUT);
pinMode(led_a,OUTPUT); 
//la entrada analogica no es necesario declararla  
  Serial.begin(9600);
}
 
void loop()
{
  
  Vpotenciometro = analogRead(A0);//lee el valor de tensión 0-5V lo  convierte un número entre 0-1023 y lo almacena en la varialbe Vpotenciometro  

if (Vpotenciometro<256) // si el valor de Vpotenciometro es menor que 256, apago los 3 leds
  {digitalWrite(led_v,LOW);
   digitalWrite(led_r,LOW);
   digitalWrite(led_a,LOW); 
  }
if (Vpotenciometro>=256 && Vpotenciometro<512) // si el valor de Vpotenciometro es mayor o igual que 256 y menor que 512 enciendo el led verde
  {digitalWrite(led_v,HIGH);
   digitalWrite(led_r,LOW);
   digitalWrite(led_a,LOW);
  }
if (Vpotenciometro>=512 && Vpotenciometro<768) // si el valor de Vpotenciometro esta entre 512 y 768 enciendo el led verde y el rojo
  {digitalWrite(led_v,HIGH);
   digitalWrite(led_r,HIGH);
   digitalWrite(led_a,LOW);
  }
  if (Vpotenciometro>=768) // si el valor de Vpotenciometro es mayor que 768, enciendo los 3 leds
  {digitalWrite(led_v,HIGH);
   digitalWrite(led_r,HIGH);
   digitalWrite(led_a,HIGH);
  }
 Serial.println(Vpotenciometro);
  delay(1000);
}

Aprovechando el mismo circuito y con el siguiente programa, el led rojo estará intermitente un tiempo entre 200 ms y 5315 ms, que seleccionare con el potenciometro.

El 5315 sale de resolver la operación 5*1023+200

int Vpot;//la varible  sera uVpot temdra un valor entre 0 y 1023 en función de la posición del potenciometro
int led_r=3;// led rojo al pin3
int tiempo;
void setup()
{
pinMode(led_r,OUTPUT);
Serial.begin(9600);
}
 
void loop()
{
Vpot= analogRead(A0);//lee el valor de tensión 0-5V lo  convierte un número entre 0-1023 y lo almacena en la variable Vpot  
tiempo=Vpot*5+200; /*el valor de tiempo sera un valor entre 200 y 5315  el valor 5315 sera el resultado de la opereración 1023 por 5 mas 200*/

digitalWrite(led_r,LOW); 
delay(tiempo);
digitalWrite(led_r,HIGH);
delay(tiempo);
Serial.println(tiempo);
  
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *