Hallo liebe mitarduiniere,
ich habe diesen Code von einem Freund gekriegt und möchte gerne mit ihm arbeiten.
Mit ihm kann man über das Serial Display Klartextbefehle schicken.
Diese beginnen mit "/", dann dem Namen eines Befehls (4zeichen) und dann kann man 3 4-Stellige werte übermitteln.
Zum Abschluss folgt ein"-" also zum Beispiel /prog100020003000-
Über das Serielle Display diese Befehle zu schicken funktioniert super und sie werden auch weiterverarbeitet, doch wenn ich sie von einem anderen Arduino schicken, passiert nichts, obwohl sie auf dem Seriellen Display ausgelesen exakt gleich aussehen.
Hier ist der Code zum Auslesen der Befehle:
char receivedString[17];
char receivedCommand[5];
char receivedParameter1[5];
char receivedParameter2[5];
char receivedParameter3[5];
boolean commandCatch = false;
int commandLength = 0;
void setup()
{
Serial.begin(4800);
Serial.println("EXECUTING...");
Serial.println("COMMANDS HAVE TO CONSIST OF 8 CHARACTERS.");
Serial.println("THERE HAS TO BE AN / IN FRONT OF EVERY COMMAND AND A - AFTER EVERY COMMAND.");
}
void loop()
{
if(Serial.available() > 0)
{
int receivedByte = Serial.read();
char receivedChar = char(receivedByte);
processReceivedChar(receivedChar);
}
void executeCommand()
{
int receivedValue1 = 0;
int receivedValue2 = 0;
int receivedValue3 = 0;
for(int i = 0; i<4; i++)
{
switch(i)
{
case 0:
{
receivedValue1 = receivedValue1 + (int(receivedParameter1_)-48)1000;_
receivedValue2 = receivedValue2 + (int(receivedParameter2_)-48)1000;
receivedValue3 = receivedValue3 + (int(receivedParameter3)-48)1000;
break;
}
case 1:
{
receivedValue1 = receivedValue1 + (int(receivedParameter1)-48)100;
receivedValue2 = receivedValue2 + (int(receivedParameter2)-48)100;
receivedValue3 = receivedValue3 + (int(receivedParameter3)-48)100;
break;
}
* case 2:
{
receivedValue1 = receivedValue1 + (int(receivedParameter1)-48)10;
receivedValue2 = receivedValue2 + (int(receivedParameter2)-48)10;
receivedValue3 = receivedValue3 + (int(receivedParameter3)-48)10;
break;
}
* case 3:
{
receivedValue1 = receivedValue1 + (int(receivedParameter1)-48);
receivedValue2 = receivedValue2 + (int(receivedParameter2)-48);
receivedValue3 = receivedValue3 + (int(receivedParameter3)-48);
break;
}
}
}
if(strcmp(receivedCommand,"setP")==0) //Richtung*
* {
R = map(receivedValue1,1000,2023,0,1023);
G = map(receivedValue2,1000,2023,0,1023);
B = map(receivedValue3,1000,2023,0,1023);
}
if(strcmp(receivedCommand,"prog")==0) //Richtung*
* {
Programm = receivedValue1-1000;
}
}
(es sind eventuell noch teile meines Hinzugefügten Codes dabei, auf jeden Fall werden die Werte je nach Befehl in receivedValue[1,2,3]
gespeichert, es funktioniert auch wunderbar)
und hier ist mein Code zum senden von Befehlen auf dem anderen Arduino.
{
mySerial.print("/setP");
mySerial.print(R);
mySerial.print(G);
mySerial.print(B);
mySerial.println("-");
}*
R,G,B sind ints von 1000-2032 und auf wenn ich mir anschaue, was er da sendet sieht es auch exact so aus wie die Befehle die ich Manuell sende und funktionieren.
Wenn mir jemand helfen kann wäre ich sehr dankbar
_