ES simuliert ein bestehendes Protokoll:
Eingehende Datenpakete lesen und falls unwichtig zurücksenden ,
Regelmässig den Potiwert senden ,
Identität bzw. noch angeseckt bestätigen ,
Poti ändert sich, sofort senden.
Sich nicht durch die Rückmeldung aufhängen ( Dauerschleife) ( schwierigste Nuss für mich)
Aber ich hab soweit hingebogen, dass es läuft und in den Adriuno rein passt.
Danke nochmals für die bisherige Hilfe!!
Letztes Problem: wie sich byte 7 errechent, siehe anders Posting .
int potipin = (A0);
byte lastpotiwert;
byte potiwert;
int vpoti;
unsigned long currenttime;
unsigned long lasttime;
unsigned long lasttimepoti;
byte SB[30];
byte SBL;
byte lastSBL;
byte wert[8] = { 49,5,1,1};
byte start[4] ={ 49,5,1,1};
void setup() {
pinMode( potipin, INPUT);
Serial.begin(57600);}
void loop() {
currenttime = millis();
vpoti = analogRead(A0);
potiwert = vpoti/4;
byte i = potiwert;
if (potiwert != lastpotiwert){
if((currenttime -lasttimepoti) > 50){
Serial.write(start, 4);
Serial.write(value[i], 4);
for ( int j=4; j<8; j++){
wert[j]= value[i][j-4];}
lasttimepoti= currenttime;}
lastpotiwert = potiwert;}
if (( currenttime -lasttime ) > 500){
Serial.write(start, 4);
Serial.write(value[i], 4);
for ( int j=4; j<8; j++){
wert[j]= value[i][j-4];}
lasttime = currenttime ;}
if (read_serial( )){
if ( SB[0]==49 && SB[1]==1 && SB[2]==0 && SB[3]==0 && SB[4]==0 && SB[5]==1 && SB[6]==0 ){
for ( int k = 0; k <(SBL-2); k++) {
Serial.write(SB[k]);}
Serial.write(5);
Serial.write(13);
Serial.write(237); // 237MW 243TT nicht fix
Serial.write(50);}
else {int vgl = memcmp(wert, SB, 8);
if ( vgl != 0 && (SBL != lastSBL) ){
pars_serial();
lastSBL = SBL; }
}
}
}
// True, wenn das Endzeichen erkannt wurde.
bool read_serial() {
static byte index;
while (Serial.available() ) {
byte c = Serial.read();
if (c == 49) { // das Starzeichen
index = 0;
}
SB[index] = c;
index++;
SBL = index;
if (c == 50 )
{ return true;}
}
return false; // Endzeichen noch nicht erreicht
}
// Array bis zum Endzeichen ausgeben
void pars_serial() {
for (int i = 0; i <=SBL; i++) {
Serial.write(SB[i]);
if (SB[i] == 50) {
return;
}
}
}