Hi,
ich möchte mir aktuell ein Atmolight aufbauen.
Die Platine dazu steht auch bereits und funktioniert soweit.
Jeder Led (R,G und B) kann ich einen Helligkeitswert zwischen 0 und 255 zuweisen.
Nun habe ich ein Programm gefunden, welches mir die passende Farbdaten ausgeben soll. (AtmoWin)
Auf deren Wikiseite habe ich folgendes Protokoll gefunden.
Interesse habe ich nur an dem Summenkanal (Center) der Bytes 4-6.Serielles Protokoll
Baudrate: 38400 bps Parity: None Datenbits: 8 Stopbits: 1
Nachrichtenformat:
Byte Beschreibung
0 0xFF: Startbyte
1 0x00: Startkanal (low byte)
2 0x00: Startkanal (high byte)
3 0x0F: Anzahl Kanäle (15 = 5 * 3 (R, G, B))
4-6 Summenkanal R, G, B (Center)
7-9 linker Kanal R, G, B (Left)
10-12 rechter Kanal R, G, B (Right)
13-15 oberer Kanal R, G, B (Top)
16-18 unterer Kanal R, G, B (Bottom)
Beispiel:
Folgende Nachricht (in hexadezimaler Darstellung) gibt auf allen Kanälen hellstes Rot aus:
0xFF 0x00 0x00 0x0F 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00
Wie könnte ich das Codetechnisch umsetzen ? (Habe noch nicht so oft mit der RS232 Schnittstelle gearbeitet)
Ich stelle mir das gerade so vor:
Würde das so gehen, oder habe ich da einen Denkfehler drin ?Code:Isrlable: Incr E_id If E_id = 5 Then Led_r = Udr If E_id = 6 Then Led_g = Udr If E_id = 7 Then Led_b = Udr If E_id = 19 Then E_id = 0 Return
Was mich dann noch werwirrt ist das Beispiel:
0xFF 0x00 0x00 0x0F 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00 0xFF 0x00 0x00
Ich brauche ja einen Zahlenwert zwischen 0 und 255 kann ich die Hexdezimal irgendwie ich einen solchen Zahlenwert umwandeln ?
Ich hoffe schonmal auf Hilfe![]()
mfg Yannic
Lesezeichen