yotube-controller.ino
nyptus |
PRO |
09/11/23 01:57:59 PM UTC (Edited) |
0 ⭐ |
1641 👁️ |
Never ⏰ |
[Arduino, youtube, encoder]
/*
What is it?
-----------
Controller for Youtube video playback: Pause/Play (k), Backward (j)/Forward (l), Volume Up (up)/Down (down).
The Latest Version
------------------
Versioning is not applicable for this repo.
Documentation
-------------
You can read in header of files and, maybe, README for each folder will be created.
Requirements
------------
Gyver EncButton library https://github.com/GyverLibs/EncButton
Installation
------------
Arduino IDE => Tools => Board => "Arduino Leonardo"
Licensing
---------
Please see the file called LICENSE.
Contacts
--------
If you have a concrete bug report please contact me via email.
Connections
----------
Arduino Leonardo or same
S1 - D3
S2 - D2
Key - D4
Miscellaneous
----------
Keyboard shortcut Function
Spacebar Play/Pause when the seek bar is selected. Activate a button if a button has focus.
k Pause/Play in player.
m Mute/unmute the video.
Left/Right Seek backward/forward 5 seconds.
j Seek backward 10 seconds in player.
l Seek forward 10 seconds in player.
. While the video is paused, skip to the next frame.
, While the video is paused, go back to the previous frame.
> Speed up the video playback rate.
< Slow down the video playback rate.
Up/Down Increase/Decrease volume 5%.
Numbers 1 to 9 Seek to the 10% to 90% of the video.
Number 0 Seek to the beginning of the video.
/ Go to search box.
f Activate full screen.
c Activate closed captions and subtitles if available.
Shift+N Move to the next video
Shift+P Move to the previous video.
i Open the Miniplayer.
Controller for Youtube video playback:
Pause/Play (k),
Backward (j)/Forward (l),
Volume Up (up)/Down (down).
*/
#include <Arduino.h>
#include <Keyboard.h>
#include <EncButton.h>
const int ENCA = 2;
const int ENCB = 3;
const int BTN = 4;
EncButton enc(ENCA, ENCB, BTN);
volatile int value = 0;
volatile int step = 3; //1 шаг за каждые step сигналов энкодера, чтобы снизить чувствительность (так удобнее)
void setup() {
Serial.begin(115200);
enc.setEncType(EB_STEP4_LOW);
// показаны значения по умолчанию
enc.setBtnLevel(LOW);
enc.setClickTimeout(500);
enc.setDebTimeout(50);
enc.setHoldTimeout(600);
enc.setStepTimeout(200);
enc.setEncReverse(0);
enc.setFastTimeout(30);
}
void loop() {
enc.tick(); // опрос происходит здесь
if (enc.right())
{
value = value + step; //поворот вправо
}
if (enc.left())
{
value = value - step; //поворот влево
}
if (enc.leftH()) {
Keyboard.press(KEY_UP_ARROW);
delay(10);
Keyboard.releaseAll();
}
if (enc.rightH()) {
Keyboard.press(KEY_DOWN_ARROW);
delay(10);
Keyboard.releaseAll();
}
if (enc.click()) {
Keyboard.press('K');
delay(10);
Keyboard.releaseAll();
}
if (value > 9) {
Keyboard.press('J'); // каждые value поворотов вправо нажимаем J
delay(10);
Keyboard.releaseAll();
value = 0;
}
if (value < -9) {
Keyboard.press('L'); // каждые value поворотов влево нажимаем
delay(10);
Keyboard.releaseAll();
value = 0;
}
}
Comments