//---------------------------------------------------------------------------//
// Librerias.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//---------------------------------------------------------------------------//
// Declaramos los pines conectados a la pantalla LCD.
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Declaramos la variable de valor ingresado.
int valor;
int parpadeo;
int i;
// Declaramos los pines que están conectados a los LEDs.
int ledPin1 = 1;
int ledPin2 = 2;
int ledPin3 = 42;
// Declaramos las variables de estado de los LEDs.
int ledState1 = 0;
int ledState2 = 0;
int ledState3 = 0;
// Declaramos la palabra ingresada que almacenará máximo 16 caracteres.
String palabra;
String color;
String estado;
//---------------------------------------------------------------------------//
void msm_principal() {
// Mensaje principal.
Serial.println("");
Serial.println("------------------------------------------------------");
Serial.println("Seleccione una opción:");
Serial.println("");
Serial.println("1. Encender y apagar LED");
Serial.println("2. Escribir en pantalla LCD");
Serial.println("");
Serial.println("NOTA: Solo puede ingresar el valor 1 o 2.");
}
void mostrar_LCD(){
lcd.clear();
lcd.setCursor(0, 0); // El cursor se posiciona en el fila y columna 0,
lcd.print("Su Palabra es:"); // Imprimen la palabra "Su palabra es:".
lcd.setCursor(0, 1); // El cursor se posiciona en el fila 1 y columna 0,
lcd.print(palabra); // Imprimen la palabra ingresada.
}
void msm_OP1() {
Serial.println("¿Qué LED desea encender o apagar?");
Serial.println("");
Serial.println("1. Encender o apagar el LED morado, escriba 'morado'.");
Serial.println("2. Encender o apagar el LED turquesa, escriba 'turquesa'.");
Serial.println("3. Encender o apagar el LED naranja, escriba 'naranja'.");
}
void setup() {
// El valor 9600 corresponde a la velocidad de comunicación.
Serial.begin(115200);
// Mensaje principal.
msm_principal();
//Inicialización del pin del LED como salida (Pin 2).
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Wire.begin(14, 13);
lcd.init(); // Inicializa pantalla.
lcd.backlight(); // Se le agrega brillo a la pantalla.
lcd.setCursor(0, 0); // El cursor se posiciona en el fila y columna 0,
lcd.print("Bienvenido!"); // Imprimen la palabra "Bienvenido!"
}
//Iniciación de la función bucle.
void loop() {
// Verificamos si hay un byte en el puerto serial.
while(Serial.available() == 0){
}
// Si hay un byte en el puerto serie, se lee y asigna
// a la variable valor1.
valor = Serial.read();
//--------------------------OPCIÓN 1--------------------------------------//
if(valor == '1'){
Serial.println("------------------------------------------------------");
Serial.println("Se ha ingresado el número 1.");
Serial.println("Se encenderán o apagarán los LEDs");
msm_OP1();
while(Serial.available() == 0){ }
delay(5000);
color = Serial.readString();
Serial.print("Se trabajará con el LED" + color);
Serial.print(color);
//--------------------------COLOR MORADO-------------------------------//
if(color == "morado"){
// Verificamos el estado del LED morado (encendido o apagado).
ledState1 = digitalRead(ledPin1);
// Si esta encendido el LED.
if(ledState1 == HIGH){
Serial.println("");
Serial.println("Para apagar el LED, escriba 'apagar'");
while(Serial.available() == 0){ }
estado = Serial.readString();
// Si escribieron 'apagar'.
if(estado == "apagar"){
// Se apaga el LED.
digitalWrite(ledPin1, LOW);
}
else {
Serial.println("Disculpe, opción no válida.");
delay(500);
msm_OP1();
}
}
// Si esta apagado el LED.
if(ledState1 == LOW){
Serial.println("");
Serial.println("Para encender el LED, escriba 'encender'");
while(Serial.available() == 0){ }
estado = Serial.readString();
// Si escribieron 'apagar'.
if(estado == "encender"){
// Se apaga el LED.
digitalWrite(ledPin1, LOW);
}
else {
Serial.println("Disculpe, opción no válida.");
delay(500);
msm_OP1();
}
}
}
ledState1 = 1 - ledState1;
}
else {
Serial.println("Disculpe, opción no válida.");
delay(500);
msm_OP1();
}
delay(2000);
// Mensaje principal.
msm_principal();
//--------------------------OPCIÓN 2--------------------------------------//
if(valor == '2'){
Serial.println("");
Serial.println("------------------------------------------------------");
Serial.println("Se ha ingresado el número 2.");
Serial.println("");
Serial.println("¿Qué palabra quiere escribir en la pantalla LCD?");
Serial.println("");
Serial.println("Puede ser cualquier palabra.");
Serial.println("");
Serial.println("NOTA: Debe contener como máximo 16 letras sin espacio,");
Serial.println("de lo contrario no podrá evidenciarla en pantalla.");
while(Serial.available() == 0){ }
delay(5000);
palabra = Serial.readString();
Serial.print("La palabra ingresada es:");
Serial.print(palabra);
// Se muestra en la pantalla LCD la palabra ingresada.
mostrar_LCD();
delay(2000);
// Mensaje principal.
msm_principal();
}
}