LiquidCrystal & Wire
- Войдите на сайт для отправки комментариев
Сб, 18/04/2020 - 15:21
Всем привет, я пришёл к тупику.
Упростил свою проблему до кода из примера.
Пример из LiquidCrystal-->Hello World.
Удалил для удобства комментарии и добавил "проблемный" код на строках 0 и 5 (объявление "#include <Wire.h>" и подключение к шине I2C в качестве ведомого устройства "Wire.begin(0x27);" )
#include <Wire.h> #include <LiquidCrystal.h> const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { Wire.begin(0x27); lcd.begin(16, 2); lcd.print("hello, world!"); } void loop() { lcd.setCursor(0, 1); lcd.print(millis() / 1000); }
Ведущий видит устройство, но никакие надписи на дисплей не выводятся.
Сама ардрунка работает, проверял на мигающем светодиоде, не выводится именно текст.
Тестировал на версиях Arduino IDE 1.6.5 и 1.8.12
Идея в том, чтобы одна ардуинка могла показывать некие буквы на экране получая их от ведущей. Мною был выбран протокол I2C как самый малозатратный по проводам и пониманию.
Буду рад любым идеям =)
А без строки №6 выводит нормально?
И, кстати, добавьте задержку в луп хоть на полсекунды, чего над экраном издеваться-то?
А без строки №6 выводит нормально?
И, кстати, добавьте задержку в луп хоть на полсекунды, чего над экраном издеваться-то?
Да, без "Wire.begin(0x27)" выводит нормально.
Этот код это модифицированный пример(для воспроизведения ошибки), из стандартной библиотеки примеров arduino.
loop в принципе избыточен для воспроизведения данной ошибки, но я его оставил чтобы код всё ещё был похож на пример =)
А Wire умеет работать и мастером и слейвом одновременно?
А Wire умеет работать и мастером и слейвом одновременно?
Да, чтобы запустить его в режиме мастера нужно вызвать "Wire.begin();"(без аргументов), чтобы вызвать его в качестве ведомого нужно вызвать "Wire.begin(0х##);"(указав адрес в аргументах)
Если только Вы не имели в виду "одновременно" как на одной плате.
Этот код это модифицированный пример(для воспроизведения ошибки)
Тем не менее, добавьте таки задержку в луп хоть на полсекунды. Не трудно же?
Тем не менее, добавьте таки задержку в луп хоть на полсекунды. Не трудно же?
Я добавлял 1 секунду, это не меняет ситуации.
Даже такой код может воспроизвести мою ситуацию:
Комментирую 5-ю строку "Wire.begin(0x27);" и экранчик уже приветствует меня. Иначе вижу только контрастную полосу.
Давайте лучше с этим коротким кодом работать, а луп пусть будет пустой.
А вот теперь скажите, он у Вас выходит из пятой строки? Или в ней зацикливается? ну-ка поставьте печать чего-нибудь в сериал после неё, посмотрим.
А вот теперь скажите, он у Вас выходит из пятой строки? Или в ней зацикливается? ну-ка поставьте печать чего-нибудь в сериал после неё, посмотрим.
Сделал чуть по своему, но суть думаю не меняется, лампочка загорается.
UPD: И даже мигает если в луп блинк добавить
Бросил на 10-ть минут с блинком, появилось что-то непонятное
Прошу прощения за отсутствие спойлера, не могу я его найти тут.