211 lines
5.0 KiB
C++
211 lines
5.0 KiB
C++
#include <Keyboard.h>
|
|
|
|
|
|
#include "SevSeg.h"
|
|
SevSeg sevseg;
|
|
|
|
|
|
#include <Key.h>
|
|
#include <Keypad.h>
|
|
|
|
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.h>
|
|
|
|
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 = 10000;
|
|
} 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);
|
|
}
|
|
}
|