Проблема стыковки oled и sd модуля.
- Войдите на сайт для отправки комментариев
Доброго времени форумчане. Имеется китайская uno, oled 0.96 (I2C) 128x64 и sd модуль HW125(SPI). Требуется в реальном времени выводить на экран показания цифрового датчика (не принципиально какого), и с определенной периодичностью писать показания датчика на карту. Так же, с интервалом в 1 секунду, в монитор порта выводятся показания датчика. В скетче прописаны следующие библиотеки, OLED_I2C.h, SPI.h, SD.h Ситуация 1 - SD.h закомментирована, на экран выводятся показания датчика и дублируются в мониторе порта. Ситуация 2- подключаем SD.h, экран не инициализируется, код в loope не выполняется, в порт выводится сообщение об ошибке инициализации oled (из setup), и далее порт молчит. И все это при том, что sd модуль физически не подключен к плате. Замена библиотеки oled на adafruit ситуацию не меняет. В чем может быть причина?
Почему мне каждый вопрос в последнее время начинает напоминать игру "Угадай мелодию", но без призового фонда?
Что конкретно Вас интересует? Если вопрос питания платы, то по USB. Питание экрана от платы 5v. Экран подключен на 4 и 5 аналоговые выводы. Вопрос, какой датчик я использую, тоже не принципиален, можно вообще без него. Еще раз, проблема в том, что я не могу вывести hello world на экран при подключенной библиотеке sd.h Как то так.
Значит, что имеем:
Непринципиально какой датчик, непринципиально какой дисплей и HW125 подключены к непринципиально какой китайской uno по непринципиально какой схеме. Всё это управляется непринципиально каким скетчем. В результате нифига не работает. Я правильно понял?
Забейте. Это непринципиально.
Нас? Ничего. Это Вы пришли с вопросом.
Ок, я чуть позже выложу скетч, надеюсь будет более понятно.
...подключены к непринципиально какой китайской uno...
Ну, раз в теме появился человек с хрустальным шаром, могу предположить, что экран (с буфером 1к) и SD-карта (с буфером 0.5к) оказываются неприемлемо тяжелы для контроллера (uno, у которого на все про все 2к памяти). Тогда первое, что можно посоветовать, это взять контроллер помощнее, например, Мегу к 8к памяти. Ну либо использовать безбуферную библиотеку для экрана.
...подключены к непринципиально какой китайской uno...
Вы, простите, кого имеете в виду? :-)
мне кажется потому, что ты можешь отгадать эту мелодию совсем без нот )))
Скетч на библиотеке adafruit
Скетч сваял на скорую руку. Если закомментировать #include <SD.h>, то все будет работать. Еще раз повторюсь, не имеет значения какую периферию (датчики) я буду подключать, будь то bmp280 или датчик сероводорода под ободком унитаза. Факт в том, что при подключении SD.h все что в цикле loop не исполняется, и монитор порта сообщает "SSD1306 allocation failed" и не более
В интернетах есть такое: https://playground.arduino.cc/Code/AvailableMemory/
Перед вызовом display.begin() объем памяти свободной измерьте.
Благодарю за подсказку. Монитор сообщил:
Если раскомментировать строку то:
и счетчик в loop начинает работать
Полагаете в этом причина?
Вот adriano и пишет, что библиотеке дисплея нужен 1Kb RAM, а его нет.
Меняйте библиотэку. Можете на адриановскую asoled, можете на u8g с половинным буфером.
Значит я правильно думал, что имеет место быть аппаратная проблема. ASOLED была в закромах. Буду тестить и отпишусь. Благодарю за наводку, в т.ч. и adriano
SD + adafruit работать вместе не будят. надо менять библиотеку для экрана. оперативки не хватит на uno. может на mega и будет работать
Я это уже понял, т.к. adafruit перегружена лишним функционалом. Asoled превосходно завел экран вместе с картой памяти, но при дальнейшем расширении периферии стал конфликтовать с bmp280 (i2c). Похоже придется менять ардуинку.
Я оценил Ваше тонкое чувство юмора, не смотря на то, что вопрос был задан в разделе для новичков.
Так шутка была не про вопрос, а про выстраданный Вами ответ :-)
Коль скоро Вы новичок, наверное Вы этого не видели. Сходите по линке, т.к. здесь боюсь выкладывать - сожрут за всем надоевший "боян".
я тестил на UNO этой https://github.com/greiman/SSD1306Ascii
работает отлично кроме русского языка но там есть 1 вариант. если кто то знает как добавить в эту библиотеку русский язык нормально. отпишитесь