Espruino:Примеры/Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighlig...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js<ref>[https://www.espruino.com/Puck.js+Door+Light www.espruino.com - Door Controlled Light with Puck.js]</ref>= | ||
Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js | |||
Видео ниже демонстрирует, как при помощи [https://www.espruino.com/Puck.js Puck.js] определять закрытие/открытие двери и использовать это для управления другими устройствами. | |||
Чтобы определить, находится ли рядом с Puck.js магнит, мы воспользуемся встроенным в Puck.js магнетометром. | |||
[Видео] | |||
Код, используемый в этом видео – ниже: | |||
== Мигание [[светодиод]]ом при открытии/закрытии двери == | |||
<syntaxhighlight lang="javascript" enclose="div"> | <syntaxhighlight lang="javascript" enclose="div"> | ||
var zero = Puck.mag(); | |||
var doorOpen = false; | |||
function onMag(p) { | |||
p.x -= zero.x; | |||
p.y -= zero.y; | |||
p.z -= zero.z; | |||
var s = Math.sqrt(p.x*p.x + p.y*p.y + p.z*p.z); | |||
var open = s<1000; | |||
if (open!=doorOpen) { | |||
doorOpen = open; | |||
digitalPulse(open ? LED1 : LED2, 1,1000); | |||
} | |||
} | |||
Puck.on('mag', onMag); | |||
Puck.magOn(); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Дистанционное управление [[ИК-светодиод]]ом == | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
function send(cmd) { | |||
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) { | |||
require("ble_simple_uart").write(device, cmd, function() { | |||
print('Готово!'); | |||
}); | |||
}); | |||
} | |||
var zero = Puck.mag(); | |||
var isOpen = false; | |||
function onMag(p) { | |||
p.x -= zero.x; | |||
p.y -= zero.y; | |||
p.z -= zero.z; | |||
var s = Math.sqrt(p.x*p.x + p.y*p.y + p.z*p.z); | |||
var open = s<1000; | |||
if (open != isOpen) { | |||
isOpen = open; | |||
digitalPulse(open ? LED1 : LED2,1,1000); | |||
if (open) | |||
send("Puck.IR([8.9,4.5,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.7,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,39.9,8.9,2.3,0.5,96.2,8.9,2.3,0.5]);\n"); | |||
else | |||
send("Puck.IR([8.9,4.5,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.8,0.5,0.6,0.5,1.7,0.5,1.7,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,0.6,0.5,0.6,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,39.9,8.9,2.3,0.5,96.2,8.9,2.3,0]);\n"); | |||
} | |||
} | |||
Puck.on('mag', onMag); | |||
Puck.magOn(); | |||
</syntaxhighlight> | |||
== Где купить == | |||
Дистанционно управляемые ИК-светодиоды вроде тех, что показаны в видео, можно купить на [https://www.ebay.com/sch/i.html?_nkw=rgb+led+light+ir+remote+control&_sacat=0&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5337979701&customid=&toolid=10001&mkevt=1 eBay]. Они также продаются в виде полосы. | |||
'''Примечание:''' Хотя некоторые из этих светодиодов выглядят одинаково, они часто используют разные коды управления. Единственный способ точно убедиться, что вы используете правильные коды – [http://wikihandbk.com/wiki/Espruino:Примеры/Запись_и_воспроизведение_ИК-сигналов_при_помощи_Puck.js это записать их самому]. | |||
=См.также= | =См.также= |
Версия от 15:18, 25 июня 2021
Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js[1]
Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js
Видео ниже демонстрирует, как при помощи Puck.js определять закрытие/открытие двери и использовать это для управления другими устройствами.
Чтобы определить, находится ли рядом с Puck.js магнит, мы воспользуемся встроенным в Puck.js магнетометром.
[Видео]
Код, используемый в этом видео – ниже:
Мигание светодиодом при открытии/закрытии двери
var zero = Puck.mag();
var doorOpen = false;
function onMag(p) {
p.x -= zero.x;
p.y -= zero.y;
p.z -= zero.z;
var s = Math.sqrt(p.x*p.x + p.y*p.y + p.z*p.z);
var open = s<1000;
if (open!=doorOpen) {
doorOpen = open;
digitalPulse(open ? LED1 : LED2, 1,1000);
}
}
Puck.on('mag', onMag);
Puck.magOn();
Дистанционное управление ИК-светодиодом
function send(cmd) {
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) {
require("ble_simple_uart").write(device, cmd, function() {
print('Готово!');
});
});
}
var zero = Puck.mag();
var isOpen = false;
function onMag(p) {
p.x -= zero.x;
p.y -= zero.y;
p.z -= zero.z;
var s = Math.sqrt(p.x*p.x + p.y*p.y + p.z*p.z);
var open = s<1000;
if (open != isOpen) {
isOpen = open;
digitalPulse(open ? LED1 : LED2,1,1000);
if (open)
send("Puck.IR([8.9,4.5,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.7,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,39.9,8.9,2.3,0.5,96.2,8.9,2.3,0.5]);\n");
else
send("Puck.IR([8.9,4.5,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.8,0.5,0.6,0.5,1.7,0.5,1.7,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,0.6,0.5,1.7,0.5,0.6,0.5,0.6,0.5,1.8,0.5,1.7,0.5,1.7,0.5,1.8,0.5,1.7,0.5,39.9,8.9,2.3,0.5,96.2,8.9,2.3,0]);\n");
}
}
Puck.on('mag', onMag);
Puck.magOn();
Где купить
Дистанционно управляемые ИК-светодиоды вроде тех, что показаны в видео, можно купить на eBay. Они также продаются в виде полосы.
Примечание: Хотя некоторые из этих светодиодов выглядят одинаково, они часто используют разные коды управления. Единственный способ точно убедиться, что вы используете правильные коды – это записать их самому.
См.также
Внешние ссылки