ATtiny85 I2C ЖК
Моя настройка выглядит следующим образом:
- Arduino IDE 1.6.11
- Arduino Pro Mini as ISP
- ATtiny85 1602A LCD с платой I2C
Библиотеки, которые я использую:
- TinyWireM (источник: https://github.com/adafruit/TinyWireM)
- LiquidCrystal_I2C (модифицировано для ATtiny) (источник: http://playground.arduino.cc/Code/USIi2c)
Скетч, который я использую для тестирования:
#include <TinyWireM.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // установить адрес и 16 символов / 2 строки
void setup()
{
TinyWireM.begin(); // инициализировать I2C lib
lcd.init(); // инициализация ЖК-дисплея
lcd.backlight();
lcd.clear(); // Печать сообщения на ЖК-дисплее.
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("Hello World on Attiny85");
delay(2000);
}
Адрес 0x3F, я нашел это с помощью скетча сканера, я также протестировал ЖК-дисплей с помощью Arduino Pro Mini напрямую, он отлично работает.
Результатом этой настройки является одна линия черных блоков. Я предполагаю, что инициализация каким-то образом не удалась. Я попробовал некоторые вещи, чтобы заставить его работать:
- Подтягивания на ПДД и СКЛ
- Изолирован от Arduino с регулируемым источником питания
- Настройка контракта с помощью счетчика горшков на задней панели
- переустановка ПК
- переустановка Arduino IDE
- 1MHz, 8MHz, TinyCore default и High-Low Tech
- Заменен FTDI
- Заменил Tiny85
- Заменил ЖК
- Заменил Arduino Pro Mini
Некоторые фотографии:
[ПРАВИТЬ]
Окончательный скетч:
#include <TinyWireM.h> // I2C Master lib для ATTinys, которые используют USI
// #включить <LiquidCrystal_I2C.h>
#include "LiquidCrystal_attiny.h"
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
// Теперь настройте ЖК-дисплей
//lcd.begin(16,2); // инициализация
pinMode(4, OUTPUT);
lcd.init();
lcd.backlight();
lcd.home (); // go home
lcd.print("Weatherstation");
lcd.setCursor ( 0, 1 ); // перейти в положение
lcd.print("BMP180");
delay(2000);
}
void loop() {
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
}
@Thijs, 👍7
Обсуждение3 ответа
Лучший ответ:
После нескольких часов поиска в Google я нашел сообщение в блоге Димитриса Платиса, где он описывает использование ATtiny85 с ЖК-дисплеем I2C. Я отправил парню электронное письмо, и он ответил ссылкой на свою библиотеку LCD I2C ATtiny на GitHub. Используя эту библиотеку с TinyWireM и правильным ядром, она мгновенно заработала.
Моя окончательная настройка - с резистором 4.7K на SDA и SCL, я добавлю окончательный скетч в исходный пост в разделе [EDIT]. Это приключение заняло у меня две недели, так что я надеюсь, что когда-нибудь оно поможет кому-то еще.
Используемая библиотека LCD: https://github.com/platisd/ATtiny85-LCD-library
TinyWireM используется: https://github.com/adafruit/TinyWireM
Используемый сердечник: https://github.com/vprimachenko/ArduinoTiny
Не похоже, что у вас есть Arduino Pro Mini. Линии I2C на Pro Mini находятся на контактах A4 для SDA и A5 для SCL, и эти 2 контакта расположены в нечетном месте - проверьте картинку.
Надеюсь, я был полезен :)
Он использует ATtiny85 для общения с ЖК-дисплеем. Другой Arduino предназначен только для программирования - насколько я могу судить., @Nick Gammon
вы правы :) но это не имеет значения, как сказал Ник, это просто программист, @Thijs
У меня есть несколько таких, это дешевые китайские клоны, контакты расположены немного по-другому., @Roberto Lo Giacco
Я потратил час на решение этой проблемы и много искал. Если вы все еще не нашли решение, сделав это. Пожалуйста, попробуйте уменьшить тактовую частоту с внутренней 8 МГц
до внутренней 1 МГц
. Таким образом, он работает мой.
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- I2C с ATtiny85 на частоте 8 МГц с использованием библиотеки TinyWireM
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Sainsmart LCD 2004 - проблема с библиотекой LiquidCrytal_I2C, не удается скомпилировать
- Что означают цифры позади lcd (0x27)?
- Документы по использованию i2C LCD с библиотекой Newliquidcrystal_1.3.5
- Библиотека Wire.h работает на Uno, но не компилируется для ATtiny85
Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен в чат] (http://chat.stackexchange.com/rooms/46142/discussion-on-question-by-thijs-attiny85-i2c-lcd )., @Nick Gammon
Похоже, вы не подключили линию SCL..... Убедитесь, что вы используете правильные контакты! по умолчанию они имеют значение pin0 для SDA и pin2 для SCL., @Mero55
Пожалуйста, оставляйте дополнительные комментарии в чате выше. Комментарии, размещенные здесь, скорее всего, будут удалены., @Nick Gammon
Просто вопрос, почему вы хотите использовать and ATtiny, когда вы можете просто запрограммировать любой I2C с помощью своего Arduino ??? P.S. Просто пытаюсь учиться, поэтому, пожалуйста, не ненавидьте этот вопрос., @Dat Ha
нет проблем, я пропущу свой обычный ответ с ненавистью :) Ник может возненавидеть-ответьте за то, что вы не используете окно чата, ха-ха. Я выбираю ATtiny вместо Arduino, потому что мой проект будет много спать и использовать источник питания от батареи 3,7 В. ATtiny будет работать неделями / месяцами, а Arduino - днями., @Thijs
потратил слишком много времени на эти устройства, пытаясь заставить их работать, использовать более раннюю версию, шапки, подтягивания, переустановить драйверы USB, модифицированные библиотеки yada yada yada. не тратьте свою жизнь на эти attiny, используйте 328P с предварительно установленным загрузчиком для ваших печатных плат., @royalecraig
в наши дни, возможно, Pi Pico W, работающий под управлением Micropython, является лучшим вариантом для затраченных средств, если высокое энергопотребление не является проблемой., @Thijs