Hex in RGB umrechnen

Ich arbeite im Moment mit RGB Leds welche ich über pwm steuer. Ich habe nun 3 Werte von 0...255 sollte eucht glaube ich bekannt sein :smiley:
nun meine Frage wie kann ich z.B #ffffff umrechnen in 255,255,255?

Meine erste überlegung ist diesen String mit 6 Zeichen zu teile in 6 Strings, dann wäre das mit dem umrechnen kein Problem mehr.

fl3xizzz:
Ich arbeite im Moment mit RGB Leds welche ich über pwm steuer. Ich habe nun 3 Werte von 0...255 sollte eucht glaube ich bekannt sein :smiley:
nun meine Frage wie kann ich z.B #ffffff umrechnen in 255,255,255?

Meine erste überlegung ist diesen String mit 6 Zeichen zu teile in 6 Strings, dann wäre das mit dem umrechnen kein Problem mehr.

R, G und B sind drei Werte, also teilst Du die 6 Zeichen auch in DREI Werte auf.

#FFFFFF teilt sich also in FF, FF und FF auf.
Oder #AABBCC in AA, BB und CC.

das war mir ja auch klar das ich das so teilen muss, aber wie kann ich den String denn teilen gibt es da eine Funktion?

fl3xizzz:
das war mir ja auch klar das ich das so teilen muss, aber wie kann ich den String denn teilen gibt es da eine Funktion?

Es gibt hunderte von Funktionen in der ARV libc, und wenn Du eine von den Standardfunktionen etwas abweichende Konvertierung benötigst, mußt Du Dir die Funktion selber schreiben.

Beispiel für so eine selbstgeschriebene getRGB-Funktion mit Beispiel-Sketch anbei.

void getRGB(char* text, byte &r, byte &g, byte &b)
{
  long l=strtol(text+1,NULL,16);
  r=l>>16;
  g=l>>8;
  b=l;
}


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  char hexString[8]="#A1B2C3";
  byte r,g,b;
  Serial.println(hexString);
  getRGB(hexString,r,g,b);
  Serial.print("R: ");Serial.println(r);
  Serial.print("G: ");Serial.println(g);
  Serial.print("B: ");Serial.println(b);
}


void loop() {
  // put your main code here, to run repeatedly: 
  
}
1 Like

danke genau sowas habe ich gesucht :slight_smile: