Urządzenie stworzone stricte pod DaVinci Resolve – jednak może zostać wykorzystane w dowolnym innym programie, wystarczy zmienić skróty klawiszowe w kodzie.

Widzę w tym projekcie jeszcze wiele możliwości rozwoju, jak choćby przełącznik między programami (np. do stworzenia sterownika multimediów typu VOL+, VOL-, Play, Stop Następny, Poprzedni) – ale może to w kolejnym update.

Poniżej lista niezbędnych rzeczy, kod źródłowy i pliki do druku.

Lista zakupów

Lista zakupów:

  • ESP32 C3 Super Mini
  • Akumulator Li-Ion 18650
  • Moduł ładowania z wbudowanym BMS
  • Enkoder (15mm wysokości)
  • przyciski mechaniczne + KeyCap’y – 6szt.
  • przełącznik 2 pozycyjny
  • przewody

Kod dla ESP (użyj Arduino IDE)

#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);    
      }        
    }
   

Biblioteki

Ptrzebujesz bibliotek dla programu (inaczej się nie skompiluje:

  • BLE keyboard: Link do GitHub
  • Rotary: odnajdziesz w Repo samego arduino IDE
  • Płytka ESP32: wpisz w board menedżerze ESP32 – zainstaluj wersję 2.0.017 – WERSJA 3.xx – NIE ZADZIAŁA!!!