Forum: Projekte & Code LPD8806 RGB LED Strip Ansteuerung


von Marcus O. (marcus6100)


Angehängte Dateien:

Lesenswert?

Kleine C++ Klasse zur Ansteuerung eines LPD8806 RGB LED Strip mit 
diversen Effekten inklusive Demoprogramm.

Für Atmega103L oder Atmega1284P, eigentlich egal solange MOSI und SCK
mit dem Strip verbunden sind und die SPI Initialisierung entsprechend
angepasst wird.

Dies hat jetzt nicht den Anspruch perfekt zu sein, aber aufgrund einer
Anfrage veröffentliche ich den aktuellen Stand schonmal hier.

Für avr-gcc.

von futuretec (Gast)


Lesenswert?

Hallo Marcus,

dein Code sieht echt super aus zum Testen der LPD8806 Ketten.
Leider bin ich was C/C++ Code angeht absoluter Neueinsteiger und finde 
mich derzeit in der AVR Welt noch nicht in allzu großer Tiefe zurecht.

Kannst du evtl. "kurz" die Portierung auf einen ATmega16 oder 32 
schreiben bzw. mir hilfreiche Tipps geben?
Habe zwar versucht die Definitionen des SPI und UART auf den m16 
umzubiegen, jedoch bin ich damit leider gescheitert.

Vielen Dank für deine Hilfe!
Grüße
futuretec

von marcus6100 (Gast)


Lesenswert?

Hi,
im Prinzip sollte das recht einfach an einen anderen Controller 
anzupassen sein.

Erstmal im Makefile diese Einträge an deinen Controller anpassen:

MCU = atmega103
F_OSC = 6000000

Danach dann in uart.c und spi.c einen entsprechenden Abschnitt analog zu

#elif defined(_AVR_ATmega1284P_)

für deinen Controller einfügen.

Ich weiss leider nicht was bei dir schief geht, eigentlich sollte der 
atmega103 recht ähnlich zu deinen beiden Controllern sein. Und beim SPI
init ist nur wichtig das SCK, MISO und MOSI auf Ausgang konfiguriert 
werden.

von R. H. (snapper)


Angehängte Dateien:

Lesenswert?

marcus6100 schrieb:
> im Prinzip sollte das recht einfach an einen anderen Controller
> anzupassen sein.

Hallo marcus6100

habe ein ähnliches Projekt vor und leider von AVR und C Programmierung 
null Ahnung. Kannst du dir das mal ansehen, ob eine Portierung des Codes 
von z.Zt. Attiny und HC595 auf einen Atmega8 mit nicht allzu großem 
Aufwand möglich ist ? es werden nur 10 RGB Leds verwendet. Das 
Multiplexing müßte denke ich von seriell auf parallel geändert werden. 
Die neue Portzuordnung befindet sich in der xls Datei.
Alle Informationen habe ich mal in der Zip Datei zusammengefasst.

Gruß

von marcus6100 (Gast)


Lesenswert?

Hallo snapper,

viel Ähnlichkeit hat dein LED strip nicht mit meinem, bei weiteren 
Fragen
solltest du deshalb im µC & Elektronik Forum einen neuen Thread 
aufmachen.

Die Portierung deines Projekts sollte mit recht wenig Aufwand auf einen
Atmega8 möglich sein, zur Änderung des Multiplexing musst du auch nur
fillShiftRegisters() und die Makros RED_OFF() bis FETS_OFF() anpassen.
Ich empfehle den urspünglichen Autor der Software um Hilfe zu bitten.

Mir ist aufgefallen das die Beschaltung von PD3 mit dem niederohmigen
R1/R2 Spannungsteiler vermutlich ein Fehler ist weil die Spannung am
Portpin und der Strom zu hoch sind, ausserdem würde ich damit an einen
ADC Eingang gehen.

von Martin R. (m-joy)


Lesenswert?

Guten Tag,

ist es möglich dass du deinen Schaltplan postest? ich wüsste gerne wie 
man diese Strips an einen uC schließt wenn man Sie mit hardware SPI 
steuern möchte. Welchen MHz Tankt brauche ich mindestens, um 5m 
anzusteuern?


Grüße

von marcus6100 (Gast)


Lesenswert?

Hallo Martin,

es gibt keinen Schaltplan.

Du musst MOSI (Daten) und SCK (clock) des AVR mit dem LED Strip 
verbinden,
sowie VCC und GND.

Der Takt ist recht unkritisch, nur der Regenbogen Effekt ist etwas
langsam mit einem AVR mit 6 MHz. Ich habe aber eine optimierte Version
die ich noch nicht veröffentlicht habem.

Wenn möglich würde ich einen AVR mit 16 oder 20 MHz Takt nehmen.

von Martin R. (m-joy)


Lesenswert?

cool... so einfach ist das .... ? das ist ja n ding =) dann werd ich 
mich mal dran machen hehe. hab leider noch keine erfahrung mit SPI daher 
panik

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.