Espruino:Примеры/Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 4: | Строка 4: | ||
=Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js<ref>[https://www.espruino.com/Puck.js+Door+Light www.espruino.com - Door Controlled Light with Puck.js]</ref>= | =Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js<ref>[https://www.espruino.com/Puck.js+Door+Light www.espruino.com - Door Controlled Light with Puck.js]</ref>= | ||
Видео ниже демонстрирует, как при помощи [https://www.espruino.com/Puck.js Puck.js] определять закрытие/открытие двери и использовать это для управления другими устройствами. | Видео ниже демонстрирует, как при помощи [https://www.espruino.com/Puck.js Puck.js] определять закрытие/открытие двери и использовать это для управления другими устройствами. | ||
Чтобы определить, находится ли рядом с Puck.js магнит, мы воспользуемся встроенным в Puck.js | Чтобы определить, находится ли рядом с [[Puck.js]] [[магнит]], мы воспользуемся встроенным в [[Puck.js]] [[магнетометр]]ом. | ||
[ | [https://www.youtube.com/watch?v=T3YbwAtgrcg&feature=emb_title Puck js Door Controlled Light] | ||
Код, используемый в этом видео – ниже: | Код, используемый в этом видео – ниже: | ||
Строка 17: | Строка 15: | ||
== Мигание [[светодиод]]ом при открытии/закрытии двери == | == Мигание [[светодиод]]ом при открытии/закрытии двери == | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
var zero = Puck.mag(); | var zero = Puck.mag(); | ||
var doorOpen = false; | var doorOpen = false; | ||
Строка 38: | Строка 36: | ||
== Дистанционное управление [[ИК-светодиод]]ом == | == Дистанционное управление [[ИК-светодиод]]ом == | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
function send(cmd) { | function send(cmd) { | ||
NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) { | NRF.requestDevice({ filters: [{ namePrefix: 'Puck.js' }] }).then(function(device) { | ||
Строка 71: | Строка 69: | ||
== Где купить == | == Где купить == | ||
Дистанционно управляемые ИК- | Дистанционно управляемые [[ИК-светодиод]]ы вроде тех, что показаны в видео, можно купить на [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]. Они также продаются в виде полосы. | ||
{{Примечание1|Хотя некоторые из этих светодиодов выглядят одинаково, они часто используют разные коды управления. Единственный способ точно убедиться, что вы используете правильные коды – [http://wikihandbk.com/wiki/Espruino:Примеры/Запись_и_воспроизведение_ИК-сигналов_при_помощи_Puck.js это записать их самому].}} | |||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 83: | Строка 81: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino}} | {{Навигационная таблица/Портал/Espruino}} | ||
[[Категория:Примеры]] | |||
[[Категория:Пример]] | |||
[[Категория:Puck.mag()]] | |||
[[Категория:mag()]] | |||
[[Категория:Puck]] | |||
[[Категория:Math.sqrt()]] | |||
[[Категория:Math]] | |||
[[Категория:sqrt()]] | |||
[[Категория:digitalPulse]] | |||
[[Категория:digitalPulse()]] | |||
[[Категория:Puck.on()]] | |||
[[Категория:on()]] | |||
[[Категория:Puck.magOn()]] | |||
[[Категория:magOn()]] | |||
[[Категория:NRF.requestDevice]] | |||
[[Категория:NRF]] | |||
[[Категория:requestDevice]] | |||
[[Категория:requestDevice()]] | |||
[[Категория:print()]] | |||
[[Категория:print]] | |||
[[Категория:require]] | |||
[[Категория:require()]] |
Текущая версия от 16:57, 22 мая 2023
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js[1]
Видео ниже демонстрирует, как при помощи 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. Они также продаются в виде полосы.
См.также
Внешние ссылки
Категории:
- Справочник Espruino
- Espruino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Примеры
- Пример
- Puck.mag()
- Mag()
- Puck
- Math.sqrt()
- Math
- Sqrt()
- DigitalPulse
- DigitalPulse()
- Puck.on()
- On()
- Puck.magOn()
- MagOn()
- NRF.requestDevice
- NRF
- RequestDevice
- RequestDevice()
- Print()
- Require
- Require()