Espruino:Примеры/Ночной светильник: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Ночной светильник<ref>[https://www.espruino.com/Night+Light www.espruino.com - Night Light]</ref>= | ||
В этом руководстве мы сделаем простой ночной светильник, который будет включаться, когда в помещении будет темно, и выключаться, когда светло. | |||
Используемой в этом руководстве батареи на 2400 мА должно хватить примерно на 4 месяца – с расчетом, что светодиод будет гореть по 4 часа в день. | |||
Возможно, вам также будет интересно взглянуть на [https://www.espruino.com/Puck.js+Night+Light руководство по созданию ночного светильника с помощью Puck.js], который меняет свой цвет в зависимости от окружающей температуры. | |||
[https://www.youtube.com/watch?v=UNW3oGjMmk4 DIY Night Light] | |||
== Вам понадобятся: == | |||
* [https://www.espruino.com/MDBT42Q Интерфейсная плата MDBT 42Q] | |||
* [[Светодиод]] и [[резистор]] примерно на [[300 Ом]] (можно использовать встроенный) | |||
* [https://www.espruino.com/Battery Батарея] | |||
* Мячик для пинг-понга и корпус (подробности ниже) | |||
== Подсоединение == | |||
* Подсоедините батарею либо с помощью JST-коннектора, либо напрямую | |||
* Подключите светодиод между GND и IO-контактом (с последовательно подключенным резистором). В нашем примере используется контакт D15, но подойдет и любой другой IO-контакт. | |||
== Код == | |||
<syntaxhighlight lang="javascript" enclose="div"> | <syntaxhighlight lang="javascript" enclose="div"> | ||
var light = 0, on = false; | |||
setInterval(function() { | |||
light = analogRead(LED2); | |||
if (light < 0.16) on = true; | |||
if (light > 0.18) on = false; | |||
D15.write(on); | |||
}, 2000); | |||
// Используйте код ниже, только если вам нужно, | |||
// чтобы светильник был скрыт для Bluetooth, | |||
// пока не будет нажата кнопка. | |||
NRF.sleep(); | |||
setWatch(function() { | |||
NRF.wake(); | |||
}, BTN1); | |||
</syntaxhighlight> | |||
Просто загрузите код выше на [[flash-память]] платы [[MDBT42Q]]. После загрузки она отключится от Bluetooth и превратится в ночной светильник. | |||
Но вы, возможно, захотите поменять цифры, отвечающие за включение и выключение светодиода. Для этого просто удалите последний фрагмент кода, и затем, будучи подключенным, просто впишите light в консоль онлайн-IDE, чтобы понять, какое значение переменная light имеет при разных уровнях яркости. | |||
== Как улучшить проект == | |||
В видео выше уже говорилось, что от постоянного включения/выключения (мерцания) может помочь проверка при помощи пороговых значений (см. 05:20 на видео), но есть и другие способы: | |||
* Замените light = analogRead(LED2); на D15.reset(); light = analogRead(LED2); D15.write(on);. По словам пользователя Акоса Лукаша в комментариях к видео, этот код очень быстро выключает светодиод, чтобы прочесть значение яркости, а затем включает обратно. Мерцание будет едва заметно. | |||
* Переверните плату [[MDBT42]], чтобы датчик яркости не реагировал на светодиод, генерирующий свет. | |||
* Загородите чем-нибудь нижнюю часть теннисного шарика, чтобы свет не попадал напрямую на датчик. | |||
== Корпус, сделанный с помощью 3D-печати == | |||
Корпус для проекта был сделан с помощью [https://www.openscad.org/ OpenSCAD] – это просто полый цилиндр. | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
difference() { | |||
translate([0,0,-1.5]) cylinder(r=36/2,h=60); | |||
cylinder(r=33/2,h=60); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Версия от 22:08, 28 февраля 2021
Ночной светильник[1]
В этом руководстве мы сделаем простой ночной светильник, который будет включаться, когда в помещении будет темно, и выключаться, когда светло.
Используемой в этом руководстве батареи на 2400 мА должно хватить примерно на 4 месяца – с расчетом, что светодиод будет гореть по 4 часа в день.
Возможно, вам также будет интересно взглянуть на руководство по созданию ночного светильника с помощью Puck.js, который меняет свой цвет в зависимости от окружающей температуры.
Вам понадобятся:
- Интерфейсная плата MDBT 42Q
- Светодиод и резистор примерно на 300 Ом (можно использовать встроенный)
- Батарея
- Мячик для пинг-понга и корпус (подробности ниже)
Подсоединение
- Подсоедините батарею либо с помощью JST-коннектора, либо напрямую
- Подключите светодиод между GND и IO-контактом (с последовательно подключенным резистором). В нашем примере используется контакт D15, но подойдет и любой другой IO-контакт.
Код
var light = 0, on = false;
setInterval(function() {
light = analogRead(LED2);
if (light < 0.16) on = true;
if (light > 0.18) on = false;
D15.write(on);
}, 2000);
// Используйте код ниже, только если вам нужно,
// чтобы светильник был скрыт для Bluetooth,
// пока не будет нажата кнопка.
NRF.sleep();
setWatch(function() {
NRF.wake();
}, BTN1);
Просто загрузите код выше на flash-память платы MDBT42Q. После загрузки она отключится от Bluetooth и превратится в ночной светильник.
Но вы, возможно, захотите поменять цифры, отвечающие за включение и выключение светодиода. Для этого просто удалите последний фрагмент кода, и затем, будучи подключенным, просто впишите light в консоль онлайн-IDE, чтобы понять, какое значение переменная light имеет при разных уровнях яркости.
Как улучшить проект
В видео выше уже говорилось, что от постоянного включения/выключения (мерцания) может помочь проверка при помощи пороговых значений (см. 05:20 на видео), но есть и другие способы:
- Замените light = analogRead(LED2); на D15.reset(); light = analogRead(LED2); D15.write(on);. По словам пользователя Акоса Лукаша в комментариях к видео, этот код очень быстро выключает светодиод, чтобы прочесть значение яркости, а затем включает обратно. Мерцание будет едва заметно.
- Переверните плату MDBT42, чтобы датчик яркости не реагировал на светодиод, генерирующий свет.
- Загородите чем-нибудь нижнюю часть теннисного шарика, чтобы свет не попадал напрямую на датчик.
Корпус, сделанный с помощью 3D-печати
Корпус для проекта был сделан с помощью OpenSCAD – это просто полый цилиндр.
difference() {
translate([0,0,-1.5]) cylinder(r=36/2,h=60);
cylinder(r=33/2,h=60);
}
См.также
Внешние ссылки