LCD не желают работать

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем MESS, 18 фев 2015.

  1. MESS

    MESS Гик

    В прошлом году я собирая свое устройство для проверки плат, даже не мог подумать, что может быть проблема с ЖКИ. LCD1602, которые брал в амперке, включались сразу и все ок.
    Сейчас хочу собрать двухступенчатый регулятор температуры -таймер для светобокса. Но меги нет, а есть УНО и НАНО.
    Все подключил, загружал скетчи, менял пины, но никак - одни квадратики. Взял табло I2C ot OLIMEX, всего 4 конца - тоже самое, не включается даже подсветка.
    примеры брал из разных источников , библиотеки менял.
    Помогите выйти из замкнутого круга - как узнать кто виноват, я сам, 20150218_184634.jpg ардуины или табло
     
    Последнее редактирование: 18 фев 2015
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    если видны квадратики, значит неправильно задан контраст, проверяйте подключение.
    Еще вариант - неверно заданы пины инициализации.
     
  3. MESS

    MESS Гик

    Яркость этих знакомест регулируется до исчезновения. Пины перебирал в неимоверных сочетаниях. пару раз получил только горизонтальную черту. Я помню, что на МЕГЕ мне пришлось изменить на обратный, порядок пинов дата, чтобы заработал. Но здесь не помогло. Хорошо бы, чтобы я ошибся - перепаяю резистор контрастности и доложу.
     
  4. MESS

    MESS Гик

    Убрал резистор переменный, посадил 3 ножку на общий для макс контрастности.
    Скетч простейший
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(4,5,11,10,9,8);
    void setup() {
    lcd.setCursor(0, 1);
    lcd.begin(16, 2);
    lcd.print("Hello, world!");
    }
    void loop() {
    }​
    квадратики пропадают, если изменить номер строки в lcd.setCursor(0, 1); на -1 или 2
    тоже самое если отключить пинDB7.
    если же отключить пин DB4 шины данных, то квадратики пропадают, но появляется черточка в 3 знакоместе. Чертовщина, однако
    выручайте, а то выброшу все и не скажу куда:)
     
  5. vvr

    vvr Инженерище

    Вариантов немного
    -все таки неправильно подключил
    -дисплей сдох
    -дуня накрылась
     
  6. MESS

    MESS Гик

    попрбовал менять контрастность через ШИМ
    // устанавливаем ШИМ выход :
    pinMode(9, OUTPUT);
    analogWrite(9, 50);
    квадратиков нет, текста тоже
     
  7. vvr

    vvr Инженерище

    а зачем на контрастность шим - потенциометр 10 к и крутим
     
  8. Виталий

    Виталий Нерд

    А строчку "lcd.begin(16, 2);" не нужно поставить перед "lcd.setCursor(0, 1);"
    Ну а вообще неплохо бы фото подключения, чтобы было видно что куда идет и как...
     
  9. MESS

    MESS Гик

    ДУНЯ работает с другими скетчами
    ошибится мог, но где- всего то 6 концов?
    дисплей сдох - как уточнить?
    ТОМАШИНА предположил, что котнтраст задан неверно, я и отключил потенциометр.
    В коммутации ошибок нет - перепроверял многократно. завтра куплю новый дисплей и испытаю.
     
  10. MESS

    MESS Гик

    Я не силен в программировании, но строчку "lcd.begin(16, 2); понимаю как определяющуюю тип дисплея, или не так?
     
  11. vvr

    vvr Инженерище

    я всегда так пишу, если честно не знаю принципиальную разницу
    void setup()
    {
    lcd.begin(16, 2);
    lcd.setCursor(0, 1);
    lcd.print("Hello, world!");
    }
    но так более логично, всё попорядку.
     
  12. MESS

    MESS Гик

    Подключив на место 1602 другой дисплей 2004 SPARKFUM , последний сразу заработал! Даже изменений не вносил в скетч.
    Так что, 1602 на выброс или есть вариант полноценной диагностики?
     
  13. vvr

    vvr Инженерище

    забудь про него:)
     
  14. Tomasina

    Tomasina Сушитель лампочек Модератор

    lcd.begin(16, 2); - это означает инициализацию дисплея, у которого 16 символов в 2 строки.
    для четырехстрочного 2004 это будет lcd.begin(20, 4);

    И эта строка должна быть всегда ДО любых других упоминаний lcd.
    Неправильно:
    Код (Text):
    setup {
    lcd.setCursor(0, 1);
    lcd.begin(16, 2);
    lcd.print("Hello, world!");
    {
    Правильно:
    Код (Text):
    setup {
    lcd.begin(16, 2);
    lcd.setCursor(0, 1);
    lcd.print("Hello, world!");
    {
    Для некоторых капризных дисплеев надо после lcd.begin еще вставить строчку delay (200);

    P.S. можно крупнее фото зеленого дисплея? Меня смущает, что у меня GND подключен по-другому, хотя подключение должно быть типовое.
     
    Последнее редактирование: 20 фев 2015
  15. vvr

    vvr Инженерище

    если для четырёхстрочного прописать lcd.begin(16, 2); то будут работать только две верхние строки
     
    MESS нравится это.
  16. MESS

    MESS Гик

     
  17. MESS

    MESS Гик

    Именно так. Но без этой строки вообще не работает.
    Еще раз включил 1602. черточка перемещается по экрану, контрастность максимум, квадратики исчезли, скетч под 2004. На выброс? или есть шанс ? 20150220_171155.jpg
     
    Последнее редактирование: 20 фев 2015
  18. MESS

    MESS Гик

    Наверно можно закрыть тему, поскольку проблема в неисправности дисплея. ИМХО