как подключать дисплей LCD1602 по I2C к "digispark attiny85"
- Войдите на сайт для отправки комментариев
Пт, 26/05/2017 - 09:49
пин с SDA я нашёл, а вот SCL не могу найти, во все пины перетыкал . не знаю в чём дело, то ли нет такой возможости, то ли код не тот . выводится на дисплее в первой строке квадраты и всё.
это код с примера:
#include <TinyWireM.h> // I2C Master lib for ATTinys which use USI - comment this out to use with standard arduinos #include <LiquidCrystal_I2C.h> // for LCD w/ GPIO MODIFIED for the ATtiny85 #define GPIO_ADDR 0x27 // (PCA8574A A0-A2 @5V) typ. A0-A3 Gnd 0x20 / 0x38 for A - 0x27 is the address of the Digispark LCD modules. LiquidCrystal_I2C lcd(GPIO_ADDR,16,2); // set address & 16 chars / 2 lines void setup(){ TinyWireM.begin(); // initialize I2C lib - comment this out to use with standard arduinos lcd.init(); // initialize the lcd lcd.backlight(); // Print a message to the LCD. lcd.print("Digispark!"); } void loop(){ }
это мои попытки починить :
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup(){ lcd.init(); lcd.backlight(); lcd.print("Digispark!"); } void loop(){ }
Ну, во-первых имеющийся в 85-ой протокол USI two wire не полностью совместим с TWI. Вот что написано в п. 15.3.4
Если Вас это устраивает, то пины нарисованы в разделе 1 даташита и их номера зависят от корпуса
Наслаждаемся.
Причем я использовал и старый вариант, с модифицированной библиотекой, и новый. И только библиотеку и вообще без библиотеки. Все - на Ваш вкус.
А вот одна из библиотек RTC, не вспомню сейчас какая, написана с использованием конструктора, и ей можно скормить ЛЮБУЮ реализацию I2c, хоть TWI, хоть USI, хоть софт. Тут вынужден высказать похвалу ООП.
Digispark поддерживает i2c интерфейс.
Пины:
SDA-0
SKL-2
Но библиотека Wire.h к digispark не подходит. Нужна библиотека TinyWireM.h.
И проблема в том что библиотека LiquidCrystal_I2C.h конфликтует с библиотекой TinyWireM.h потому что пытается подтягивать стандартную Wire.h.
Я тупо отрыл файлы библиотеки LiquidCrystal_I2C.h и LiquidCrustal_I2C.cpp. И заменил все строчки Wire.h на TinyWireM.h.
У меня всё работает. Правда теперь моя библиотека LiquidCrustal заточена только под digispark.