mein Name ist Chris und ich bin ein Neuling auf dem Gebiet der Microcontroller.
Eigentlich bin ich gelernter Industriemechaniker, möchte mich aber zukünftig noch schulisch weiterbilden
und deshalb versuche ich momentan im diesem Bereich Erfahrungen zu sammeln.
Jedenfalls möchte ich einen NEOPIXEL LED Streifen von Adafruit (WS2811)
mit einem Arduino MICRO (MEGA32U4) mit Hilfe von fastSPI ansteuern.
Der LED Streifen besteht aus 75 LEDs und bekommt 5V aus einem 5VDC/3A Netzteil aus der Steckdose.
Der MICRO bekommt seinen Saft aus dem USB-Kabel.
Den Sketch habe ich mir hier geladen: http://funkboxing.com/wordpress/?p=1366
Die Datenleitung "DIN" ist mit dem Pin D5 auf dem MICRO verbunden.
In dem Sketch habe ich die Anzahl der LED-Pixel auf 75 korrigiert,
sobald ich den Sketch hochlade fangen die LEDs auch zu leuchten an, jedoch mit einem Flimmern,
bei dem man als Epileptiker garantiert Probleme bekäme.
Ich kann richtige Ansätze von Übergängen erkennen, allerdings leuchten zwischendurch auch noch andere LEDs unkontrolliert auf,
daher tippe ich auf ein Taktproblem. In den ganzen Library Files von fastSPI konnte ich leider nichts finden um evtl.
auch andere Frequenzen einzustellen.
Daher meine Frage an Euch:
Worauf muss ich noch achten, und was habe ich falsch gemacht?
Fehlen noch Boardspezifische Einträge irgendwo in der Library?
Ich hoffe Ihr könnt mir weiterhlefen, vielen Dank im Voraus.
die FastSPI Bibliothek ist nicht für den Microcontroller ATmega32U4 geschrieben.
Die Schaltzeiten für die Ansteuerung des WS2811/12 sind sehr eng einzuhalten Timingparameter (Periodendaurer 1,25µSec und verschiedenes Taktverhältnis für L bzw H , Akzeptierte Fehler im Timing unter 150nSec bei 62 nSec Systemtakt (16MHz)) http://www.adafruit.com/datasheets/WS2811.pdf Seite 3
Diese Genauigkeiten des Timings kann man nur durch Assemblerprogrammierung erhalten. Bie Assemblerprogrammierung ist sehr spezifisch für das Controllermodell zugeschnitten weil alle direkte Zugriffe auf Register / Speicher vom jeweiligen Modell abhängen.
Vielen Dank für die schnelle Antwort.
dass es mit dem MICRO generell nicht funktioniert hätte ich nicht erwartet, aber vllt. kann ich ihn noch zurückgeben und mir evtl, einen Arduino Mini mit dem Atmega328 kaufen.
Aber mal davon abgesehen habe ich den gesamten Aufbau mit einem UNO, welcher noch hier rumlag versucht nachzustellen, um zu sehen ob es damit funktioniert.
Leider kam ich hier zum selben Ergebnis wie auch mit dem Micro, ausser dass das Signal diesmal aus Pin D13 kommt.
Gibt es dazu irgendwelche Ideen?
Also müsste ich praktisch nur vom Massepol vom Strip, welcher mit dem Netzteil verbunden ist, einen Abzweig zum Ground des Controllers schalten? Habe ich das so richtig verstanden?
ja, immer massen verbinden, auch wenn die spannung unterschiedlich ist (was in Deinem fall ja nicht zutrifft). die ws2812-strips flackern sonst, auch wenn das muster erkennbar ist, wie bei Dir.
chriseast:
Alles klar, das hat wunderbar geklappt mit dem UNO und dem MICRO.
Ich habe auch diese Eindraht Stripes, und mich deshalb damit befasst.
Das Posting von Uwe bezüglich des MICRO hatte ich auch anzweifelt, habe mich aber nicht getraut zu posten.
Weil er meist recht hat !
chriseast:
Alles klar, das hat wunderbar geklappt mit dem UNO und dem MICRO.
Ich habe auch diese Eindraht Stripes, und mich deshalb damit befasst.
Das Posting von Uwe bezüglich des MICRO hatte ich auch anzweifelt, habe mich aber nicht getraut zu posten.
Weil er meist recht hat !
Ja, meist habe ich recht, aber nicht immer. Der ATmega328 und der ATmega32U4 sind zwei Controller mit ziemlich verschiedenen integrierten Periferieblöcken. Da kann eine Bibliothek die so auf Hardwareebene funktioniert wie die FastSPI leicht mal nicht funktionieren.
Ist kein Problem Uwe, irren ist menschlich und aus diesem Grund besucht man ja auch ein Forum, bei dem man mehrere Antworten und Meinungen bekommen kann.