- Я передаю этот код с YouTube, когда я его запускаю, определяется updateMenu. Но когда я изменил его, вдруг он не определяет
- Я получаю код по этой ссылке https://www.youtube.com/watch?v=DuAG98P9Seo
- На самом деле используется только ЖК-дисплей с кнопкой, и я хочу добавить клавиатуру для изменения кода
- Как видно, ошибка говорит
updateMenu не было объявлено в этой области
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int upButton = 10;
int downButton = 11;
int selectButton = 12;
int menu = 1;
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
updateMenu();
}
void loop() {
char key = keypad.getKey();
if (key != No_Key){
Serial.print(key);
}
{
if (!digitalRead(downButton)){
menu++;
updateMenu();
delay(100);
while (!digitalRead(downButton));
}
if (!digitalRead(upButton)){
menu--;
updateMenu();
delay(100);
while(!digitalRead(upButton));
}
if (!digitalRead(selectButton)){
executeAction();
updateMenu();
delay(100);
while (!digitalRead(selectButton));
}
}
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.print(">Find Existing File");
lcd.setCursor(0, 1);
lcd.print(" Select File");
break;
case 2:
lcd.clear();
lcd.print(">Custom Setting");
lcd.setCursor(0, 1);
lcd.print("Create/Delete File");
break;
case 3:
lcd.clear();
lcd.print(">MenuItem3");
lcd.setCursor(0, 1);
lcd.print(" MenuItem4");
break;
case 4:
lcd.clear();
lcd.print(" MenuItem3");
lcd.setCursor(0, 1);
lcd.print(">MenuItem4");
break;
case 5:
menu = 4;
break;
}
}
void executeAction() {
switch (menu) {
case 1:
action1();
break;
case 2:
action2();
break;
}
}
void action1() {
lcd.clear();
lcd.print(">Select File 0 to 99");
delay(1500);
}
void action2() {
lcd.clear();
lcd.print(">Create File");
delay(1500);
}
Спасибо за помощь