Control de LED RGB, Compuertas Lógicas y LCD con Arduino
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,7 KB
Comunicación Serial y Control de LED RGB
Este código muestra cómo controlar un LED RGB utilizando tres potenciómetros y la comunicación serial.
// COMUNICACION SERIAL.
const int potRojo = 0; //POTENCIOMETRO ROJO CONECTADO A0
const int potVerde = 1; //POTENCIOMETRO VERDE CONECTADO A1
const int potAzul = 2; //POTENCIOMETRO AZUL CONECTADO A2
const int ledAzul = 3; //LED AZUL CONECTADO A PIN 3
const int ledVerde = 5; //LED VERDE CONECTADO A PIN 5
const int ledRojo = 6; //LED AZUL CONECTADO A PIN 6
int rojo; //GUARDA EL VALOR PARA EL POTENCIOMETRO ROJO
int verde; //GUARDA EL VALOR PARA EL POTENCIOMETRO VERDE
int azul; //GUARDA EL VALOR PARA EL POTENCIOMETRO AZUL
void setup() {
Serial.begin(9600); // INICIAR LA COMUNICACION SERIAL Y TRABAJAR CON ELLA A UNA VELOCIDA DE 9600 (BITS POR SEGUNDO)
pinMode(ledRojo, OUTPUT); //DECALRAMOS CADA COLOR DE LED RGB (CATODO COMUN COMO SALIDA - Rojo)
pinMode(ledVerde, OUTPUT); //DECALRAMOS CADA COLOR DE LED RGB (CATODO COMUN COMO SALIDA - Verde)
pinMode(ledAzul, OUTPUT); //DECALRAMOS CADA COLOR DE LED RGB (CATODO COMUN COMO SALIDA - Azul)
}
void loop () {
rojo = analogRead(potRojo) / 4; //LECTURA DEL POTENCIOMETRO ROJO, VERDE Y AZUL DIVIDIDO ENTRE 4, PORQUE ENTRE 4 SE ESPERA UN VALOR A PROXIMADO ENTRE 0 Y 255 DEVIDO A QUE ANALOGREAD MANEJA VALORES DE 0 A 1023
verde = analogRead(potVerde) / 4;
azul = analogRead(potAzul) / 4;
analogWrite(ledRojo, rojo); //ANALOGWRITE MANEJA VALORES DE 0 A 255, AHORA SI LOS VALORES YA SON COMPATIBLES
analogWrite(ledVerde, verde);
analogWrite(ledAzul, azul);
Serial.print("Rojo: "); //ENVIO DE DATOS POR EL PUERTO SERIAL DE CADA POTENCIOMETRO
Serial.print(rojo);
Serial.print(", ");
Serial.print("Verde: ");
Serial.print(verde);
Serial.print(", ");
Serial.print("Azul: ");
Serial.println(azul);
delay(500); //PAUSA DE 500 MILISEGUNDOS
}
Implementación de Compuertas Lógicas
A continuación, se muestra la implementación de compuertas lógicas básicas (AND, OR y NOT) utilizando Arduino.
Compuerta AND
//COMPUERTA AND
//void setup() //SE EJECUTA UNA SOLA VEZ EN EL CODIGO
//{
//pinMode(3, OUTPUT); //DECLARACION DE VARIABLE DE SALIDA
//pinMode(2, INPUT); //DECLARACION DE VARIABLE DE ENTRADA
//pinMode(1, INPUT); //DECLARACION DE VARIABLE DE ENTRADA
//}
//
//void loop() //SE EJECUTA N VECES EN EL CODIGO
//{
//digitalWrite(3, digitalRead(2) && digitalRead(1));
//}
Compuerta OR
//COMPUERTA OR
//void setup() //SE EJECUTA UNA SOLA VEZ EN EL CODIGO
//{
//pinMode(3, OUTPUT); //DECLARACION DE VARIABLE DE SALIDA
//pinMode(2, INPUT); //DECLARACION DE VARIABLE DE ENTRADA
//pinMode(1, INPUT); //DECLARACION DE VARIABLE DE ENTRADA
//}
//
//void loop() //SE EJECUTA N VECES EN EL CODIGO
//{
//digitalWrite(3, digitalRead(2) || digitalRead(1));
//}
Compuerta NOT
//COMPUERTA NOT
int led=3; //DECLARACION DE VARIABLE LED CON VALOR ENTERO
int boton=2; //DECLARACION DE VARIABLE BOTON CON VALOR ENTERO
void setup () //SE EJECUTA UNA SOLA VEZ EN EL CODIGO
{
pinMode(led, OUTPUT); //DECLARACION DE VARIABLE DE SALIDA
pinMode(boton, INPUT); //DECLARACION DE VARIABLE DE ENTRADA
}
void loop() //SE EJECUTA N VECES EN EL CODIGO
{
bool e =digitalRead(boton); //DECLARACION DE VARIABLE PARA 2 TIPOS DE VALORES
if (e==1){ //CONDICIONANTE IF PARA DECIDIR SI SERA UN VALOR ALTO O BAJO
digitalWrite(led, LOW); // DECICION DE VALOR ALTO
}
else{
digitalWrite(led, HIGH); //DECISION DE VALOR BAJO
}
}
Funcionamiento de LCD Display 16x2
Este código muestra cómo utilizar un display LCD 16x2 para mostrar mensajes.
#include <LiquidCrystal.h> //LIBRERIA DEL LCD EN ARDUINO
LiquidCrystal lcd(1,2,3,4,5,6); //DECLARACION DE LOS PINES DE TRABAJO EN ARDUINO
void setup(){ //SE EJECUTA 1 SOLA VEZ EN EL CODIGO
lcd.begin(16,2); //COMIENZO DE VISUALIZACION DE LCD
}
void loop(){ //SE EJECUTA N VECES EN EL CODIGO
lcd.print(" 31/01/2024"); //PRIMERA LINEA EN EL LCD EN LA PRIMERA LINEA
delay(1000); //RETARDO ENTRE MENSAJES
lcd.setCursor(0,1); //MANTIENE EL MENSAJE EN LA LINEA ESPECIFICADA
lcd.print(" MIERCOLES"); //SEGUNDA LINEA EN EL LCD EN LA SEGUNDA LINEA
delay(1500);
lcd.clear(); //LIMPIA LA LCD PARA UN NUEVO MENSAJE
delay(1500);
lcd.blink(); //MANTIENE EN SINTESIS LA LINEA DE MENSAJE
delay(1000);
lcd.noBlink();
lcd.print(" LOGICA DIGITAL");
lcd.setCursor(0,1); //MANTIENE EL MENSAJE EN LA LINEA ESPECIFICADA
lcd.print(" DE MANUFACTURA");
delay(2000);
lcd.clear();
lcd.print(" UPGTO");
lcd.setCursor(0,1); //MANTIENE EL MENSAJE EN LA LINEA ESPECIFICADA
lcd.print(" ITM");
delay(2000);
lcd.clear();
delay(1000);
}