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/Puck.js+Exercise+Machine www.espruino.com - Exercise Machine controlled Video]</ref>= | ||
[https://www.youtube.com/watch?v=8h01nn2oW-c&feature=emb_title EXERCISE POWERED NETFLIX with Puck.js] | |||
<syntaxhighlight lang=" | В видео выше рассказывается, как настроить свой кросс-тренажёр (или какое-то другое тренажёрное устройство) таким образом, чтобы запускать и останавливать видео в зависимости от того, используется этот тренажёр или нет. В этом проекте используется функция [[Puck.js]] под названием [https://www.espruino.com/BLE%20Keyboard BLE HID]. | ||
Метод подключения, о котором рассказывается в этом видео, можно использовать для самых разных вещей. Например, с его помощью можно без труда записать информацию обо всей тренировочной сессии на тренажёре, а затем загрузить её на свой телефон или [[ПК]]. | |||
== Подсоединение == | |||
Для определения сигнала, идущего по проводу тренажёра, я воспользовался осциллографом. Но если у вас его нет, просто воспользуйтесь вольтметром, но тогда тренажёром нужно будет пользоваться очень медленно. | |||
Важно при подключении соблюсти правильную полярность. Вам лишь надо убедиться, что измеритель, параллельно подключенный к проводу, считывает положительное (а не отрицательное) напряжение. | |||
Если напряжение провода выше 3 вольт, спросите совета на [http://forum.espruino.com/ форуме] – возможно, вам нужно будет проделать дополнительные манипуляции, чтобы безопасно подключиться к [[Puck.js]] и не повредить его. | |||
== Код == | |||
Вот код, используемый в видео: | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
var controls = require("ble_hid_controls"); | |||
NRF.setServices(undefined, { hid : controls.report }); | |||
var rotations = 0; | |||
var lastRotations = 0; | |||
var wasPlaying = false; | |||
var PLAYSPEED = 5; | |||
setWatch(function(e) { | |||
digitalPulse(LED3,1,10); | |||
rotations++; | |||
}, D1, { edge:"falling",repeat:true}); | |||
function setPlaying(play) { | |||
if (play!=wasPlaying) { | |||
wasPlaying = play; | |||
// Мигаем светодиодом: | |||
if (play) { | |||
// Зеленый = вперёд: | |||
digitalPulse(LED2,1,100); | |||
} else { | |||
// Красный = стоп: | |||
digitalPulse(LED1,1,100); | |||
} | |||
// Вызываем playpause() для переключения | |||
// между запуском проигрывания и его остановкой. | |||
// Ловим все исключения на случай, если HID не будет включен: | |||
try { controls.playpause(); } catch (e) { } | |||
} | |||
} | |||
NRF.on('connect', function(addr) { | |||
setInterval(function() { | |||
if (rotations >= PLAYSPEED && | |||
lastRotations >= PLAYSPEED) { | |||
// Если оба прошлых периода | |||
// были достаточно быстрыми, запускаем проигрывание: | |||
setPlaying(true); | |||
} else if (rotations < PLAYSPEED && | |||
lastRotations < PLAYSPEED) { | |||
// Если оба прошлых периода | |||
// были достаточно медленными, останавливаем проигрывание: | |||
setPlaying(false); | |||
} | |||
lastRotations = rotations; | |||
rotations = 0; | |||
}, 2000); | |||
}); | |||
NRF.on('disconnect', function() { | |||
// Удаляем все интервалы: | |||
clearInterval(); | |||
}); | |||
</syntaxhighlight> | |||
=См.также= | =См.также= |
Версия от 16:14, 6 марта 2021
Управление видеопроигрывателем с помощью спортивного тренажера[1]
EXERCISE POWERED NETFLIX with Puck.js
В видео выше рассказывается, как настроить свой кросс-тренажёр (или какое-то другое тренажёрное устройство) таким образом, чтобы запускать и останавливать видео в зависимости от того, используется этот тренажёр или нет. В этом проекте используется функция Puck.js под названием BLE HID.
Метод подключения, о котором рассказывается в этом видео, можно использовать для самых разных вещей. Например, с его помощью можно без труда записать информацию обо всей тренировочной сессии на тренажёре, а затем загрузить её на свой телефон или ПК.
Подсоединение
Для определения сигнала, идущего по проводу тренажёра, я воспользовался осциллографом. Но если у вас его нет, просто воспользуйтесь вольтметром, но тогда тренажёром нужно будет пользоваться очень медленно.
Важно при подключении соблюсти правильную полярность. Вам лишь надо убедиться, что измеритель, параллельно подключенный к проводу, считывает положительное (а не отрицательное) напряжение.
Если напряжение провода выше 3 вольт, спросите совета на форуме – возможно, вам нужно будет проделать дополнительные манипуляции, чтобы безопасно подключиться к Puck.js и не повредить его.
Код
Вот код, используемый в видео:
var controls = require("ble_hid_controls");
NRF.setServices(undefined, { hid : controls.report });
var rotations = 0;
var lastRotations = 0;
var wasPlaying = false;
var PLAYSPEED = 5;
setWatch(function(e) {
digitalPulse(LED3,1,10);
rotations++;
}, D1, { edge:"falling",repeat:true});
function setPlaying(play) {
if (play!=wasPlaying) {
wasPlaying = play;
// Мигаем светодиодом:
if (play) {
// Зеленый = вперёд:
digitalPulse(LED2,1,100);
} else {
// Красный = стоп:
digitalPulse(LED1,1,100);
}
// Вызываем playpause() для переключения
// между запуском проигрывания и его остановкой.
// Ловим все исключения на случай, если HID не будет включен:
try { controls.playpause(); } catch (e) { }
}
}
NRF.on('connect', function(addr) {
setInterval(function() {
if (rotations >= PLAYSPEED &&
lastRotations >= PLAYSPEED) {
// Если оба прошлых периода
// были достаточно быстрыми, запускаем проигрывание:
setPlaying(true);
} else if (rotations < PLAYSPEED &&
lastRotations < PLAYSPEED) {
// Если оба прошлых периода
// были достаточно медленными, останавливаем проигрывание:
setPlaying(false);
}
lastRotations = rotations;
rotations = 0;
}, 2000);
});
NRF.on('disconnect', function() {
// Удаляем все интервалы:
clearInterval();
});
См.также
Внешние ссылки