Есть два lcd shielda с кнопками , который встроен в скетч шилда нет , есть другой , но у них разные библиотеки ... Неделю пробую ничего не получается ... По ссылке https://helpduino.ru/LCD_Keypad_Shield.html такой lcd есть . Код скетча прилагаю ниже ... В нем встроен Adafruit_RGBLCDShield.h Скетч на сайте gethub c библиатекой https://github.com/ratana103/04-Arduino-temperature-and-humidiy-PID-control-with-display
Заменить, потому что код встроенный не подходит к lCD shield который есть , кнопки не работаю , так как описание совсем другое
Запомните магическое заклятие Гугла - LCD keypad shield schema download. Изменяйте конечно под текущие потребности. Вас сразу должно насторожить Adafruit_RGBLCDShield.h. Ну при чем там RGB (то бишь Ред(красный)-Грин(зеленый)-Блу(синий)), если стоит примитивный монохромный дисплей. Еще написано что интерфейс дисплея - 6 проводов (не считая питалова). Этого достаточно для понимания. Нет более бесполезного, чем запоминать функции очередной библиотеки. Хотя считается хорошим тоном производителя - обеспечивать каждую свою поделку очередной фирменной библиотекой, даже если там кроме пары диодов и нет ничего. Все что нужно вам в данный момент - штатная библиотека ЖК, встроенная по умолчанию в Arduino IDE. Открываете любой из встроенных примеров работы с ЖК и пробуете. Как связать в скетче линии ЖК и пины МК - вам подскажет Гугл. А работа с кнопками через аналог - вообще не требует библиотек. Кнопка задает лишь уровень напряжения - и по нему запоминается. Встроенные примеры тоже присутствуют.
Не получилось , внутренних заморочек много , которых нет в lcd keypad shield . Вообщем голова опухла в мелочах , допустим подключение самого дисплея подходит литуал Кристал , а кнопки хоть убей не конектятся , даже прописанные по примерам
припаяй. Коннект будет надёжный. задачи надо решать поэтапно, а не нахрапом. Хотя именно последнего и хочется. Для начала надо внимательно изучить даташит на дисплей, команды дисплея. Поискать гайды в сети на этот дисплей. Наверняка там какой-то аналог Hitachi, который облизан со всех сторон.
Заморочка начинается тут } void state_Machine() { uint8_t buttons = lcd.readButtons(); while(!buttons) { current_Time = millis(); refresh_Time = current_Time - previous_Time; if(refresh_Time > 4000) { state = 0; previous_Time = current_Time; lcd.setCursor(0, 0); lcd.print("TEMPERATURE:"); lcd.print(temp_c, DEC); lcd.setCursor(0, 1); lcd.print("HUMIDITY:"); lcd.print(humidity); break; } buttons = lcd.readButtons(); } char upFlag = 0; // flag for up button char downFlag = 0; // flag for down button char setFlag = 0; // flag for select button char select_Flag = 0; previous_Time = millis(); if (buttons) { char state_Flag; if (state_Flag) { state = 0; } else { state = 7; } lcd.clear(); if (buttons & BUTTON_LEFT) { state_Flag = 1; state --; } if (buttons & BUTTON_RIGHT) { state_Flag = 0; state ++; } select_Flag = state % 8; if(buttons & BUTTON_UP) { upFlag = 1; } if(buttons & BUTTON_DOWN) { downFlag = 1; } if(buttons & BUTTON_SELECT) { setFlag = 1; } switch (select_Flag) { // case 0: //standard mode // lcd.clear(); // lcd.setCursor(0, 0); // lcd.print("TEMPERATURE:"); // lcd.print(temp_c, DEC); // lcd.setCursor(0, 1); // lcd.print("HUMIDITY:"); // lcd.print(humidity); // break; case 0: // heat/cool mode if (heat_Cool_Flag) { lcd.clear(); lcd.setCursor(0 Кнопки сидят на А0 и у каждой кнопки сопротивление разное , прописывая цыфры для сравнения buttons , он их не сравнивает ... Соответственно не понимает какая кнопка нажата , перепробовал все варианты
А так? У меня 10 LCD шилдов в том числе и самодельные и все работают адинаково. Без единой библиотеки
чтобы считать сопротивление (читай - напряжение), необходимо запустить аналого-цифровой преобразователь. Сокращённо АЦП. А без него сравнивать можно до второго пришествия.
Анатолий, для начала посмотрите, что вам выдают кнопки и выдают, ли вообще. Запускаете базовый пример из Arduino IDE под названием AnalogReadSerial. Его даже корректировать под ваши нужды не надо. Он уже под А0 написан. Смотрите что будет выдавать в монитор, и будет ли это меняться с нажатием кнопок.
Странно что местные гуру вас еще не послали... читать правила форума. Код надо вставлять, предварительно нажав на значек "симки со скобками <>". Иначе точно заморочка - чтоб его понять.
Эт можно!А толку? Если человек не умеет блинкать без библиотеки то как ему сказать?Да и тема во флудилке. Такое чувство что кто то решил постебаться. Посмотрел ошмётки кода-они вообще не в тему. Там нигде ничего с А0 не читается. А кнопки то ведь там?
У Вас LCD шилд-такой?Он с цветным дисплеем. Код с Гитхаба для него. Или такой? LCD Шилд с монохромным дисплеем. Код отсюда для первого шилда - второй не будет работать. Чтоб второй шилд работал нужно написать новый скетч с ноля. Я понятно обьяснил?