Помогите с I2C LCD... уже голову сломала
- Войдите на сайт для отправки комментариев
Доброго времени суток. Купила этот дисплей http://www.ebay.com/itm/IIC-I2C-TWI-1602-serial-LCD-Module-Arduino-HD44780-Light-Green-Color-/160923532659?pt=LH_DefaultDomain_0&hash=item2577ca3d73.
После того, как поправила бибилиотеку, он заработал.
Проблема в том, что я не могу вывести на него переменную. При этом текст выводится запросто.
Библиотека вот http://www.wide.hk/download/I2C_1602LCD.rar
в LCDI2C4Bit.cpp сделала следующие изменения: заменила wconstants.h на arduino.h и в void SetMCPReg заменила send на write.
для вывода переменых типа char в данной библиотеке используется printIn (не путать с ***ln, там printin, только i заглавная), а для вывода переменных типа int - используется print, но при int i = 51; lcd.print(i); выводится символ, соответствующий коду 51. Вывести же значение 51 у меня не удается (((
Подскажите, пожалуйста ))
#include <Wire.h> #include <LCDI2C4Bit.h> //int ADDR = 0xA7; int ADDR = 0xA7; byte x = 0; byte data = 1; byte c; LCDI2C4Bit lcd = LCDI2C4Bit(ADDR,4,20); void setup() { Serial.begin(9600); Wire.begin(); // join i2c bus (address optional for master) lcd.init(); lcd.clear(); lcd.cursorTo(0,0); lcd.printIn("WWW.WIDE.HK"); lcd.cursorTo(2,0); lcd.printIn("I2C 1602 LCD"); } void loop() { lcd.backLight(true); delay(1000); lcd.backLight(false); delay(1000); }
в классе print заявлен как печать integer
не работает?
class LCDI2C4Bit {
public:
LCDI2C4Bit(int devI2CAddress, int num_lines, int lcdwidth);
void commandWrite(int command);
void init();
void print(int value);
void printIn(char value[]);
void clear();
void backLight( bool turnOn );
//non-core---------------
void cursorTo(int line_num, int x);
для вывода переменых типа char в данной библиотеке используется printIn (не путать с ***ln, там printin, только i заглавная), а для вывода переменных типа int - используется print, но при int i = 51; lcd.print(i); выводится символ, соответствующий коду 51.
в классе print заявлен как печать integer
Да, сморозил, хотя чего ради в классе параметр value объявлять int не понимаю
Скачайте вот эту библиотеку. Описание здесь.
Да, сморозил, хотя чего ради в классе параметр value объявлять int не понимаю
А как мне преобразовать число в строку?
Я уже скачивала ее. Она не работает с этим модулем, зато прекрасно работает вот с этим http://www.ebay.com/itm/Arduino-IIC-I2C-TWI-1602-Serial-LCD-Module-Display-/190573003243?pt=LH_DefaultDomain_0&hash=item2c5f0941eb
То есть так не работает?
Только что еще раз попробовала. Удалила другую библиотеку с таким же именем. Скачала и поставила из ссылки. Не работает ((((
Так а как можно преобразовать число в строку?
Так
У вас есть два варианта.
Вариант 1: Выводим кодами
Раз у вас "lcd.print(i); выводится символ, соответствующий коду 51", то значит вам нужно выводить коды.
То есть, цикле, число, скажем 253 должно быть разбито на три числа 2,5,3 в этом вам поможет операторы целочисленного деления и остатка от деления (делите на 100, что осталось на 10 и т.д.)
Потом эти 2,5,3 - вам нужно перевести в "коды символов". Это будут 50,53,51 (код символа ноля - это 48. Следоватльено цифру в код перевести можно просто добавив 48-мь).
Ну и... все выводите эти коды. Функция у вас есть. Вот примерно так.
Вариант 2: Преобразовавать в строку
Ну или как выше Максим показал. Или воспользоваться, к пример функцией sprintf если хотим сразу несколько чисел или еще и текст поясняющимй одним махом.
А вообщем вопрос " как можно преобразовать число в строку" - замечательно гуглится. Даже на этом форуме - поднимался уже 10-тки раз. При работе с Serial, передатчиками, разными экранами... да вообще это постоянное :)
Спасибо ))) Получилось!!! Я вас люблю :-* :-* :-* :-* :-*