Go Down

Topic: Hex in RGB umrechnen (Read 800 times) previous topic - next topic

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 :D
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.

jurs


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 :D
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.


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?

jurs

#3
Mar 26, 2013, 01:37 pm Last Edit: Mar 26, 2013, 01:45 pm by jurs Reason: 1

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.
Code: [Select]

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:
 
}

fl3xizzz

danke genau sowas habe ich gesucht :-)

Go Up