ардуино не может преобразовать «LiquidCrystal» в uint8_t

Чаеман
Offline
Зарегистрирован: 29.05.2022

Привет, я в этой теме с ардуино я недавно, и не по своему желанию(учусь на кип, наладка щита у нас в программе), жажду собрать кодовый замок и прошу вас помочь с кодом, ближе к делу:
при компилировании кода выдает эту ошибку: 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);
}

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Чаеман пишет:

использовал библиотеку: LiqvidCristal_I2C

1. Обман. Не использовал такую в коде. ;)

2. Раздел не тот. Это раздел для вопросов по железу. Для начинающих - раздел "Песочница".

3. А что у тебя в 25 строке написано? Что ты там хочешь сделать?

------------------------------------------

Твою задачу тебе нужно решать по частям:

1. напиши код, который печатает в сериал нажатую кнопку на клавиатуре

2. напиши код, который печатает в сериал несколько символов с клавиатуры, как введенный код замка.

3. напиши отдельно код, который что-то выводит на дисплей.

4. вот уже потом пиши свой "кодовый замок".

Другой путь - стырить код в сети - у тебя не прокатил! ;) Так бывает. Пора начинать работать, как положено.

Чаеман
Offline
Зарегистрирован: 29.05.2022

1. Да вроде использовал, через вкладку скетч добавлял зип файл, ну ладно)
2. Понял, спасибо
3. В 25ой строке вылезает эта ошибка, исправить
написанно: pinMode(lcd, OUTPUT);

-------------------------------------------

Спасибо, и еще один вопросик: "сериал", что это? Код в фигурных скобках?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Чаеман пишет:
"сериал", что это? Код в фигурных скобках?

Не, не собрать тебе замка...

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Чаеман пишет:

3. В 25ой строке вылезает эта ошибка, исправить
написанно: pinMode(lcd, OUTPUT);

Тебя ж и спрашивают - что конкретно у тебя делается в этой строке? Ошибка вполне резонная, но что именно ты там задумал?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

А еще, сдается мне, у тебя и на строки 27 и 28 ругается ))

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Приходилось работать с такими "спецами" по КИПиА...
Печально все потом.
Люди абсолютно не представляя себе профессии пытаются что то ремонтировать.
Жесть

Меняют блок на станке и удивляются почему он новый и не работает.
Про интерфейсы и протоколы слыхом не слыхивали. Адрес устройства шины модбас поменять для них шаманству подобно. А если это все с телефона делается (usb-otg, с предварительным составлением пакета на бумажке и подсчётом crc ), то это вообще магия.
Чему люди столько лет учились и для чего , вообще загадка .

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

я вангую, что там изначально был led, а не lcd.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Чаеман пишет:
ардуино не может преобразовать «LiquidCrystal» в uint8_t

А кто может? На чём ещё пробовали?

Чаеман
Offline
Зарегистрирован: 29.05.2022

Да ладно вам ругаться на меня, я только учусь, мы даже основ не проходили, просто копируем и вставляем коды т.к. программирование только со следующего уч. года, сейчас просто "щупаем")

Чаеман
Offline
Зарегистрирован: 29.05.2022

спасибо огромное<3

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Чаеман пишет:

спасибо огромное<3

дерзай, тебе есть куда расти, к примеру добавить включение подсветки при нажатии на любую клавишу