From 242adc47de4196607be1480a1015513ddfcd43d1 Mon Sep 17 00:00:00 2001 From: Jeremie GABOLDE Date: Wed, 21 Sep 2022 14:12:39 +0200 Subject: [PATCH] button mode (toggle) --- Maybe/Maybe.ino | 90 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 80 insertions(+), 10 deletions(-) diff --git a/Maybe/Maybe.ino b/Maybe/Maybe.ino index 707e3f0..60ec6a6 100644 --- a/Maybe/Maybe.ino +++ b/Maybe/Maybe.ino @@ -17,9 +17,20 @@ struct MemSlot MemSlot memory[] = //128 bytes for the Teensy LC { - {"prst", 1, 0}, - {"p2_1", 2, 63}, - {"p2_2", 3, 63}, + {"prst", 1, 0}, //preset + {"bt1", 2, 0}, //button mode (0 = default, 1 = toggle) + {"bt2", 3, 0}, + {"bt3", 4, 0}, + {"bt4", 5, 0}, + {"bt5", 6, 0}, + {"bt6", 7, 0}, + {"bt7", 8, 0}, + {"bt8", 9, 0}, + {"bt9", 10, 0}, + {"bt10", 11, 0}, + {"bt11", 12, 0}, + {"bt12", 13, 0}, + {"reset", 0, 0}, //255 = reset eeprom }; @@ -38,10 +49,20 @@ struct MenuItem MenuItem menuEntries[] = { {"", true, "prst"}, - {"", false, "edit"}, - {"/edit", false, "p2"}, - {"/edit/p2", true, "p2_1"}, - {"/edit/p2", true, "p2_2"}, + {"", false, "butt"}, + {"", true, "reset"}, + {"/butt", true, "bt1"}, + {"/butt", true, "bt2"}, + {"/butt", true, "bt3"}, + {"/butt", true, "bt4"}, + {"/butt", true, "bt5"}, + {"/butt", true, "bt6"}, + {"/butt", true, "bt7"}, + {"/butt", true, "bt8"}, + {"/butt", true, "bt9"}, + {"/butt", true, "bt10"}, + {"/butt", true, "bt11"}, + {"/butt", true, "bt12"}, }; String menuCurrentPath = ""; @@ -75,6 +96,22 @@ 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 ); +bool buttonsVirtualState[] = +{ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, +}; + /* * Rotary Encoder */ @@ -206,10 +243,15 @@ void loop() } } - //clear screen after no input delay + /*//clear screen after no input delay if (millis() > lastInputMillis + sevSegCoolDown) { //sevseg.blank(); + }*/ + + if(!animationPlaying && !isInMenu) + { + drawCustomSegments(); } sevseg.refreshDisplay(); @@ -398,15 +440,30 @@ MemSlot* getMemorySlot(String memSlotName) void sendInputOuput(int input) { - + String inputName = "bt"; + inputName += input; + MemSlot* buttonInputMem = getMemorySlot(inputName); + Serial.println(inputName); + if (isInMenu) { animationPlaying = false; } else { - //sevseg.setNumber(input, -1); playAnimation(1); + + if (buttonInputMem != NULL) + { + if (buttonInputMem->value == 1) + { + buttonsVirtualState[input-1] = !buttonsVirtualState[input-1]; + } + if (buttonInputMem->value == 0) + { + buttonsVirtualState[input-1] = false; + } + } } lastInputMillis = millis(); @@ -487,3 +544,16 @@ void drawAnimation(bool looping) } } } + +void drawCustomSegments() +{ + uint8_t seg0 = (0b00001000 * buttonsVirtualState[0]) + (0b01000000 * buttonsVirtualState[4]) + (0b00000001 * buttonsVirtualState[8]); + uint8_t seg1 = (0b00001000 * buttonsVirtualState[1]) + (0b01000000 * buttonsVirtualState[5]) + (0b00000001 * buttonsVirtualState[9]); + uint8_t seg2 = (0b00001000 * buttonsVirtualState[2]) + (0b01000000 * buttonsVirtualState[6]) + (0b00000001 * buttonsVirtualState[10]); + uint8_t seg3 = (0b00001000 * buttonsVirtualState[3]) + (0b01000000 * buttonsVirtualState[7]) + (0b00000001 * buttonsVirtualState[11]); + + sevseg.setSegmentsDigit(0,seg0); + sevseg.setSegmentsDigit(1,seg1); + sevseg.setSegmentsDigit(2,seg2); + sevseg.setSegmentsDigit(3,seg3); +}