пятница, 16 мая 2014 г.

Arduino. I2C/SPI LCD1602 Module

Вчера почти весь день боролся с модулем IIC/I2C/TWI SPI Serial LCD 1602.

И так его уговаривал, и так... В конце концов решил подойти к решению вопроса системно - для начала узнать, какой адрес имеет подключаемый модуль. Скачал скетч сканера I2C, запустил его при подключенном экране. Узнал, что устройство имеет адрес 0х20. Отлично! Казалось бы, вот оно, счастье.. Но знание адреса не помогло. Перепробовал кучу разных библиотек для I2C LCD, и все никак. Менял провода, платы с микроконтроллером... Тоже без толку.

В порыве отчаяния полез на страницу электронного магазина. Подумал, что может быть хоть там какие-то зацепки оставят другие покупатели. И как оказалось, не зря полез. Один из покупателей упомянул микросхему MCP23008. Вооружившись этими буквоцифрами, начал более предметный поиск.

В конце концов наткнулся на страничку производителя модуля. И там, помимо схемы устройства оказались еще и библиотеки для модуля. Заработала вот эта библиотека SPI_IIC_LCD library for Arduino 1.0. Причем заработал код из примера, при выставленном адресе не 0х20, а просто 0! Почему так получилось - не понял. Будет время - покопаюсь. Но сейчас модуль исправно выводит надписи, мигает подсветкой и вообще ведет себя образцово.

Вот текст скетча

#include Wire.h
#include LiquidCrystal.h

// Connect via i2c, default address #0 (A0-A2 not jumpered)
LiquidCrystal lcd(0);

void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
lcd.setBacklight(HIGH);
delay(500);
lcd.setBacklight(LOW);
delay(500);
}

И схема подключения, на всякий пожарный. :о)


Комментариев нет:

Отправить комментарий