Получите ошибку 'setLocked' не может использоваться как функция, новичок и не совсем уверен, как исправить эту ошибку
Я новичок, когда дело касается Arduino и tinkercad, я не совсем уверен, в чем проблема, но я пытаюсь создать блокировку клавиатуры и ЖК-дисплея. Сначала он сказал, что setlock не был объявлен в области видимости, но затем я добавил boolean setLocked, но затем ошибка просто изменилась на то, что setLocked не может использоваться как функция. Любая помощь будет очень признательна, и, пожалуйста, поговорите со мной, как будто я очень тупой, лол, я только начинаю этот курс без предварительных знаний. Спасибо!
boolean setLocked;
#include <LiquidCrystal.h>
#include <Keypad.h>
#define redLED 10
#define greenLED 11
char* password="1212";
int positions = 0;
const byte rows = 4;
const byte columns = 4;
char keyMap [rows] [columns] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins [rows] = {1, 2, 3, 4};
byte columnsPins [columns] = {5, 6, 7, 8};
Keypad myKeypad = Keypad (makeKeymap(keyMap), rowPins, columnsPins, rows, columns);
LiquidCrystal lcd (A0, A1, A2, A3, A4, A5);
void setup() {
lcd.begin(16, 2);
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
setLocked(true);
}
void loop() {
char whichKey = myKeypad.getKey();
lcd.setCursor (0,0);
lcd.print ("Hello");
lcd.setCursor(0,1);
lcd.print("Please enter the password");
if(whichKey == '*' || whichKey =='#'|| whichKey =='A' || whichKey =='B'|| whichKey =='C' || whichKey =='D') {
positions=0;
setLocked(true);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("The password is incorrect");
delay(500);
lcd.clear();
}
if(whichKey == password [positions]) {
positions ++;
}
if(positions == 4){
setLocked(false);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("!Correct!");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("End Arduino");
lcd.setCursor(0, 1);
lcd.print("Thank you for trying me out")
delay(5000);
lcd.clear();
}
delay(100);
}
void setLocked(int locked)
if(locked){
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
}
else{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
}
}
1 ответ
Ваш компилятор прав. setLocked
не заявлено. Если вы добавляете функцию в свой эскиз (сверху вниз) после ее вызова, вам нужно было добавить прототип функции вверху:
void setLocked(int locked);
Теперь вы можете использовать эту функцию везде в своем скетче.