#include <BleKeyboard.h>
#include „Rotary.h”;
#define ROTARY_PIN1 7 //wejście A enkodera
#define ROTARY_PIN2 8 //wejście B enkodera
#define CLICKS_PER_STEP 2 //zależy od zastosowanego enkodera – ilość kroków na kliknięcie
Rotary r; //definicja nazwy enkodera
BleKeyboard bleKeyboard; //uruchomienie biblioteki
int dir = 0; //zmienna do przechowania kierunku obrotu enkodera
void setup() {
bleKeyboard.begin();
r.begin(ROTARY_PIN1, ROTARY_PIN2, CLICKS_PER_STEP);
r.setLeftRotationHandler(showDirection);
r.setRightRotationHandler(showDirection);
pinMode(0, INPUT_PULLUP); //definicja wejść + wewnętrzny pullup
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
}
void loop() {
if(bleKeyboard.isConnected()) {
if (digitalRead(0) == LOW) {
bleKeyboard.print(„l”);
delay(200);
}
if (digitalRead(1) == LOW) {
bleKeyboard.print(„k”);
delay(200);
}
if (digitalRead(2) == LOW) {
bleKeyboard.print(„j”);
delay(200);
}
if (digitalRead(3) == LOW) {
bleKeyboard.press(KEY_BACKSPACE);
delay(50);
bleKeyboard.releaseAll();
delay(100);
}
if (digitalRead(6) == LOW) {
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press(’b’);
delay(100);
bleKeyboard.releaseAll();
delay(100);
}
if (digitalRead(5) == LOW) {
bleKeyboard.press(KEY_DELETE);
delay(50);
bleKeyboard.releaseAll();
delay(100);
}
r.loop();
}
}
void showDirection(Rotary& r) {
dir = (r.getDirection());
if (dir == 1) { //jesli obrót w prawo
bleKeyboard.write(KEY_LEFT_ARROW);
delay(5);
}
if (dir == 255) { //jesli obrót w lewo
bleKeyboard.write(KEY_RIGHT_ARROW);
delay(5);
}
}