Variablen verketten

Moin,

ich habe ein kleines Problem und komme einfach nicht weiter... Ich habe ein Array mit 3 Werten drin, diese Werte möchte ich in eine neue Variable hintereinander schreiben. Hier ein Bsp.:

char red[3];

void setup()
{                
  Serial.begin(9600);
}

void loop()
{   
  Serial.println( String(red[1]) + String(red[2]) + String(red[3]) );

  delay(1000);
  
  if(Serial.available() == 9)
  {
    red[0] = Serial.read();
    red[1] = Serial.read();
    red[2] = Serial.read();
  }
}

Ich schicke aus Python herraus 3 Bytes ab (255). diese 3 kommen ins Array an je eine Stelle. Jetzt möchte ich diese 3 Variablen zu einer zusammen fügen, um sie an eine Funktion zu übergeben. Ich möchte also aus: red[0] = 2; red[1] = 5; red[2] = 5; wieder: 255 machen.

Ich habe schon gegoogelt und rumprobiert wie ein blöder, doch bekomme ich es nicht hin. Könnt ihr mir weiter helfen?.. Ich wäre auch dankbar...

Grüße, Valium

Ein array aus chars ist ja gewisserweise ein String (also eine Zeichenkette, nicht zu verwechseln mit dem Arduino String Objekt der noch zusätzliche Möglichkeiten bietet aber auch RAM frisst). Das char array muss nur noch mindestens ein char länger sein und auf '\0' enden.

char red[4];

...

red[3] = '\0';
Serial.println(red);

(Edit: Link geändert. Meinte natürlich String Objekt nicht string Typ).

Danke! Oft ist es das einfachste....

Das ganze noch durch atoi() jagen und man hat einen Integer, bzw die Nummer die der String darstellt.

char red[4];

...

red[3] = '\0';
Serial.println( atoi(red) );

Vielen Dank! Grüße, Valium

Aber wenn Du nur ein einzelnes Byte brauchst, dann schick doch in python auch nur das eine Byte ab. Also statt 3 Zeichen "255" einfach den Byte-Wert 255. Dann sparst Du Dir den Aufwand das auf dem Arduino wieder zusammenzupuzzeln.

Wenn du integer-werte hast:

int a = 2;
int b = 5;
int c = 5;

int zahl = (a*100) + (b*10) + c; // = 255