MacroBoard-ArduinoCode/mbtest/mbtest.ino

211 lines
5.0 KiB
Arduino
Raw Normal View History

2022-09-15 20:34:54 +00:00
#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 = 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);
}
}