- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 63

Thema: Farben nach R,G,B umwandeln in 4-stell. hex-code?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ich hatte das hier schon geschrieben (Beirag #20): https://www.roboternetz.de/community...l=1#post646541

    Ich denke, er führt die Berechnung mit 8 Bit aus.
    Code:
    so:  (uint8_t)(color16 / 2048 )*8;
    Du brauchst aber 16 Bit während der Berechnung, weil zumindest Dein Farbwert color16 ja 16 Bit umfasst.

    Du müsstest hinterher eine Umwandlung vornehmen
    Code:
    (uint8_t)R = (color16 / 2048 )*8;
    Aber das funktioniert nicht!

    Deshalb habe ich jetzt das probiert, da gibt es kein Gemecker:
    Code:
    void Color16bit2colorRGB(uint16_t color16, uint16_t &R, uint16_t &G, uint16_t &B) {
    
       R = (color16 / 2048)*8; ;
       G = (color16 & 2016)/8;;
       B = (color16 & 31)*8;
       R = (uint8_t)R;
       G = (uint8_t)G;
       B = (uint8_t)B;
       
       Serial.println("");
       Serial.println("Unterprogramm color16 zu RGB:");
       Serial.println( (String)"color16="+(String)color16);
       Serial.println( (String)"R="+(String)R);
       Serial.println( (String)"G="+(String)G);
       Serial.println( (String)"B="+(String)B); 
    }
    Geändert von Moppi (10.09.2018 um 18:22 Uhr)

  2. #2
    HaWe
    Gast
    bittebittebitte mal selber testen!

    - - - Aktualisiert - - -

    ...ach so, jetzt habe ich deinen Einwand verstanden!
    Klammer ums ganze, dann erst casten!

    - - - Aktualisiert - - -

    nein, stimmt auch nicht dann.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Schau noch mal im letzten Beitrag vor Deinem. Habe es geändert.

    Allerdings glaube ich auch, dass das
    Code:
    R = (uint8_t)R;
    überflüssig ist. Weil der kleinste Typ, den der Arduino kennt, ist: integer
    Er würde den von Dir geglaubten 8-Bit-Wert vermutlich als Integer ablegen/speichern. So, wie er nach der Berechnung schon vorliegt.

  4. #4
    HaWe
    Gast
    das habe ich verstanden und auch so gemacht.
    aber nein, der kleinste Wert ist uint16_t , nicht int, denn int ist bei mir int32_t (ARM Cortex M0 = Arduino M0/Zero), deshalb ist es immer explizit auf uint16_t oder uint8_t gecastet.

    Tipps sind wirklich sehr willkomen, aber bitte immer vorher selber testen!

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Na ja, ich hatte geschrieben: "vermutlich" und vorher schon, dass ich mich mit den Typen nicht so genau bei den Teilen auskenne.

    Aber um das aufzuklären: Gibt es noch ein Problem?
    Und welchen Tipp sollte ich testen - was soll ich da testen? - k.A.


  6. #6
    HaWe
    Gast
    Der Code soll mit dem expliziten Casting damit eben auch auf 8bit Arduinos lauffähig sein.

    Teste einfach meinen Testcode, in den du deine Algorithmen einsetzt, du bekommst dann ja über Serial die Debug-Informationen zur Kontrolle.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Da habe ich noch byte gefunden:

    Code:
       R = byte((color16 / 2048)*8);
       G = byte((color16 & 2016)/8);
       B = byte((color16 & 31)*8);

  8. #8
    HaWe
    Gast
    das ist doch wurscht, byte == uint8_t

    bitte testen und Serial Meldungen posten!

Ähnliche Themen

  1. String nach Array umwandeln (?)
    Von slavezero im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 07.06.2012, 17:21
  2. Chips die nach Seriell umwandeln
    Von dundee12 im Forum Elektronik
    Antworten: 13
    Letzter Beitrag: 12.08.2010, 09:08
  3. word nach byte umwandeln
    Von magic33 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 21.02.2007, 16:04
  4. C-Code in hex umwandeln
    Von elkokiller im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 16.02.2006, 09:41
  5. PAL-Videosignal irgendwie nach seriell umwandeln?
    Von Trabukh im Forum Elektronik
    Antworten: 39
    Letzter Beitrag: 14.09.2005, 13:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress