Это Вася. Он потерял пол дня, по тысяче раз перепроверяя код, соединения и пр.пр.пр. А оно всё равно не работало.. Не будьте как Вася (с)
Ну а если подробнее, то развел вот такую простую платку:
Воплотил её в «железе»:
А оно возьми и не заработай при прошивке. Мало того, даже в мониторе порта при выставленном 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 — не используется
Ну и инициализация дисплея следующая соответственно:
Собственно возникла задача, как опросить много кнопок, используя как можно меньше проводов. В итоге задача решается при помощи обычных резисторов: 100кОм подтягивающего, и по 1 кОм на каждую кнопку (кроме первой) для уменьшения напряжения. Читать соответственно будем через аналоговый вход. Принципиальная схема подключения выглядит примерно так (потенциально расширяема до примерно 500 кнопок):
Ну и скетч соответственно:
int analogPin = A0;
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin);
if (val>0){
Serial.println(val);
delay(100);
};
}
Из потенциальных проблем вижу сложности с обработкой нажатий нескольких кнопок одновременно и возможные изменения значений кнопок при «просадке» напряжения на плате.
Сей проект должен решить задачу подсветки лестницы в темноте при обнаружении движения одним из двух датчиков. Ну бонусом — кнопка принудительного включения и кнопка «новогодних эффектов». Подсветка осуществляется при адресной 5 вольтовой светодиодной ленты, с внешним питанием.
Разработку платы вёл традиционно в веб версии EasyEDA, Принципиальная схема получилась следующая:
А вот тут она-же, но уже в виде текстолитовой однослойной платы, которую вполне можно потравить и самому:
В «железе» пока еще готового варианта нет, детальки едут и Китая и прочих источников, но теоретическую модель в эмуляторе уже можно потрогать тут:
Ранее уже делал подобную схему, но вышло слишком дорого и сложно. Поэтому реле времени своими руками буду упрощать и удешевлять 😉 Во первых уберем индикатор, соответственно сдвиговый регистр будет не нужен. Из индикации добавим светодиод, который будет показывать включено или выключено реле. Так-же подумав, решил добавить кнопку ручного включения/выключения реле. Сердцем будет микросхема attiny85. Так-же в схему добавил и блок питания (HLK-PM01), чтоб вся конструкция была единой платой