как подключать дисплей LCD1602 по I2C к "digispark attiny85"

suiginto
suiginto аватар
Offline
Зарегистрирован: 04.05.2017

пин с 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(){

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, во-первых имеющийся в 85-ой протокол USI two wire не полностью совместим с TWI. Вот что написано в п. 15.3.4

The USI two-wire mode is compliant to the Inter IC (TWI) bus protocol, but without slew rate limiting on outputs and without input noise filtering. Pin names used in this mode are SCL and SDA.

Если Вас это устраивает, то пины нарисованы в разделе 1 даташита и их номера зависят от корпуса

PDIP/SOIC: SDA - pin 5, SCL - pin 7
QFN/MLF: SDA - pin 11, SCL - pin 14
wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Наслаждаемся.

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

А вот одна из библиотек RTC, не вспомню сейчас какая, написана с использованием конструктора, и ей можно скормить ЛЮБУЮ реализацию I2c, хоть TWI, хоть  USI, хоть софт. Тут вынужден высказать похвалу ООП.

SCRAT
Offline
Зарегистрирован: 28.01.2021

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.