Не получается корректно подключить дисплей 16х2
- Войдите на сайт для отправки комментариев
Ср, 14/10/2015 - 19:23
Всем привет, пытаюсь подключить LCD дисплей к ардуино через i2c, ранее я этого не делал, но много видео пересмотрел. Для начала я узнал адрес самого модуля с помощью офф скетча, предназначенного для этого
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan }
Монитор порта выдал мне адрес 0х3f
скачал библиотеки для i2c с разных источников, загружал примеры, менял адрес модуля, но везде одно и тоже, просто загорается подсветка, никакого текста нет...
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3f,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); lcd.print("Hello, world!"); } void loop() { }
и второй вариант
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3f,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd lcd.begin(16,2); } void loop() { // Print a message to the LCD. lcd.backlight(); lcd.print("Hello, world!"); }
Короче результат один, горит только подсветка на дисплее. Что я сделал не так?
Выходы А4 и А5 подключены к SDA и SCL соответственно. Питание подключал как к 3.3 В так и к 5 В, массу естественно тоже не забыл)
Выходы А4 и А5 подключены к SDA и SCL соответственно. Питание подключал как к 3.3 В так и к 5 В, массу естественно тоже не забыл)
а резистор контрастности крутил?
у меня вот этот код работал:
Выходы А4 и А5 подключены к SDA и SCL соответственно. Питание подключал как к 3.3 В так и к 5 В, массу естественно тоже не забыл)
а резистор контрастности крутил?
у меня вот этот код работал:
да крутил, нет толку, твой скетч тоже не пашет
Выходы А4 и А5 подключены к SDA и SCL соответственно. Питание подключал как к 3.3 В так и к 5 В, массу естественно тоже не забыл)
а резистор контрастности крутил?
у меня вот этот код работал:
да крутил, нет толку, твой скетч тоже не пашет
так, ради интереса - поменяй местами SDA & SCL.
хотя, наверное, бред сказал. Ты же как то считал адрес ))
Посмотри вот сюда - http://playground.arduino.cc/Code/LCDi2c
Там разные библиотеки в зависимости от твоего дисплея.
То есть сначала надо понять какой у тебя дисплей а потмо подключать нужную библиотеку.
Если библа скомпилировалась, то обычно она рабочая. Ищи непропай, соплю, не дожатый экран и т.п. При нормально выставленной контрастности должны немного быть видны прямоугольники знакомест.
И кстати, как дисплея зовут? А то может какой эксклюзив))))
Ради интереса, попробуй еще раз вот этот код
и вот библиотеки которые работают у меня https://yadi.sk/d/rhaD_Brejk9dm
1. Непроинициализированный дисплей ( если только подать питание)
должен показать одну строку темную, а другую - светлую.
Если этого нет - крутите потенциометр контрастности.
2. Из библиотеки:
#define En B00000100 // Enable bit
#define Rw B00000010 // Read/Write bit
#define Rs B00000001 // Register select bit
Попробуйте прозвонить откуда и куда идут зти сигналы.
Возможно ( а я об этом где-то слышал) разводка платы не соответствует этим дэфайнам.
Ради интереса, попробуй еще раз вот этот код
и вот библиотеки которые работают у меня https://yadi.sk/d/rhaD_Brejk9dm
КАКОГО ХРЕНА?
Заработало...
[/quote]
КАКОГО ХРЕНА?
Заработало...
[/quote]
может причина в библиотеках, а может и в такой незначительной мелочи, как адрес модуля i2c 3f и 3F. только в этом разница кода который я дал.
КАКОГО ХРЕНА?
Заработало...
[/quote]
может причина в библиотеках, а может и в такой незначительной мелочи, как адрес модуля i2c 3f и 3F. только в этом разница кода который я дал.
[/quote]
Пробовал и большую и маленькую F(f)
КАКОГО ХРЕНА?
Заработало...
может причина в библиотеках, а может и в такой незначительной мелочи, как адрес модуля i2c 3f и 3F. только в этом разница кода который я дал.
[/quote]
Пробовал и большую и маленькую F(f)
[/quote]
ну и ладно, главное заработало )))