РЕШЕНО Помогите заменить библиотеку lcd shield

Тема в разделе "Флудилка", создана пользователем Anatolii, 8 фев 2023.

  1. Anatolii

    Anatolii Нуб

    Есть два 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
     
  2. Airbus

    Airbus Радиохулиган Модератор

    А зачем ему библиотека? В смысле шилду? Или это реклама?
     
  3. Anatolii

    Anatolii Нуб

    Заменить, потому что код встроенный не подходит к lCD shield который есть , кнопки не работаю , так как описание совсем другое
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Запомните магическое заклятие Гугла - LCD keypad shield schema download. Изменяйте конечно под текущие потребности.
    Вас сразу должно насторожить Adafruit_RGBLCDShield.h. Ну при чем там RGB (то бишь Ред(красный)-Грин(зеленый)-Блу(синий)), если стоит примитивный монохромный дисплей. Еще написано что интерфейс дисплея - 6 проводов (не считая питалова). Этого достаточно для понимания. Нет более бесполезного, чем запоминать функции очередной библиотеки. Хотя считается хорошим тоном производителя - обеспечивать каждую свою поделку очередной фирменной библиотекой, даже если там кроме пары диодов и нет ничего.
    Все что нужно вам в данный момент - штатная библиотека ЖК, встроенная по умолчанию в Arduino IDE. Открываете любой из встроенных примеров работы с ЖК и пробуете. Как связать в скетче линии ЖК и пины МК - вам подскажет Гугл. А работа с кнопками через аналог - вообще не требует библиотек. Кнопка задает лишь уровень напряжения - и по нему запоминается. Встроенные примеры тоже присутствуют.
     
    Последнее редактирование: 8 фев 2023
    Airbus нравится это.
  5. Anatolii

    Anatolii Нуб

    Не получилось , внутренних заморочек много , которых нет в lcd keypad shield .
    Вообщем голова опухла в мелочах , допустим подключение самого дисплея подходит литуал Кристал , а кнопки хоть убей не конектятся , даже прописанные по примерам
     
  6. parovoZZ

    parovoZZ Гуру

    припаяй. Коннект будет надёжный.

    задачи надо решать поэтапно, а не нахрапом. Хотя именно последнего и хочется.
    Для начала надо внимательно изучить даташит на дисплей, команды дисплея. Поискать гайды в сети на этот дисплей. Наверняка там какой-то аналог Hitachi, который облизан со всех сторон.

     
    Airbus нравится это.
  7. Anatolii

    Anatolii Нуб

    Заморочка начинается тут
    } 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 , он их не сравнивает ... Соответственно не понимает какая кнопка нажата , перепробовал все варианты
     
    Последнее редактирование модератором: 9 фев 2023
  8. Airbus

    Airbus Радиохулиган Модератор

    А так? У меня 10 LCD шилдов в том числе и самодельные и все работают адинаково. Без единой библиотеки
     
  9. parovoZZ

    parovoZZ Гуру

    чтобы считать сопротивление (читай - напряжение), необходимо запустить аналого-цифровой преобразователь. Сокращённо АЦП. А без него сравнивать можно до второго пришествия.
     
  10. a1000

    a1000 Гуру

    Анатолий, для начала посмотрите, что вам выдают кнопки и выдают, ли вообще. Запускаете базовый пример из Arduino IDE под названием AnalogReadSerial. Его даже корректировать под ваши нужды не надо. Он уже под А0 написан. Смотрите что будет выдавать в монитор, и будет ли это меняться с нажатием кнопок.
     
    Airbus и arkadyf нравится это.
  11. Airbus

    Airbus Радиохулиган Модератор

    Дык я же дал ссылку на сайт Пушного там он все очень подробно разжевал. Даже видео есть
     
  12. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Странно что местные гуру вас еще не послали... читать правила форума. Код надо вставлять, предварительно нажав на значек "симки со скобками <>". Иначе точно заморочка - чтоб его понять.
     

    Вложения:

  13. Airbus

    Airbus Радиохулиган Модератор

    Эт можно!А толку?
    [​IMG]
    Если человек не умеет блинкать без библиотеки то как ему сказать?Да и тема во флудилке. Такое чувство что кто то решил постебаться. Посмотрел ошмётки кода-они вообще не в тему. Там нигде ничего с А0 не читается. А кнопки то ведь там?
     
    Последнее редактирование: 9 фев 2023
  14. Airbus

    Airbus Радиохулиган Модератор

    У Вас LCD шилд-такой?Он с цветным дисплеем. Код с Гитхаба для него. Или такой? LCD Шилд с монохромным дисплеем. Код отсюда для первого шилда - второй не будет работать. Чтоб второй шилд работал нужно написать новый скетч с ноля. Я понятно обьяснил?