Hallo Zusammen
Hab ein kleines Problem beim ändern eines Strings.
Hab ein kleines Menü gebaut und durch mehrfaches drücken eines Keys soll man sich durchswitchen können. (wie auf alten Handys früher)
In Codeblocks läuft es, aber auf dem Arduino dann doch nicht.
Irgndwie verliert er die Position im Programm. Mit String bekomme ich es gelöst, aber soll nicht die Lösung sein.
Habt ihr ne Hilfestellung?
Folgender Sketch:
const byte PROGMEM keys[5][4][7] = {
{{"ABCDEF"}, {"abcdef"}, {"12345"}, {0x22, 0xA7, 0x24, 0x25, 0x26, 0x27, 0}},
{{"GHIJKL"}, {"ghijkl"}, {"67890"}, {0x3C, 0x3E, 0x2F, 0x5C, 0x40, 0x5E, 0}},
{{"MNOPQR"}, {"mnopqr"}, {0x2E, 0x2C, 0x3A, 0x3B, 0x21, 0x3F, 0}, {0x5F, 0x60, 0x7C, 0x7E, 0xA3, 0xA8, 0}},
{{"STUVWX"}, {"stuvwx"}, {0x2B, 0x2D, 0x2A, 0xF7, 0xB1, 0x3D, 0}, {0xA9, 0xAE, 0xAB, 0xBB, 0xB5, 0xBA, 0}},
{{'Y','Z',0xC4, 0xD6, 0xDC, 0xDF, 0}, {'y','z', 0xE4, 0xF6, 0xFC, 0xDF, 0}, {0x28, 0x29, 0x5B, 0x5D, 0x7B, 0x7D, 0}, {0xD8, 0xB4, 0xF8, 0}}
};
uint8_t key_block = 0;
uint8_t key_subpos = 0;
char msg_temp[21] = {"12345678901234567890"};
uint8_t msg_pos = 0;
void set_char_in_text(uint8_t key) {
static uint8_t key_temp = 255;
if (key_temp == key ) key_subpos += 1;
else key_subpos = 0;
Serial.print("key_subpos:");
Serial.println(key_subpos);
msg_temp[msg_pos] = keys[key][key_block][key_subpos];
key_temp = key;
}
void setup()
{
Serial.begin(9600);
Serial.print("origin:");
Serial.println(msg_temp);
for (int i = 0; i < 5; i++) {
set_char_in_text(0);
Serial.print("modded:");
Serial.println(msg_temp);
}
}
void loop()
{
;
}
CodeBlocks:
Arduino: