Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
// Deine IO #define ENCODER1_PINA 1 #define ENCODER1_PINB 3 #define ENCODER2_PINA 5 #define ENCODER2_PINB 7 #define color_Btn 11 // g key #define clear_Btn 27 // c key #define lift_Btn 9 // l key #define save_Btn 29 // s key #define demo_Btn 31 // d // Create encoder objects // Apparently encoder.h inits my pins Encoder encoder1(ENCODER1_PINA, ENCODER1_PINB); Encoder encoder2(ENCODER2_PINA, ENCODER2_PINB); // Variables to track encoder movement direction int prevEncoder1Position = 0; int prevEncoder2Position = 0; void setup() { //pinMode(ENCODER1_PINA, INPUT_PULLUP); //pinMode(ENCODER1_PINB, INPUT_PULLUP); //pinMode(ENCODER2_PINA, INPUT_PULLUP); //pinMode(ENCODER2_PINB, INPUT_PULLUP); pinMode(color_Btn, INPUT_PULLUP); pinMode(clear_Btn, INPUT_PULLUP); pinMode(lift_Btn, INPUT_PULLUP); pinMode(save_Btn, INPUT_PULLUP); pinMode(demo_Btn, INPUT_PULLUP); Serial.begin(9600); delay(3000); while (!Serial) { ; // Wait for serial port to connect } Keyboard.begin(); } void loop() { // Read encoder positions int encoder1Position = encoder1.read(); int encoder2Position = encoder2.read(); // Detect encoder 1 movement direction int encoder1Direction = 0; if (encoder1Position > prevEncoder1Position) { encoder1Direction = 1; // Positive direction } else if (encoder1Position < prevEncoder1Position) { encoder1Direction = -1; // Negative direction } // Detect encoder 2 movement direction int encoder2Direction = 0; if (encoder2Position > prevEncoder2Position) { encoder2Direction = 1; // Positive direction } else if (encoder2Position < prevEncoder2Position) { encoder2Direction = -1; // Negative direction } // Update previous positions for next iteration prevEncoder1Position = encoder1Position; prevEncoder2Position = encoder2Position; // Use encoder direction variables to perform actions if (encoder1Direction == 1) { Keyboard.press(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); } else if (encoder1Direction == -1) { Keyboard.press(KEY_RIGHT_ARROW); Keyboard.release(KEY_RIGHT_ARROW); } else { Keyboard.release(KEY_RIGHT_ARROW); Keyboard.release(KEY_LEFT_ARROW); } if (encoder2Direction == 1) { Keyboard.press(KEY_UP_ARROW); Keyboard.release(KEY_UP_ARROW); } else if (encoder2Direction == -1) { //Serial.println("Encoder 2: Negative"); Keyboard.press(KEY_DOWN_ARROW); Keyboard.release(KEY_DOWN_ARROW); } else { Keyboard.release(KEY_DOWN_ARROW); Keyboard.release(KEY_UP_ARROW); } if(digitalRead(color_Btn) == LOW){ // Serial.println("G"); Keyboard.press(KEY_G); Keyboard.release(KEY_G); } if(digitalRead(clear_Btn) == LOW){ //Serial.println("C"); Keyboard.press(KEY_C); Keyboard.release(KEY_C); } if(digitalRead(lift_Btn) == LOW){ //Serial.println("L"); Keyboard.press(KEY_L); Keyboard.release(KEY_L); } /* if(digitalRead(save_Btn) == LOW){ Serial.println("S"); //Keyboard.press(KEY_S); //Keyboard.release(KEY_S); delay(3000); //can we save a file in 3s? } if(digitalRead(demo_Btn) == LOW){ Serial.println("D"); //Keyboard.press(KEY_D); //Keyboard.release(KEY_D); } */ // Delay to prevent spamming delay(100); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)