micha86
Mitglied
Hallo erstmal,
ich weiß es gibt schon diverse Controller für die Multikopter LED Steuerung, aber ich wollte dafür einfach was eigenes schreiben, schon alleine weil ich dann bezüglich der Modi's flexibler bin.
Gekauft hab ich mir dazu:
Nano V3.0 ATmega328P-AU MCU, Arduino kompatibel, USB CH340G
WS2912B LED Strips 60LEDs/m
0,25mm² Litzen in rot, schwarz und gelb
Hobbywing 3A 5V/6V BEC UBEC Eingangsspannung 5.5-26 Volt, 2-6 S Lipo SBEC Akku
Schrumpfschlauch - viel Schrumpfschläuche
Gut da ich in Sachen Microprozessoren noch ein kompletter Anfänger bin da ich aus der Webentwicklung komme, war das ganze für mich erstmal extremes Fachchinesisch. Was man allerdings schon von Anfang an lernt, ist, Copy -> Paste.
Hierfür hab ich einen guten und schön Dokumentierten Code gefunden. Das Projekt wurde von den Entwicklern eingestampft und steht nun auf Github zur Verfügung -> hier
Ganz extrem werde ich jetzt hier nicht drauf eingehen da eine gewissen Grundkenntnis einfach Voraussetzung ist und man diese sich erstmal dank Google aneignen sollte.
Dann fangen wir mal an:
1. LED Streifen auf die gewünschte länge Kürzen und die Kabel richtig anlöten ( WICHTIG: richtig anlöten mein erste Microprozessor hatte dadurch nur eine Laufzeit von ca 1 Minute )
Ich hab das ganze verlötet und dann mit Schrumpfschlauch überzogen wie man auf dem Bild erkennen kann. Ist jetzt schon im eingebautem Zustand.
2. Alle LED Streifen miteinander verlöten damit sie einen Strang ergeben
WICHTIG: Es gibt eine Richtung in die Ihr diese verbinden müsst.
siehe Bild
3. Die Verkabelung zur Platine.
Hier müssen wir jetzt beachten das wir einmal 5v vom UBEC an die Platine geben aber auch genauso die 5v vom UBEC an den ersten LED streifen weitergeben. Das ganze schleusen wir aber nicht durch die Platine sondern nehmen die 5v für die LED streifen auch vom UBEC.
Masse gehen wir einmal vom UBEC auf GND der Platine. Genauso nehmen wir die Masse der LED Streifen und gehen damit auch auf GND von der Platine.
Jetzt nehmen wir noch das (bei mir gelbe Kabel) Datenkabel von den LED streifen und gehen mit diesem auf den PIN D6.
Das wäre schon die vollständige Verkabelung für die einfache Beleuchtung.
Jetzt die Programmierung des ganzen.
Vorweg:
zum Entwickeln hab ich die 5v vom UBEC zur Platine abgezogen und nur die Masse verbunden, da der Microprozessor, wenn er über den Computer verbunden ist, über den USB Anschluss strom bekommt.
Zu erst laden wir uns mal Arduino runter. Für mich hat es soweit alles bereitgestellt was ich zum Programmieren brauche.
Danach holen wir uns die Library von Adafruit_NeoPixel.
Diese kann man sich als .ZIP downloaden (hier)
Jetzt wird die gedownloadete Library als .ZIP eingebunden. Über Sketch -> Bibliothek einbinden -> .ZIP Bibliothek einbinden. Den Pfad auswählen wo ihr die Library gespeichert hab und einfach die .ZIP Datei auswählen.
Danach gehen wir auf Werkzeugen und stellen ein welchen Microprozessor wir nutzen wollen.
Bei "Board" wählen wir "Arduino Nano" aus.
Bei "Prozessor" wählen wir natürlich "ATmega328"
Und bei Port müsst ihr schauen welcher COM Port bei euch genutzt wird. Könnt ihr über den Gerätemanager rausfinden.
Das waren auch schon erstmal die Grundeinstellung.
Auf den Code selber werde ich soweit nicht eingehen da ich dies erstmal zur Grundkenntnis Voraussetzung. Wenn ich es zeitlich schaffe kann ich eine Erklärung des Codes noch einfügen.
Jetzt muss der Code nur noch auf den Microprozessor geschrieben werden. Dafür überprüfen wir vorher einmal den Code.
Unter "Datei" ist ein schöner Haken, dieser prüft noch einmal den Code ob nicht vergessene Variablen sich versteckt haben oder der Code einfach an einer stelle Fehlerhaft ist.
Nach der Prüfung kann der Code durch den Button daneben einfach auf den Microprozessor geschrieben werden und es sollte dann auch schon zum Blinken anfangen.
Das Video muss ich erst noch bei YouTube hochladen und werde es vermutlich Morgen verlinken. Bis dahin noch ein wenig Geduld
Der nächste Schritt wird jetzt sein, Lichtmodus über die Fernsteuerung einstellbar. Leider tapp ich hier noch im Dunkeln und muss mich dort erst einlesen.
Anregungen und Tipps sind herzlich willkommen. Den Code dafür werde ich morgen mal Posten da ich schon weiter bin wie in dem oben gezeigten Code.
ich weiß es gibt schon diverse Controller für die Multikopter LED Steuerung, aber ich wollte dafür einfach was eigenes schreiben, schon alleine weil ich dann bezüglich der Modi's flexibler bin.
Gekauft hab ich mir dazu:
Nano V3.0 ATmega328P-AU MCU, Arduino kompatibel, USB CH340G
WS2912B LED Strips 60LEDs/m
0,25mm² Litzen in rot, schwarz und gelb
Hobbywing 3A 5V/6V BEC UBEC Eingangsspannung 5.5-26 Volt, 2-6 S Lipo SBEC Akku
Schrumpfschlauch - viel Schrumpfschläuche
Gut da ich in Sachen Microprozessoren noch ein kompletter Anfänger bin da ich aus der Webentwicklung komme, war das ganze für mich erstmal extremes Fachchinesisch. Was man allerdings schon von Anfang an lernt, ist, Copy -> Paste.
Hierfür hab ich einen guten und schön Dokumentierten Code gefunden. Das Projekt wurde von den Entwicklern eingestampft und steht nun auf Github zur Verfügung -> hier
Ganz extrem werde ich jetzt hier nicht drauf eingehen da eine gewissen Grundkenntnis einfach Voraussetzung ist und man diese sich erstmal dank Google aneignen sollte.
Dann fangen wir mal an:
1. LED Streifen auf die gewünschte länge Kürzen und die Kabel richtig anlöten ( WICHTIG: richtig anlöten mein erste Microprozessor hatte dadurch nur eine Laufzeit von ca 1 Minute )
Ich hab das ganze verlötet und dann mit Schrumpfschlauch überzogen wie man auf dem Bild erkennen kann. Ist jetzt schon im eingebautem Zustand.
2. Alle LED Streifen miteinander verlöten damit sie einen Strang ergeben
WICHTIG: Es gibt eine Richtung in die Ihr diese verbinden müsst.
siehe Bild
3. Die Verkabelung zur Platine.
Hier müssen wir jetzt beachten das wir einmal 5v vom UBEC an die Platine geben aber auch genauso die 5v vom UBEC an den ersten LED streifen weitergeben. Das ganze schleusen wir aber nicht durch die Platine sondern nehmen die 5v für die LED streifen auch vom UBEC.
Masse gehen wir einmal vom UBEC auf GND der Platine. Genauso nehmen wir die Masse der LED Streifen und gehen damit auch auf GND von der Platine.
Jetzt nehmen wir noch das (bei mir gelbe Kabel) Datenkabel von den LED streifen und gehen mit diesem auf den PIN D6.
Das wäre schon die vollständige Verkabelung für die einfache Beleuchtung.
Jetzt die Programmierung des ganzen.
Vorweg:
zum Entwickeln hab ich die 5v vom UBEC zur Platine abgezogen und nur die Masse verbunden, da der Microprozessor, wenn er über den Computer verbunden ist, über den USB Anschluss strom bekommt.
Zu erst laden wir uns mal Arduino runter. Für mich hat es soweit alles bereitgestellt was ich zum Programmieren brauche.
Danach holen wir uns die Library von Adafruit_NeoPixel.
Diese kann man sich als .ZIP downloaden (hier)
Jetzt wird die gedownloadete Library als .ZIP eingebunden. Über Sketch -> Bibliothek einbinden -> .ZIP Bibliothek einbinden. Den Pfad auswählen wo ihr die Library gespeichert hab und einfach die .ZIP Datei auswählen.
Danach gehen wir auf Werkzeugen und stellen ein welchen Microprozessor wir nutzen wollen.
Bei "Board" wählen wir "Arduino Nano" aus.
Bei "Prozessor" wählen wir natürlich "ATmega328"
Und bei Port müsst ihr schauen welcher COM Port bei euch genutzt wird. Könnt ihr über den Gerätemanager rausfinden.
Das waren auch schon erstmal die Grundeinstellung.
Code:
#include <Adafruit_NeoPixel.h>
#define LEDOUT 6
#define NUMPIXELS 24
#define WHITE 255,255,255
#define RED 255,0,0
#define GREEN 0,255,0
#define BLACK 0,0,0
#define BRIGHTNESSHIGH 255
#define BRIGHTNESSLOW 20
Adafruit_NeoPixel stripe = Adafruit_NeoPixel(NUMPIXELS, LEDOUT, NEO_GRB + NEO_KHZ800);
int delayBig = 1200;
int delaySmall = 180;
int delayXSmall = 30;
void setup() {
pinMode(LEDOUT, OUTPUT);
stripe.begin();
setColors(20);
}
void loop() {
paintBasicMode();
}
void paintBasicMode() {
setColors(BRIGHTNESSHIGH);
delay(delaySmall);
setColors(BRIGHTNESSLOW);
delay(delaySmall);
setColors(BRIGHTNESSHIGH);
delay(delaySmall);
setColors(BRIGHTNESSLOW);
delay(delayBig);
setStrobo(BRIGHTNESSHIGH);
delay(delayXSmall);
setStrobo(BRIGHTNESSLOW);
delay(delayXSmall);
setStrobo(BRIGHTNESSHIGH);
delay(delayXSmall);
setColors(BRIGHTNESSLOW);
delay(delayBig);
}
void setColors(int brightness) {
for(int i=0;i<NUMPIXELS;i++){
if(i < 12) {
setPixelColor(i, GREEN, brightness);
} else {
setPixelColor(i, RED , brightness);
}
}
stripe.show();
}
void setStrobo(int brightness) {
setPixelColor(2, WHITE, brightness);
setPixelColor(3, WHITE, brightness);
setPixelColor(8, WHITE, brightness);
setPixelColor(9, WHITE, brightness);
setPixelColor(14, WHITE, brightness);
setPixelColor(15, WHITE, brightness);
setPixelColor(20, WHITE, brightness);
setPixelColor(21, WHITE, brightness);
stripe.show();
}
void setPixelColor( uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint16_t brightness) {
stripe.setPixelColor(n, (brightness*r/255) , (brightness*g/255), (brightness*b/255));
}
Jetzt muss der Code nur noch auf den Microprozessor geschrieben werden. Dafür überprüfen wir vorher einmal den Code.
Unter "Datei" ist ein schöner Haken, dieser prüft noch einmal den Code ob nicht vergessene Variablen sich versteckt haben oder der Code einfach an einer stelle Fehlerhaft ist.
Nach der Prüfung kann der Code durch den Button daneben einfach auf den Microprozessor geschrieben werden und es sollte dann auch schon zum Blinken anfangen.
Das Video muss ich erst noch bei YouTube hochladen und werde es vermutlich Morgen verlinken. Bis dahin noch ein wenig Geduld
Der nächste Schritt wird jetzt sein, Lichtmodus über die Fernsteuerung einstellbar. Leider tapp ich hier noch im Dunkeln und muss mich dort erst einlesen.
Anregungen und Tipps sind herzlich willkommen. Den Code dafür werde ich morgen mal Posten da ich schon weiter bin wie in dem oben gezeigten Code.
Zuletzt bearbeitet: