#include #include "SevSeg.h" SevSeg sevseg; #include #include const byte rows = 4; //four rows const byte cols = 3; //three columns char keys[rows][cols] = { {1,5,9}, {2,6,10}, {3,7,11}, {4,8,12} }; byte rowPins[rows] = {1, 2, 3, 0}; //connect to the row pinouts of the keypad byte colPins[cols] = {21, 22, 23}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols ); #include SimpleRotary rotaryEncoder(19, 20, 4); byte rotaryEncoderState = 0; // BUTTONS Rotary const int BUTTON_Rotary = 4; bool BUTTON_Rotary_lastState = HIGH; #include "animations.h" // Variables globales int frameId = 0; // début int frameAnim = 0; // début int animId = 0; // début int loopFrames = 20000; int waitDelay = 0; void setup(){ byte numDigits = 4; byte digitPins[] = {7, 8, 9, 6}; byte segmentPins[] = {10, 12, 14, 16, 17, 11, 13, 15}; bool resistorsOnSegments = true; bool updateWithDelaysIn = true; byte hardwareConfig = COMMON_CATHODE; sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments); sevseg.setBrightness(90); //Init rotary encoders rotaryEncoder.setDebounceDelay(2); rotaryEncoder.setErrorDelay(100); pinMode(BUTTON_Rotary, INPUT_PULLUP); Serial.begin(9600); Serial.println("setup"); Keyboard.begin(); } void loop() { sevseg.refreshDisplay(); //sevseg.setNumber(1234, 1); //sevseg.setNumber(frameAnim, 2); // système pour augmenter le compteur et créer un système de vitesse char customKey = keypad.getKey(); rotaryEncoderState = rotaryEncoder.rotate(); if (waitDelay > 0) { waitDelay -= 1; } else { if (customKey){ Serial.println(customKey); if (customKey == 1) { sevseg.setNumber(1, -1); Keyboard.press(KEY_F13); Keyboard.release(KEY_F13); } if (customKey == 2) { sevseg.setNumber(2, -1); Keyboard.press(KEY_F14); Keyboard.release(KEY_F14); } if (customKey == 3) { sevseg.setNumber(3, -1); Keyboard.press(KEY_F15); Keyboard.release(KEY_F15); } if (customKey == 4) { sevseg.setNumber(4, -1); Keyboard.press(KEY_F16); Keyboard.release(KEY_F16); } if (customKey == 5) { sevseg.setNumber(5, -1); Keyboard.press(KEY_F17); Keyboard.release(KEY_F17); } if (customKey == 6) { sevseg.setNumber(6, -1); Keyboard.press(KEY_F18); Keyboard.release(KEY_F18); } if (customKey == 7) { sevseg.setNumber(7, -1); Keyboard.press(KEY_F19); Keyboard.release(KEY_F19); } if (customKey == 8) { sevseg.setNumber(8, -1); Keyboard.press(KEY_F20); Keyboard.release(KEY_F20); } if (customKey == 9) { sevseg.setNumber(9, -1); Keyboard.press(KEY_F21); Keyboard.release(KEY_F21); } if (customKey == 10) { sevseg.setNumber(10, -1); Keyboard.press(KEY_F22); Keyboard.release(KEY_F22); } if (customKey == 11) { sevseg.setNumber(11, -1); Keyboard.press(KEY_F23); Keyboard.release(KEY_F23); } if (customKey == 12) { sevseg.setNumber(12, -1); Keyboard.press(KEY_F24); Keyboard.release(KEY_F24); } waitDelay = 5000; } else if (digitalRead(BUTTON_Rotary) == LOW && BUTTON_Rotary_lastState == HIGH) // = pressed { sevseg.setNumber(13, -1); Keyboard.press(KEY_MEDIA_MUTE); Keyboard.release(KEY_MEDIA_MUTE); waitDelay = 5000; } else if (rotaryEncoderState == 1 || rotaryEncoderState == 2) { if ( rotaryEncoderState == 1 ) //Turned Clockwise { sevseg.setNumber(14, -1); Keyboard.press(KEY_MEDIA_VOLUME_INC); Keyboard.release(KEY_MEDIA_VOLUME_INC); } if ( rotaryEncoderState == 2 ) //Turned Counter-Clockwise { sevseg.setNumber(15, -1); Keyboard.press(KEY_MEDIA_VOLUME_DEC); Keyboard.release(KEY_MEDIA_VOLUME_DEC); } waitDelay = 5000; } else { frameId ++; if (frameId >= loopFrames) { frameAnim++; frameId = 0; } if (frameAnim == 30) { animId = (animId + 1)%7; frameAnim = 0; } if(animId == 0) sevseg.setSegments(ANIMATION1[frameAnim]); if(animId == 1) sevseg.setSegments(ANIMATION2[frameAnim]); if(animId == 2) sevseg.setSegments(ANIMATION3[frameAnim]); if(animId == 3) sevseg.setSegments(ANIMATION4[frameAnim]); if(animId == 4) sevseg.setSegments(ANIMATION7[frameAnim]); if(animId == 5) sevseg.setSegments(ANIMATION7[frameAnim]); if(animId == 6) sevseg.setSegments(ANIMATION7[frameAnim]); //delay(150); } BUTTON_Rotary_lastState = digitalRead(BUTTON_Rotary); } }