Pages: [1]   Go Down
Author Topic: Hex in RGB umrechnen  (Read 734 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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-grin
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.
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 172
Posts: 3236
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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-grin
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.

Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 172
Posts: 3236
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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:
 
}
« Last Edit: March 26, 2013, 07:45:09 am by jurs » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

danke genau sowas habe ich gesucht :-)
Logged

Pages: [1]   Go Up
Jump to: