Circuito con pantalla lcd.


El código es un programa para controlar un circuito con un botón que activa y desactiva diferentes elementos en el circuito.

La primera parte del código importa las librerías LiquidCrystal_I2C y Stepper para controlar el display LCD y el motor paso a paso, respectivamente. Luego, se definen algunas constantes y variables, se inicializan los pines del Arduino y se configuran algunos elementos del circuito, como el motor paso a paso y el LED RGB.

Para este proyecto es necesario: Placa Arduino UNO, Sensor infrarrojo Ky-032, Módulo LCD i2c, Mótor de paso 28BYJ-48, Módulo controlador del motor de paso, Módulo RGB, Un Botón, Un Buzzer, 3 resistencias de 220 Ohms, 2 Leds 1 verde y 1 rojo, Jumpers



#include <LiquidCrystal_I2C.h>//Incluimos la libreria para el módulo LCD i2c
#include <Stepper.h>//Incluimos la libreria para el motor de paso


//Establecemos las constantes y variables a usar en el circuito
const int buttonPin = 2;//Pin del arduino donde recibimos la señal del boton
const int ledPinGreen = 12;//Pin del arduino donde controlamos el LED verde
const int ledPinRed = 13;//Pin del arduino donde controlamos el LED rojp
bool buttonState = false;//Variable booleana para controlar si el circuito esta encendido o apagado


int Buzzer = 3;//Pin del arduino donde enviaremos una señal al buzzer
int AvoidancePin = 4;//Pin del arduino donde recibimos la señal del módulo infrarojo


LiquidCrystal_I2C lcd(0x27,16,2);//Ubicamos el módulo LCD i2c en el circuito y el arduino


const int stepsPerRevolution = 2048;//Constante para determinar cuantos paso da el motor de paso por revolución
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);//Ubicamos y configuramos el motor de paso en el circuito y en el arduino


int R = 5;//Pin del arduino donde recibimos la señal del rojo del RGB
int G = 6;//Pin del arduino donde recibimos la señal del verde del RGB
int B = 7;//Pin del arduino donde recibimos la señal del azul del RGB


void setup() {//Inicializamos el sistema
 //Indicamos las entradas, salidas, valores iniciales y determinados para el sistema
 pinMode(ledPinGreen, OUTPUT);//Salida del Led verde
 pinMode(ledPinRed, OUTPUT);//Salida del led rojo
 pinMode(buttonPin, INPUT);//Entrada del boton


 pinMode (Buzzer, OUTPUT);//Salida del buzzer
 pinMode (AvoidancePin, INPUT);//Entrada del infrarojo


 lcd.init();//Iniciamos el LCD
 lcd.backlight();//Encendemos el fondo del LCD
 lcd.print("Presione boton");//Escribimos en LCD un mensaje en la posición cero del cursor
 lcd.setCursor(0,1);//Pasamos el cursor del LCD a la posición uno
 lcd.print("para iniciar.");//Escribimos en LCD un mensaje en la posición uno del cursor
 //El anterio mensaje en el LCD indica como encender el circuito


 myStepper.setSpeed(15);//Establecemos la velocidad del motor de paso


 pinMode( R , OUTPUT );//Salida del RGB en la escala de rojo
 pinMode( G , OUTPUT );//Salida del RGB en la escala de verde
 pinMode( B , OUTPUT );//Salida del RGB en la escala de azul
}


