Hello:
I create a separate file called "MenuPrincipal.h", I create inside it a function called "void Menu_Principal()". When trying to compile it shows me this error indicated on a red line in this screenshot below.
Show message: 'lcd' was not declared in this scope.
MenuPrincipal.h
void Menu_Principal()
{
// Contador de teclas y navegador.
int opcion = 0;
bool salir = false;
const int seleccionMenu = 8;
// Limpiar pantalla.
lcd.clear();
do
{
//******************************************************************
// Dibujo el menĂş principal.
String MENSAJES[] =
{
"** MENĂš PRINCIPAL **", // PosiciĂłn 0.
" ESTADO PRINCIPAL ", // 1
" NOMBRE RELÉS ", // 2
" NOMBRE SENSORES ", // 3
" ENTRADA ANALĂ“GICA ", // 4
" CONFIGURACIĂ“N ", // 5
" ACERCA DE... ", // 6
" AYUDA ", // 7
" EXTRA ", // 8
" INICIO ", // 9
" ", // 10
">" // 11
};
switch (opcion)
{
case 0:
lcd.setCursor(0, 0); // LĂnea 1 del LCD.
lcd.print(MENSAJES[0]); // ** MENĂš PRINCIPAL **
lcd.setCursor(0, 1);
lcd.print(MENSAJES[1]); // > ESTADO PRINCIPAL
lcd.setCursor(0, 1);
lcd.print(MENSAJES[11]); // >
lcd.setCursor(0, 2);
lcd.print(MENSAJES[2]); // NOMBRE RELÉS
lcd.setCursor(0, 3);
lcd.print(MENSAJES[3]); // NOMBRE SENSORES
break;
default:
Serial.print(F("Fuera de rango"));
break;
}
} while (salir == false);
}
LCD_Menu_y_submenu_02
// Include el cĂłdigo de la librerĂa.
#include <LiquidCrystal.h>
#include "MenuPrincipal.h"
// Inicializa la librerĂa con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
//LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Pin 10 para saber que es luz de fondo.
//const byte LuzFondo = 10;
// Variables.
// Pulsador Ok / Enter.
byte estadoActualEnter1 = 0;
byte estadoActualEnter2 = 0;
byte estadoUltimoEnter = 0;
int contadorEnter = 0;
void setup()
{
Serial.begin(115200); // 115200
// La pantalla es de 20 caracteres y 4 filas.
lcd.begin(20, 4);
// Indicar luz de fondo como salida.
// pinMode(LuzFondo, OUTPUT);
// ConfiguraciĂłn de pines como salidas digitales.
pinMode(13, OUTPUT);
// ConfiguraciĂłn de pines como entradas digitales.
pinMode(A1, INPUT_PULLUP); // Arriba.
pinMode(A2, INPUT_PULLUP); // Abajo.
pinMode(A3, INPUT_PULLUP); // Izquierda.
pinMode(A4, INPUT_PULLUP); // Derecha.
pinMode(A5, INPUT_PULLUP); // Ok / Enter.
lcd.clear(); // Borra la pantalla y su posiciĂłn superior izquierda.
lcd.setCursor(0, 1); // LĂnea 2 del LCD.
lcd.print(F(" Pantalla principal ")); // Muestra tĂtulo en la LCD.
}
void loop()
{
// Pulsador OK / Enter.
estadoActualEnter1 = digitalRead(A5);
delay(10);
estadoActualEnter2 = digitalRead(A5);
// Si los estados no son iguales, el sketch no hace gran cosa.
if (estadoActualEnter1 == estadoActualEnter2)
{
// El código que sigue es idéntico al del anteerior ejemplo.
if (estadoActualEnter1 != estadoUltimoEnter)
{
if (estadoActualEnter1 == HIGH)
{
contadorEnter = contadorEnter + 1;
Serial.print (F("Esta es la pulsaciĂłn OK / ENTER nÂş: "));
Serial.println(contadorEnter);
}
}
}
estadoUltimoEnter = estadoActualEnter1;
if (contadorEnter % 2 == 0)
{
digitalWrite(13, LOW);
}
else
{
digitalWrite(13, HIGH);
Menu_Principal();
}
}
Thank you very much partners.