LPD8806 RGB LED Strip Ansteuerung

#2730574
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.
Angehängte Dateien:
Gast #2762405
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
Gast #2775704
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.
#2777898
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ß
Angehängte Dateien:
Gast #2778024
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.
Gast #2848174
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren