unsigned int a, twelve = 0b1000000000000000;
void setBit(unsigned int &target, uint16_t x, bool set) {
if (set)
target |= (1 << x);
else
target &= ~(1 << x);
target &= 0b0000111111111111; // cut 4 upper bits -> 12 bit
}
// -----------------------------------------------------
void setup() {
Serial.begin(115200);
int16_t special[] = {230, 248, 229};
int16_t i, n = 0;
int16_t numbers[30];
char letters[30];
Serial.println("int16_t letters[] = {");
for (i=97; i<123; i++)
numbers[n] = i,
letters[n++] = (char)i;
for (i=0; i<3; i++)
numbers[n] = special[i],
letters[n++] = (char)special[i];
for (i=0; i<29; i++) {
Serial.print(" "),
Serial.print(i), Serial.print(" "),
Serial.print(i%7), Serial.print(" -> "),
Serial.print(numbers[i]),
Serial.print(",\t// "),
Serial.println((char)(numbers[i]));
//Serial.println((char)(numbers[i]-32));
}
Serial.println("};");
/*
//c = toupper(c);
Serial.print(i); Serial.print(" ");
Serial.print(c); Serial.print(" ");
Serial.println(toupper(c));
*/
for (;;);
/*
230: æ
248: ø
229: å
198: Æ
216: Ø
197: Å
*/
for (int16_t i=197; i<249; i++) {
char c = (byte)i;
char b = (byte)(i-32);
if (
(i == 197) ||
(i == 198) ||
(i == 216) ||
(i == 229) ||
(i == 230) ||
(i == 248)
) {
Serial.print(i); Serial.print(" : "); Serial.write(c);
Serial.print(" "); Serial.println(b);
}
}
}
// -----------------------------------------------------
void Serial2Ints() {
String s = Serial.readStringUntil('\n');
char c = s[0];
int i = s.substring(0, 2).toInt(); i = (i>16) ? 16 : i;
setBit(twelve, i, ( twelve & (1 << i) ) ? false : true);
Serial.print(c); Serial.print(" -> "); Serial.println(i);
uint32_t bitmask = 0b0000111111111111;
//for (; bitmask; bitmask >>= 1) Serial.print(bitmask & twelve ? '1' : '0');
Serial.println(twelve, BIN);
}
void loop() {
if (Serial.available())
Serial2Ints();
}