Moved some of the strings to PROGMEM. added "Done" message when the encoder is reversed

This commit is contained in:
Oleksiy
2024-07-31 16:44:04 +03:00
parent e14d627238
commit 8346c4d764
3 changed files with 39 additions and 37 deletions

View File

@ -154,7 +154,7 @@ U8G2_SSD1306_128X64_NONAME_2_HW_I2C u8g2(U8G2_R2, SCL, SDA, U8X8_PIN_NONE);
RotaryEncoder encoder(ENC_D1_PIN, ENC_D2_PIN, RotaryEncoder::LatchMode::TWO03);
//Font
const uint8_t velvetscreen[437] U8G2_FONT_SECTION("velvetscreen") =
const PROGMEM uint8_t velvetscreen[437] U8G2_FONT_SECTION("velvetscreen") =
"\64\0\2\2\3\3\2\3\4\5\5\0\0\5\0\5\0\0\221\0\0\1\230 \4\200\134%\11\255tT"
"R\271RI(\6\252\334T\31)\7\252\134bJ\12+\7\233\345\322J\0,\5\221T\4-\5\213"
"f\6.\5\211T\2/\6\244\354c\33\60\10\254\354T\64\223\2\61\7\353\354\222\254\6\62\11\254l"
@ -170,7 +170,7 @@ const uint8_t velvetscreen[437] U8G2_FONT_SECTION("velvetscreen") =
"\7p\10\255\364V\266\323\2q\7\255\364\216\257\5r\10\253d\242\32*\2t\6\255t\376#w\11"
"\255\364V\245FN\13x\6\233dR\7\0\0\0\4\377\377\0";
const uint8_t stkL[569] U8G2_FONT_SECTION("stk-l") =
const PROGMEM uint8_t stkL[569] U8G2_FONT_SECTION("stk-l") =
"\25\0\4\4\4\5\2\1\6\17\27\1\0\27\0\0\0\1\77\0\0\2\34%'\17\37\313\330R#&"
"\32!F\14\211I\310\24!\65\204(MF\21)Cd\304\10\62b\14\215\60Vb\334\20\0/\14"
"\272\336\336d\244\350\263q\343\0\60\37|\377\12\32\25\17\2\35\263\253ChD\30\21bB\14\242S"
@ -649,8 +649,7 @@ void loadState() {
addr = addr + sizeof(extClockPPQN);
EEPROM.get(addr, reverseEnc);
} else {
//calibrateCVs();
saveState();
saveState(); //write default values to EEPROM
EEPROM.write(1023, memCode);
}
}
@ -663,6 +662,7 @@ void reboot() {
void calibrateCVs() {
CV1Calibration = analogRead(ANALOGUE_INPUT_1_PIN);
CV2Calibration = analogRead(ANALOGUE_INPUT_2_PIN);
//saveState();
showDone = true;
updateScreen();
}

View File

@ -64,6 +64,8 @@ void checkInputs() {
} else if (displayScreen == 2 && menuItem == 2) {
reverseEnc = !reverseEnc;
saveState();
showDone = true;
updateScreen();
} else if (displayScreen == 2 && menuItem == 3) {
EEPROM.put(1023, memCode - 1);
reboot();

View File

@ -6,7 +6,7 @@ void updateScreen() {
byte width;
//String textToShow;
String valueStr;
char valueChar[16];
//char valueChar[16];
u8g2.setDrawColor(1);
if (displayScreen == 0) {
@ -39,11 +39,11 @@ void updateScreen() {
} else if (i == 3 && masterClockMode == 0) {
valueStr = "RANGE:";
}
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
if (menuItem == i && insideTab) {
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, width, 1, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, width, 1, 2, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW0, width, 1, 2, valueChar);
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW0, width, 1, 2, valueStr.c_str());
}
}
if (masterClockMode != 0 && menuItem == 0) { //to make main param non selectable for external clock
@ -72,14 +72,14 @@ void updateScreen() {
valueStr = String(bpmModulationRange * 10);
}
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
if (menuItem == i && insideTab && (menuItemSelected || shiftBtnPushed)) {
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1, 26, 2, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1, 26, 2, 2, valueStr.c_str() );
} else if (menuItem == i && insideTab && (!menuItemSelected || !shiftBtnPushed)) {
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, 26, 2, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, 26, 2, 2, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW0, 26, 2, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW0, 26, 2, 2, valueStr.c_str() );
}
}
@ -141,11 +141,11 @@ void updateScreen() {
} else if (i == 3) {
valueStr = "MOD:";
}
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
if (menuItem == i && insideTab) {
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, width, 1, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, width, 1, 2, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW0, width, 1, 2, valueChar);
u8g2.drawButtonUTF8(leftOffset, 8 + (i-1) *11, U8G2_BTN_BW0, width, 1, 2, valueStr.c_str());
}
}
@ -178,18 +178,18 @@ void updateScreen() {
valueStr = "CV2";
}
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
if (i == 2 && channels[displayTab - 1].mode == 2) { //EDIT PATTERN thing
if (menuItem == i && insideTab) {
u8g2.drawBox(leftOffset + 54, ((i-1) * 11), 11, 11);
}
} else {
if (menuItem == i && insideTab && (menuItemSelected || shiftBtnPushed)) {
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1, 26, 2, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1, 26, 2, 2, valueStr.c_str() );
} else if (menuItem == i && insideTab && (!menuItemSelected || !shiftBtnPushed)) {
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, 26, 2, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW1|U8G2_BTN_INV, 26, 2, 2, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW0, 26, 2, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset + 37, 8 + (i-1) *11, U8G2_BTN_BW0, 26, 2, 2, valueStr.c_str() );
}
}
}
@ -198,17 +198,17 @@ void updateScreen() {
leftOffset = 29;
width = 55;
if (channels[displayTab - 1].mode == 0) {
valueStr = "SUBDIVISION";
valueStr = F("SUBDIVISION");
} else if (channels[displayTab - 1].mode == 1) {
valueStr = "SKIP CHANCE";
valueStr = F("SKIP CHANCE");
} else if (channels[displayTab - 1].mode == 2) {
valueStr = "PATTERN";
valueStr = F("PATTERN");
}
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0)) {
u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueChar );
u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW0|U8G2_BTN_HCENTER, width, 1, 2, valueChar );
u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW0|U8G2_BTN_HCENTER, width, 1, 2, valueStr.c_str() );
}
if (channels[displayTab - 1].mode == 0) {
@ -226,14 +226,14 @@ void updateScreen() {
valueStr = "B" + String(channels[displayTab - 1].seqPattern - 7);
}
}
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
u8g2.setFont(stkL);
if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0 && (menuItemSelected || shiftBtnPushed))) {
u8g2.drawButtonUTF8(leftOffset, 28, U8G2_BTN_BW1|U8G2_BTN_HCENTER, width, 0, 3, valueChar );
u8g2.drawButtonUTF8(leftOffset, 28, U8G2_BTN_BW1|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() );
} else if (insideTab && menuItem == 0 && !menuItemSelected) {
u8g2.drawButtonUTF8(leftOffset, 28, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueChar );
u8g2.drawButtonUTF8(leftOffset, 28, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(leftOffset, 28, U8G2_BTN_BW0|U8G2_BTN_HCENTER, width, 0, 3, valueChar );
u8g2.drawButtonUTF8(leftOffset, 28, U8G2_BTN_BW0|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() );
}
}
@ -325,23 +325,23 @@ void updateScreen() {
for (byte i = 0; i <= lastMenuItem; i++) {
switch(i) {
case 0:
valueStr = "CALIBRATE CV";
valueStr = F("CALIBRATE CV");
break;
case 1:
valueStr = "ROTATE SCREEN";
valueStr = F("ROTATE SCREEN");
break;
case 2:
valueStr = "REVERSE ENC";
valueStr = F("REVERSE ENCODER");//"REVERSE ENC";
break;
case 3:
valueStr = "FULL RESET";
valueStr = F("FULL RESET");
break;
};
valueStr.toCharArray(valueChar, 16);
//valueStr.toCharArray(valueChar, 16);
if (menuItem == i) {
u8g2.drawButtonUTF8(8, 19 + (i*11), U8G2_BTN_BW0|U8G2_BTN_INV, width, 2, 3, valueChar );
u8g2.drawButtonUTF8(8, 19 + (i*11), U8G2_BTN_BW0|U8G2_BTN_INV, width, 2, 3, valueStr.c_str() );
} else {
u8g2.drawButtonUTF8(8, 19 + (i*11), U8G2_BTN_BW0, width, 2, 3, valueChar );
u8g2.drawButtonUTF8(8, 19 + (i*11), U8G2_BTN_BW0, width, 2, 3, valueStr.c_str() );
}
}
}