/* Macro Board Made by Bozarre */ /* * saving presets in eeprom */ #include int address = 0; byte value; struct MemSlot { char* displayName; int adress; byte value; }; MemSlot memory[3] = //128 bytes for the Teensy LC { {"test1", 0, 0}}; /* * 7 Segment 4 digits display */ #include "SevSeg.h" SevSeg sevseg; /* * key button matrix */ #include #include const byte rows = 4; //four rows const byte cols = 3; //three columns char keys[rows][cols] = { // assiging arbitraty uid to each button {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 ); /* * Rotary Encoder */ #include SimpleRotary rotaryEncoder(19, 20, 4); byte rotaryEncoderState = 0; // Rotary push button const int BUTTON_Rotary = 4; bool BUTTON_Rotary_lastState = HIGH; /* * custom display animations */ #include "animations.h" int animationFrame = 0; bool animationLooping = true; /* * INIT */ void setup() { //debug Serial.begin(9600); Serial.println("setup start"); //Init display 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); // Init keyboard output Keyboard.begin(); Serial.println("setup complete"); } /* * Tick Loop */ void loop() { //INPUTS char customKey = keypad.getKey(); rotaryEncoderState = rotaryEncoder.rotate(); //sevseg.refreshDisplay(); value = EEPROM.read(address); Serial.print(address); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); // advance to the next address of the EEPROM address = address + 1; // there are only 512 bytes of EEPROM, from 0 to 511, so if we're // on address 512, wrap around to address 0 if (address == 128) address = 0; // Teensy 1.0 has 512 bytes // Teensy 2.0 has 1024 bytes // Teensy++ 1.0 has 2048 bytes // Teensy++ 2.0 has 4096 bytes delay(500); } void clickKey(int key) { Keyboard.press(key); Keyboard.release(key); }