/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Encoder Manager - Source Code NOT compiled for: Arduino Nano - Source Code created on: 2024-06-22 18:19:22 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* Develop an Arduino project to interface with two */ /* KY-040 rotary encoders. Use SimpleEncoder and */ /* EncButton libraries to manage encoder and button */ /* inputs. Configure pins D2-D7 and display encoder */ /* positions and button states on Serial Monitor. */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include // https://github.com/GyverLibs/EncButton /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); void myTurn1(); void myRight1(); void myLeft1(); void myClick1(); void myHolded1(); void myPress1(); void myRelease1(); void myTurn2(); void myRight2(); void myLeft2(); void myClick2(); void myHolded2(); void myPress2(); void myRelease2(); /***** DEFINITION OF DIGITAL INPUT PINS *****/ const uint8_t _1enc_KY040_CLK_PIN_D2 = 2; const uint8_t _1enc_KY040_DT_PIN_D3 = 3; const uint8_t _1enc_KY040_SW_PIN_D4 = 4; const uint8_t _2enc_KY040_CLK_PIN_D5 = 5; const uint8_t _2enc_KY040_DT_PIN_D6 = 6; const uint8_t _2enc_KY040_SW_PIN_D7 = 7; /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/ EncButton enc1; EncButton enc2; void setup(void) { // Initialize serial communication Serial.begin(9600); // Configure pins for the first encoder pinMode(_1enc_KY040_CLK_PIN_D2, INPUT); pinMode(_1enc_KY040_DT_PIN_D3, INPUT); pinMode(_1enc_KY040_SW_PIN_D4, INPUT_PULLUP); // Configure pins for the second encoder pinMode(_2enc_KY040_CLK_PIN_D5, INPUT); pinMode(_2enc_KY040_DT_PIN_D6, INPUT); pinMode(_2enc_KY040_SW_PIN_D7, INPUT_PULLUP); // Attach handlers for various events for the first encoder enc1.attach(TURN_HANDLER, myTurn1); enc1.attach(RIGHT_HANDLER, myRight1); enc1.attach(LEFT_HANDLER, myLeft1); enc1.attach(CLICK_HANDLER, myClick1); enc1.attach(HOLDED_HANDLER, myHolded1); enc1.attach(PRESS_HANDLER, myPress1); enc1.attach(RELEASE_HANDLER, myRelease1); // Attach handlers for various events for the second encoder enc2.attach(TURN_HANDLER, myTurn2); enc2.attach(RIGHT_HANDLER, myRight2); enc2.attach(LEFT_HANDLER, myLeft2); enc2.attach(CLICK_HANDLER, myClick2); enc2.attach(HOLDED_HANDLER, myHolded2); enc2.attach(PRESS_HANDLER, myPress2); enc2.attach(RELEASE_HANDLER, myRelease2); } // Event handlers for the first encoder void myTurn1() { Serial.print("Encoder 1 TURN_HANDLER: "); Serial.println(enc1.counter); // Print the counter value } void myRight1() { Serial.println("Encoder 1 RIGHT_HANDLER"); } void myLeft1() { Serial.println("Encoder 1 LEFT_HANDLER"); } void myClick1() { Serial.println("Encoder 1 CLICK_HANDLER"); } void myHolded1() { Serial.println("Encoder 1 HOLDED_HANDLER"); } void myPress1() { Serial.println("Encoder 1 PRESS_HANDLER"); } void myRelease1() { Serial.println("Encoder 1 RELEASE_HANDLER"); } // Event handlers for the second encoder void myTurn2() { Serial.print("Encoder 2 TURN_HANDLER: "); Serial.println(enc2.counter); // Print the counter value } void myRight2() { Serial.println("Encoder 2 RIGHT_HANDLER"); } void myLeft2() { Serial.println("Encoder 2 LEFT_HANDLER"); } void myClick2() { Serial.println("Encoder 2 CLICK_HANDLER"); } void myHolded2() { Serial.println("Encoder 2 HOLDED_HANDLER"); } void myPress2() { Serial.println("Encoder 2 PRESS_HANDLER"); } void myRelease2() { Serial.println("Encoder 2 RELEASE_HANDLER"); } void loop(void) { // Process the encoder and button actions for both encoders enc1.tick(); enc2.tick(); } /* END CODE */