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);
}

Entradas relacionadas: