int index, last;
char int2char(int n) {
return (n > 9) ? ' ' : n+'0';
}
int char2int(char c) {
return (isdigit(c)) ? int(c-'0') : -1;
}
void setup() {
Serial.begin(9600);
for (byte i=0; i<255; i++)
Serial.print(i),
Serial.print(": "),
Serial.println((char)(i+127));
last = -1;
index = 0;
}
void loop(){
if (Serial.available() > 0) {
char c = Serial.read();
if (isprint(c)) {
int val = char2int(c);
byte x = (val+48);
index = (val == last) ? index+1 : 0;
index = (index == 16) ? 178 : ((index == 182) ? 0 : index);
x = (index > 0) ? x-(index+val) : x;
Serial.print(val); Serial.print(" -> "); Serial.print(index);
Serial.print(", "); Serial.print((char)x);
Serial.print(" "); Serial.println(x);
last = val;
}
}
}