ардуино не может преобразовать «LiquidCrystal» в uint8_t
- Войдите на сайт для отправки комментариев
Привет, я в этой теме с ардуино я недавно, и не по своему желанию(учусь на кип, наладка щита у нас в программе), жажду собрать кодовый замок и прошу вас помочь с кодом, ближе к делу:
при компилировании кода выдает эту ошибку: cannot convert 'LiquidCrystal' to 'uint8_t {aka unsigned char}' for argument '1' to 'void pinMode(uint8_t, uint8_t) в 25ой строке кода (он скопирован с сайта https://microkontroller.ru/arduino-projects/czifrovoj-kodovyj-zamok-na-a... ) , подредачил его, некоторые ошибки исправил, библиотеки подкачал, и выдало мне эту ошибку
P.S. дисплей: LCD1602A, библиотеку к нему не нашел, так что использовал библиотеку: LiqvidCristal_I2C
P.S.1: если надо библиотеки, скину на почту
#include <Keypad.h> #include<LiquidCrystal.h> #include<EEPROM.h> #define buzzer 15 LiquidCrystal lcd(13, 12, 11, 10, 9, 8); char password[4]; char pass[4], pass1[4]; int i = 0; char customKey = 0; const byte ROWS = 4; //four rows const byte COLS = 4; //four columns char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {3, 2, 1, 0}; //connect to the row pinouts of the keypad byte colPins[COLS] = {4, 5, 6, 7}; //connect to the column pinouts of the keypad //initialize an instance of class NewKeypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup() { lcd.begin(16, 2); pinMode(lcd, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(m11, OUTPUT); pinMode(m12, OUTPUT); lcd.print(" Electronic "); lcd.setCursor(0, 1); lcd.print(" Keypad Lock "); delay(2000); lcd.clear(); lcd.print("Enter Ur Passkey:"); lcd.setCursor(0, 1); for (int j = 0; j < 4; j++) EEPROM.write(j, j + 49); for (int j = 0; j < 4; j++) pass[j] = EEPROM.read(j); } void loop() { customKey = customKeypad.getKey(); if (customKey == '#') change(); if (customKey) { password[i++] = customKey; lcd.print(customKey); beep(); } if (i == 4) { delay(200); for (int j = 0; j < 4; j++) pass[j] = EEPROM.read(j); if (!(strncmp(password, pass, 4))) { digitalWrite(lcd, HIGH); beep(); lcd.clear(); lcd.print("Passkey Accepted"); delay(2000); lcd.setCursor(0, 1); lcd.print("#.Change Passkey"); delay(2000); lcd.clear(); lcd.print("Enter Passkey:"); lcd.setCursor(0, 1); i = 0; digitalWrite(led, LOW); } else { digitalWrite(buzzer, HIGH); lcd.clear(); lcd.print("Access Denied..."); lcd.setCursor(0, 1); lcd.print("#.Change Passkey"); delay(2000); lcd.clear(); lcd.print("Enter Passkey:"); lcd.setCursor(0, 1); i = 0; digitalWrite(buzzer, LOW); } } } void change() { int j = 0; lcd.clear(); lcd.print("UR Current Passk"); lcd.setCursor(0, 1); while (j < 4) { char key = customKeypad.getKey(); if (key) { pass1[j++] = key; lcd.print(key); beep(); } key = 0; } delay(500); if ((strncmp(pass1, pass, 4))) { lcd.clear(); lcd.print("Wrong Passkey..."); lcd.setCursor(0, 1); lcd.print("Better Luck Again"); delay(1000); } else { j = 0; lcd.clear(); lcd.print("Enter New Passk:"); lcd.setCursor(0, 1); while (j < 4) { char key = customKeypad.getKey(); if (key) { pass[j] = key; lcd.print(key); EEPROM.write(j, key); j++; beep(); } } lcd.print(" Done......"); delay(1000); } lcd.clear(); lcd.print("Enter Ur Passk:"); lcd.setCursor(0, 1); customKey = 0; } void beep() { digitalWrite(buzzer, HIGH); delay(20); digitalWrite(buzzer, LOW); }
использовал библиотеку: LiqvidCristal_I2C
1. Обман. Не использовал такую в коде. ;)
2. Раздел не тот. Это раздел для вопросов по железу. Для начинающих - раздел "Песочница".
3. А что у тебя в 25 строке написано? Что ты там хочешь сделать?
------------------------------------------
Твою задачу тебе нужно решать по частям:
1. напиши код, который печатает в сериал нажатую кнопку на клавиатуре
2. напиши код, который печатает в сериал несколько символов с клавиатуры, как введенный код замка.
3. напиши отдельно код, который что-то выводит на дисплей.
4. вот уже потом пиши свой "кодовый замок".
Другой путь - стырить код в сети - у тебя не прокатил! ;) Так бывает. Пора начинать работать, как положено.
1. Да вроде использовал, через вкладку скетч добавлял зип файл, ну ладно)
2. Понял, спасибо
3. В 25ой строке вылезает эта ошибка, исправить
написанно: pinMode(lcd, OUTPUT);
-------------------------------------------
Спасибо, и еще один вопросик: "сериал", что это? Код в фигурных скобках?
Не, не собрать тебе замка...
3. В 25ой строке вылезает эта ошибка, исправить
написанно: pinMode(lcd, OUTPUT);
Тебя ж и спрашивают - что конкретно у тебя делается в этой строке? Ошибка вполне резонная, но что именно ты там задумал?
А еще, сдается мне, у тебя и на строки 27 и 28 ругается ))
Приходилось работать с такими "спецами" по КИПиА...
Печально все потом.
Люди абсолютно не представляя себе профессии пытаются что то ремонтировать.
Жесть
Меняют блок на станке и удивляются почему он новый и не работает.
Про интерфейсы и протоколы слыхом не слыхивали. Адрес устройства шины модбас поменять для них шаманству подобно. А если это все с телефона делается (usb-otg, с предварительным составлением пакета на бумажке и подсчётом crc ), то это вообще магия.
Чему люди столько лет учились и для чего , вообще загадка .
я вангую, что там изначально был led, а не lcd.
помогу начинающему коллеге
А кто может? На чём ещё пробовали?
Да ладно вам ругаться на меня, я только учусь, мы даже основ не проходили, просто копируем и вставляем коды т.к. программирование только со следующего уч. года, сейчас просто "щупаем")
спасибо огромное<3
спасибо огромное<3
дерзай, тебе есть куда расти, к примеру добавить включение подсветки при нажатии на любую клавишу