void loop(){//Ciclo evolutivo del sistema
 //Iniciamos el circuito presionando el boton y validando la variable bandera buttonState
 if (digitalRead(buttonPin) == HIGH && buttonState == false) {//CIRCUITO ENCENDIDO
   tone(Buzzer, 261);//Enviamos un tono al buzzer para indicar que se encendio el circuito
   delay(100);//Espera de 100 milisegundos
   noTone(Buzzer);//Apagamos el buzzer
   digitalWrite(ledPinGreen, HIGH);//Encendemos el Led verde para indicar que se encuentra encendido el circuito
   digitalWrite(ledPinRed, LOW);//Apagamos el Led rojo
   buttonState = true;//Pasamos la variable bandera de false a true
   lcd.clear();//Limpiamos el LCD
   lcd.print("Pasar mano");//Escribimos en LCD un mensaje en la posición cero del cursor
   lcd.setCursor(0,1);//Pasamos el cursor del LCD a la posición uno
   lcd.print("encima circuito.");//Escribimos en LCD un mensaje en la posición uno del cursor
   //El anterio mensaje en el LCD indica como controlar el circuito
 //Si presionamos nuevamente el boton indicamos que el circuito se apagá 
 } else if (digitalRead(buttonPin) == HIGH && buttonState ) {//CIRCUITO APAGADO
   digitalWrite(ledPinRed, HIGH);//Encendemos el Led rojo para indicar que el circuito se apago
   digitalWrite(ledPinGreen, LOW);//Apagamos el led verde
   buttonState = false;//Pasamos la variable bandera de true a false
   lcd.clear();//Limpiamos el LCD
   lcd.print("Presione boton");//Escribimos en LCD un mensaje en la posición cero del cursor
   lcd.setCursor(0,1);//Pasamos el cursor del LCD a la posición uno
   lcd.print("para iniciar.");//Escribimos en LCD un mensaje en la posición uno del cursor
   //El anterio mensaje en el LCD indica como encender el circuito
   tone(Buzzer, 369);//Enviamos un tono al buzzer para indicar que se apago el circuito
   delay(100);//Espera de 100 milisegundos
   noTone(Buzzer);//Apagamos el buzzer
   //Apagamos el RGB
   analogWrite( R , 0 );
   analogWrite( G , 0 );
   analogWrite( B , 0 );
 }


 //El encendido y apagado del circuito es controlado por el boton
 //Pero el comportamiento del circuito es controlado por el infrarojo
 //Iniciamos validando si el circuito se encuentra encendido y que el sensor infrarojo no esta siendo obstaculizado
 //Esto nos indica que el circuito esta apagado
 if (digitalRead (AvoidancePin) == HIGH && buttonState == false) {//CIRCUITO APAGADO
     digitalWrite (Buzzer, LOW);//Apagamos el buzzer
     noTone(Buzzer);//Sin tono en el buzzer
 //Si la validación anterior nos indica que es falsa quiere decir que el circuito esta encendido
 } else if (digitalRead (AvoidancePin) == LOW && buttonState == true) {//CIRCUITO ENCENDIDO
     analogWrite( R , random(256) );//Pintamos un color aleatorio en el rojo del RGB
     analogWrite( G , random(256) );//Pintamos un color aleatorio en el verde del RGB
     analogWrite( B , random(256) );//Pintamos un color aleatorio en el azul del RGB
     digitalWrite (Buzzer, HIGH);//Encendemos el buzzer
     tone(Buzzer, 554);//Enviamos un tono al buzzer para indicar que se encendio el circuito
     delay(100);//Espera de 100 milisegundos
     noTone(Buzzer);//Apagamos el buzzer
     lcd.backlight();//Encendemos el fondo del LCD
     lcd.clear();//Limpiamos el LCD
     lcd.print("Espere hasta");//Escribimos en LCD un mensaje en la posición cero del cursor
     lcd.setCursor(0,1);//Pasamos el cursor del LCD a la posición uno
     lcd.print("finalizar girar.");//Escribimos en LCD un mensaje en la posición uno del cursor
     //El anterior mensaje en el LCD indica que se debe esperar hasta que el motor de paso finalice el giro
     myStepper.step(stepsPerRevolution / 4);//Giramos el motor de paso 90° para mostrar la imagen a escanear y visualizar en realidad aumentada
     //El motor paso a paso 28BYJ-48, da 64 pasos por revolución, por tanto 360°/64 nos resulta 5.62° para cada paso del motor. Si el motor paso a paso gira en saltos de 90°
     //Es decir, el número pasos para dar un giro completo son 4.     
     delay(500);//Esperamos 500 milisegundos
     lcd.clear();//Limpiamos el LCD
     lcd.print("Escanee celular");//Escribimos en LCD un mensaje en la posición cero del cursor
     lcd.setCursor(0,1);//Pasamos el cursor del LCD a la posición uno
     lcd.print("Realidad aumentada.");//Escribimos en LCD un mensaje en la posición uno del cursor
     //El anterio mensaje en el LCD indica que la imagen debe escanearse con el celular
 }


 delay(100);//Espera de 100 milisegundos
}

Deja una respuesta

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