init
This commit is contained in:
commit
abbcd9d60e
5 changed files with 148 additions and 0 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.pio
|
||||||
|
.vscode/.browse.c_cpp.db*
|
||||||
|
.vscode/c_cpp_properties.json
|
||||||
|
.vscode/launch.json
|
||||||
|
.vscode/ipch
|
10
.vscode/extensions.json
vendored
Normal file
10
.vscode/extensions.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||||
|
// for the documentation about the extensions.json format
|
||||||
|
"recommendations": [
|
||||||
|
"platformio.platformio-ide"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"ms-vscode.cpptools-extension-pack"
|
||||||
|
]
|
||||||
|
}
|
14
platformio.ini
Normal file
14
platformio.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
; PlatformIO Project Configuration File
|
||||||
|
;
|
||||||
|
; Build options: build flags, source filter
|
||||||
|
; Upload options: custom upload port, speed and extra flags
|
||||||
|
; Library options: dependencies, extra library storages
|
||||||
|
; Advanced options: extra scripting
|
||||||
|
;
|
||||||
|
; Please visit documentation for the other options and examples
|
||||||
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
|
[env:uno]
|
||||||
|
platform = atmelavr
|
||||||
|
board = uno
|
||||||
|
framework = arduino
|
38
rotary-kb.py
Executable file
38
rotary-kb.py
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/env python3
|
||||||
|
import serial
|
||||||
|
import time
|
||||||
|
from pynput import mouse, keyboard
|
||||||
|
|
||||||
|
PORT = "/dev/ttyACM1"
|
||||||
|
|
||||||
|
keys = list(" abcdefghijklmnopqrstuvwxyz") + [keyboard.Key.enter]
|
||||||
|
keys_display = " abcdefghijklmnopqrstuvwxyz\\"
|
||||||
|
|
||||||
|
kb = keyboard.Controller()
|
||||||
|
arduino = serial.Serial(port=PORT, baudrate=9600, timeout=.1)
|
||||||
|
|
||||||
|
active_btn = -1
|
||||||
|
|
||||||
|
pos = 0
|
||||||
|
|
||||||
|
def print_state():
|
||||||
|
global pos
|
||||||
|
print(keys_display)
|
||||||
|
print(" " * pos + "^")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
event = arduino.readline().decode("utf-8").replace("\r\n", "")
|
||||||
|
if event:
|
||||||
|
if event.startswith("btn."):
|
||||||
|
state = event[4]
|
||||||
|
if state == "0":
|
||||||
|
kb.press(keys[pos])
|
||||||
|
active_btn = pos
|
||||||
|
else:
|
||||||
|
kb.release(keys[active_btn])
|
||||||
|
active_btn = -1
|
||||||
|
# print(event)
|
||||||
|
else:
|
||||||
|
pos = int(event)
|
||||||
|
print_state()
|
||||||
|
|
81
src/main.cpp
Normal file
81
src/main.cpp
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#define PIN_BTN 5
|
||||||
|
|
||||||
|
#define PIN_A 11 // Connected to CLK
|
||||||
|
#define PIN_B 8 // Connected to DT
|
||||||
|
int rotation = 0;
|
||||||
|
int prev_a;
|
||||||
|
int prev_btn;
|
||||||
|
//#define DEBUG
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
pinMode (PIN_A, INPUT);
|
||||||
|
pinMode (PIN_B, INPUT);
|
||||||
|
pinMode (PIN_BTN, INPUT_PULLUP);
|
||||||
|
|
||||||
|
prev_a = digitalRead(PIN_A);
|
||||||
|
prev_btn = digitalRead(PIN_BTN);
|
||||||
|
Serial.begin(9600);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// debug_signal();
|
||||||
|
int a = digitalRead(PIN_A);
|
||||||
|
int btn = digitalRead(PIN_BTN);
|
||||||
|
|
||||||
|
if (a != prev_a){ // Means the knob is rotating
|
||||||
|
if (digitalRead(PIN_B) != a) { // Means pin A Changed first - We're Rotating Clockwise
|
||||||
|
rotation++;
|
||||||
|
#ifdef DEBUG
|
||||||
|
Serial.print("CW ");
|
||||||
|
#endif
|
||||||
|
} else {// Otherwise B changed first and we're moving CCW
|
||||||
|
rotation--;
|
||||||
|
#ifdef DEBUG
|
||||||
|
Serial.print("CCW ");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
Serial.print("pos: ");
|
||||||
|
#endif
|
||||||
|
Serial.println(rotation);
|
||||||
|
}
|
||||||
|
if (btn != prev_btn) {
|
||||||
|
Serial.print("btn.");
|
||||||
|
Serial.println(btn);
|
||||||
|
}
|
||||||
|
|
||||||
|
prev_btn = btn;
|
||||||
|
prev_a = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
// void debug_signal() {
|
||||||
|
// int a = digitalRead(PIN_A);
|
||||||
|
// int b = digitalRead(PIN_B);
|
||||||
|
// if (a != prev_a || b != prev_b) {
|
||||||
|
// if (a) {
|
||||||
|
// if (b) {
|
||||||
|
// Serial.print("█");
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// Serial.print("▀");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// if (b) {
|
||||||
|
// Serial.print("▄");
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// Serial.print(" ");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// prev_a = a;
|
||||||
|
// prev_b = b;
|
||||||
|
// if (digitalRead(5) == LOW) {
|
||||||
|
// Serial.println("");
|
||||||
|
// delay(100);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
Loading…
Reference in a new issue