Это Вася. Он потерял пол дня, по тысяче раз перепроверяя код, соединения и пр.пр.пр. А оно всё равно не работало.. Не будьте как Вася (с)
Ну а если подробнее, то развел вот такую простую платку:
Воплотил её в «железе»:
А оно возьми и не заработай при прошивке. Мало того, даже в мониторе порта при выставленном Serial.begin(9600); пишет без крякозябров только на скорости 2400
Убил всё утро на выяснение причины. Оказалось, что у китайского клона свои частоты работы кремния, а потому стандартные казалось бы скетчи где есть привязка к частотам процессора будут или не работать или работать не верно (датчики температуры, дисплеи и т.д.).
Решение: нужно прошивать плату выставив в Arduino IDE верную плату: LGT8F328P Для этого:
Запустить Arduino IDE,
перейти в Файл/Настройки/
В окошко “Дополнительные ссылки…” Вставить https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
Нажать ОК
Перейти в Инструменты/Плата/Менеджер плат… Начать вводить в поиске “lgt8”. Выбрать и установить LGT8fx Boards
Теперь в списке плат Инструменты/Плата/ появится семейство плат Logic Green…
Выбираем свою плату
Для более полной совместимости, Clock Divider можно выставить в 2
Компилируем..прошиваем..и всё начинает работать. Внимательнее нужно быть Вася..
Данный дисплей как оказалось с некими особенностями. У части страждущих, после подключения по стандартной схеме с 5в, экран рябит, и покрывается полосами, поэтому приходится подключать его через резисторы в 1кОм, по схеме:
Однако у меня, прокатило и без этого, хотя тоже помучался немножко, но как оказалось просто не пропаял нормально контактную площадку на дисплее. Кроме того, в моём случае необходимо было оставить свободными часть пинов, в том числе 13 и 11, для других устройств, поэтому пришлось переключатся на «софтварную» реализацию функционала MISO/MOSI/SCK. В моём случае схема подключения следующая:
vcc — 5v
gnd — gnd
scl — 8
sda — 7
res — 5
dc — 4
cs — 6
blk — не используется
Ну и инициализация дисплея следующая соответственно:
Сей проект должен решить задачу подсветки лестницы в темноте при обнаружении движения одним из двух датчиков. Ну бонусом — кнопка принудительного включения и кнопка «новогодних эффектов». Подсветка осуществляется при адресной 5 вольтовой светодиодной ленты, с внешним питанием.
Разработку платы вёл традиционно в веб версии EasyEDA, Принципиальная схема получилась следующая:
А вот тут она-же, но уже в виде текстолитовой однослойной платы, которую вполне можно потравить и самому:
В «железе» пока еще готового варианта нет, детальки едут и Китая и прочих источников, но теоретическую модель в эмуляторе уже можно потрогать тут:
Прошу очень помощи зала. Ситуация следующая: пишу прошивку «Бортовой компьютер» автомобиля на основе Arduino Nano (хобби у меня такое, не работа). Минимальный пример, для воспроизведения ошибки (удалил по максимуму всё, лишь бы ошибка воспроизводилась):
На экран выводится «Bridge». Однако стоит убрать строчку
display.print(translate("GRM ribbon:"));
Как волшебным образом, на экран начинает выводится и Transmission: и Bridge:.
Дело не только в этой строчке. Закомментировав рандомно часть кода выше-ниже, вообще не относящегося к выводу на экран, можно добиться эффекта, что выводятся на экран все три строчки.
Подумал что памяти не хватает. Но вроде норм. Я уже начинаю сходить с ума, несколько дней бьюсь над проблемой. Проблема воспроизводится и на «реальном железе», не только в эмуляторе.
Update: си не умеет возвращать строки. Только массивы символов. Поэтому верный код что-то вроде:
За что я не очень люблю СИ, так за то что можно споткнуться на пустом месте и долго думать почему так? И в этот раз тоже, долго гуглил, почему у меня не получается передать массив строк в функцию, массив внутри «обнулялся». Наконец наткнулся, что СИ это не умеет. Умеет только передавать указатель на массив. Поэтому функция может выглять подобным образом: