RGB лента + Raspberry Pi
На днях собрал себе очередную игрушку на raspberry pi для загородного дома. А именно по датчику движения в коридоре будет включаться RGB лента, цель которой дать освещение достаточное для «дойти до выключателя». Не, я конечно натыкал и «проходных» выключателей аж 3 штуки, но всё равно иной раз приходиться идти до них, нащупывать их в темноте, попутно спотыкаясь о валяющуюся на полу пилу, циркуляру и электрокосу 😉 Пока правда собрал «на коленке», для проверки работы ленты. Получилось примерно так:
https://www.youtube.com/watch?v=qSEB7YS0lw8
Лента самая китайская на контроллере WS2812b, 5V , 60 диодов на метр, 5 метров (1300р). Блок питания S-100W-5 (1000р).
Схема подключения:
Результат выложил на Гитхаб: https://github.com/donpadlo/rgb_led_effect
alsa : нет звука
Потратил минут 20 чтобы собрать сборник рецептов почему может не быть звука в терминале Ubuntu
1) Проверить нашла ли alsa вашу звуковую карту вообще
1 |
aplay -l |
2) Установить/переустановить alsa и pulseaudio
1 |
sudo apt install alsa-base pulseaudio |
3) Проверить регуляторы звука, может быть просто в mute
1 |
sudo apt install alsa-base pulseaudio |
4) Перезагрузить настройки
1 |
sudo alsa force-reload |
5) Посмотреть туда ли вставлен джек
1 |
hdajacksensetest |
6) Переинициализировать
1 |
alsactl init |
CSS: Выравнивание содержимого блоков по вертикали
Чтобы получилось нечто подобное:
1 2 3 4 |
<div class="tile2"> <div class="icons_left"><img height="32px" src="/images/list.png"></div> <div class="icons_right" ><img height="32px" src="/images/heart.png"></div> </div> |
CSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
.tile2{ grid-template-columns: 50% 50%; display: flex; height: 100%; } .tile2>.icons_left { color: #003264; font-weight: bold; font-size: xx-large; text-align: end; margin: auto; cursor: pointer; } .tile2>.icons_right { color: #003264; font-weight: bold; font-size: xx-large; text-align: left; margin: auto; cursor: pointer; } |
1C: пауза при исполнении кода
Есть мнение, что необходимость паузы в коде, это признак плохой архитектуры кода. Категорически не согласен. Да любой код можно усложнить так, чтобы избежать необходимости паузы. Но стоит ли усложнять код ради этого? Нужно искать компромисс. В моем случае, пауза понадобилась из-за того что есть ограничение по количеству отправляемых СМС в секунду со стороны провайдера. Простой способ: отправлять СМС с паузой. Сложный способ — организовать очередь отправки через..ну например регламентные задания. Зачем сложный способ для редкой отправки 20 СМС? Вот, держите один из реализаций «Паузы»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
&НаСервере Процедура Пауза(Секунд) Экспорт ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы(); ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание(); Если ФоновоеЗадание = Неопределено Тогда ПараметрыН = Новый Массив; ПараметрыН.Добавить(Секунд); ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбщегоНазначенияБТС.Пауза", ПараметрыН); КонецЕсли; Попытка ФоновоеЗадание.ОжидатьЗавершения(Секунд); Исключение Возврат; КонецПопытки; КонецПроцедуры |