Espruino:Примеры/Освещение, реагирующее на открывание/закрывание двери, с помощью Puck.js
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Освещение, реагирующее на открывание/закрывание двери, с помощью 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()