nem kellene a 21... kezdetű szekvenciát elküldeni "start"-ként. Azt a PC küldi ki, ha jelzőlámpát akar kapcsolni.
Azt sem értem, a 'D' és 'I' felismerése után miért vársz újabb 'D' betűt itt:
ez nem fog értelmesen működni, mert csak két bájtot küld ki a PC, nem hármat.if ((input[0] == 68) & (input[1] == 73) & (input[2] == 68))
Az egészet jobb lenne bájtonként egyesével olvasni, és ha megjött a 'D' és 'I', akkor beküldeni a három bájtos gomb jelzést. Szerintem valami ilyesmi lenne a ciklus:
KódCOLON Egész kijelölése
char in1=0, in2=0, in3=0, in4=0; //ezek globalis valtozok!
while (Serial.available()) {
Serial.readBytes(input, 1); //egyszerre csak egy bajtot
in1 = in2; in2 = in3; in3 = in4; in4 = input[0]; //mindenki lep egyet
if (in3 == 'D' && in4 == 'I') { // DI parancs jott?
char out1 = (digitalRead(2) == LOW ? 0 : 1); // le van nyomva gomb?
char out2 = 0; //ezt nem hasznaljuk, mindig 0
Serial.write(out1);
Serial.write(out2);
Serial.write(out1 + out2); //ellenorzo osszeg
} else if (in1 = 0x21 && in4 == in2 + in3) {
// itt lehet a lampak bekapcsolasa in2 alapjan
}
}