Microsoft Access Color Code to RGB

Moin Leute,

ich möchte einen Teil eines LED Stripes stufenweise dimmen.
Dazu wollte ich die RGB Werte über eine Funktion einlesen, verändern und wieder ausgeben.

Leider liegt die zu dimmende Farbe in einem "uint32_t Microsoft Access Color Code" vor.

Aus einem Hex wert könnte ich mir durch Shiften die Werte herausziehen, aber wie mache ich das mit Microsoft Access Color Codes? :o

Welcher String? Ich dachte es ist ein 32 Bit Integer? Wie sieht der genau aus? Bitte mehr Informationen über das Format.

Sorry, klar, ist natürlich ein 32bit int und kein string... :roll_eyes:
Hab das oben mal geändert

Das ganze stammt aus der Adafruit_NeoPixel.h

Ich habe im Netz dazu gefunden, das die Farbteile in dezimal und in der Reihenfolge B, G, R vorliegen.

Angeblich sollte das der Code für Blau sein 16711680. Bei mir ist es aber Rot.

Beispielcodes die ich auslese:

Rot (255, 0, 0): 16711680

Grün (0, 255, 0): 65280

Blau (0, 0, 255): 255

Sp4rtan:
Leider liegt die zu dimmende Farbe in einem "uint32_t Microsoft Access Color Code" vor.

Aus einem Hex wert könnte ich mir durch Shiften die Werte herausziehen, aber wie mache ich das mit Microsoft Access Color Codes? :o

Ein uint32_t ist auf jeder Plattform ein 32-Bit Wert, bestehend aus 4 Bytes.

Und wenn Du einen RGB-Wert in 4 Bytes überträgst, dann dürften diese 4 Bytes ziemlich sicher das enthalten
1 Byte nix
1 Byte R-Wert
1 Byte G-Wert
1 Byte B-Wert
Die Reihenfolge mußt Du ggf. ausknobeln, z.B. durch Übertragen/Empfangen bekannter Werte.
Bei 4 Bytes, die 3 Werte enthalten, gibt es aber nicht sehr viele Möglichkeiten.

16711680 = 0xFF0000
65280 = 0x00FF00

Ist doch genau was man erwartet. Da ist nichts besonderes dran

Danke für eure Hilfe!

Naja, konvertieren muss ich es trotzdem.
Muss mich da morgen mal ein wenig belesen.

Binär zu HEX zu RGB sind glaub ich dann doch ein paar mehr Zeilen.

Aber jetzt kann ich mit den Zahlen wenigstens was anfangen :slight_smile:

Was du eher willst ist ein Dezimal -> Hex Konverter. Du kannst dir aber auch auf dem Arduino Zahlen in Hex anzeigen:

Serial.println(value, HEX);

Macht lediglich keine führende Nullen

Hex hat den Vorteil, dass zwei Ziffern 8 Bit sind. Bei RGB hat man also 3 * 2 Ziffern.

Hex, Dezimal oder Binär ist übrigens nur für dich als Mensch relevant. Für den Prozessor ist das alles Binär. Der Rest ist lediglich eine Sache der Darstellung und Lesbarkeit.