Hallo,
ich habe erst seit kurzem einen Raspberry Pi und noch nicht wirklich damit gearbeitet, aber würde gerne ein kleines Projekt machen. Leider habe ich im Internet nichts wirklich brauchbares gefunden. :s
Das "Projekt" ist im Grunde sehr simple. Ich habe einen kleinen Weihnachtsbaum und selbst gemachte LED-Ketten. Nun will ich diese Ketten abwechselnd blincken lassen, habe aber keine Ahnung wie ich das überhaupt programmieren kann.
Dies ist im Grunde mein Problem und ich hoffe, dass man mir mit einem Beispiel oder so, weiterhelfen könnte.
Weihnachtsbeleuchtung
- Quas454
- Thread is marked as Resolved.
Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
Mach mit und werde Teil unserer Community!
-
-
Schau mal ob du hier fündig wirst!
-
Eigentlich recht einfach.
Bin zwar auch erst seit ein paar Wochen stolzer Besitzer eines Pi's, kann Dir aber vllt. weiterhelfen.Erstmal brauchst Du einen Anschluss an den GPIO Port. Von losen Verkabelungen würde ich abraten (Kurzschlussgefahr).
Dafür gibt es Pfostenverbinder und Flachbandkabel.
An das andere Ende kannst Du nun die LED's direkt (mit Vorwiderstand natürlich) anschließen, oder eine Wannenstiftleiste auf eine Lochrasterplatine löten. Das hat den Vorteil, dass man das Kabel sehr einfach austauschen/verlängern kann.Jetzt muss man noch sicherstellen, dass man die richtigen Anschlüsse verwendet. Am besten nachmessen z.B. mit einer Test LED, ob man im Kabel keinen 'Dreher' drin hat. Das ist sehr wichtig, denn kommt Pin 2 oder 4 (5V) an einen anderen Pin, kann das schnell der letzte Atemzug für den Pi gewesen sein.
Wenn die LED's nun an die richtigen Pins angeschlossen sind, brauchst Du nur noch eine Steuerung zu programmieren.
Ich hab mich etwas in Python eingearbeitet und mit meinem verstaubtem Basic-Vorwissen kam ich dann auch recht schnell zu guten Ergebnissen.
Hier z.B. ein kleines "Lauflicht" Programm mit 4 LED's:
(wie immer auf groß/kleinschreibung achten!!! Besonders die erste Zeile hat mich ca. eine Stunde gekostet ;))Code
Display Moreimport RPi.GPIO as GPIO import time # hier die GPIO Ports der LED's eintragen (nicht die Pin Nummer) # Die erste Ziffer ist ein Platzhalter damit die LED's mit 1-4 durchnummeriert werden. led_gpio = [ 0 , 4, 8 , 10 , 11 ] # LED's auf Ausgang einstellen und ausschalten a = 0 while a < 4: a += 1 GPIO.setup(led_gpio[a], GPIO.OUT) GPIO.output(led_gpio[a], 0) # Lauflichtschleife while 1: a = 0 while a < 4: a += 1 GPIO.output(led_gpio[a] , 1) time.sleep(.5) #hier lässt sich die Geschwindigkeit regulieren GPIO.output(led_gpio[a] , 0)
Die Datei als "lauflicht.py" speichern und aus der Konsole mit sudo python lauflicht.py starten.
Das sollte es eigentlich schon gewesen sein.
Sehr wichtig ist die absolut sorgfältige Verkabelung.
Mach doch vllt. mal n Foto. Klingt ja witzig. :thumbs1:
Beste Grüße, Micha. -
....kannst Du nun die LED's direkt (mit Vorwiderstand natürlich) anschließenimmer den LED Strom beachten, jeder Port vom GPIO kann wohl 10mA maximal, aber alle zusammen dürfen wohl 60mA nicht übersteigen, also entweder 6x 10mA oder 12x 5mA maximal
es bieten sich low current LED um 3mA oder ultrahelle LED (gehen bis 20mA) die mit 1-3 mA betrieben werden, also kann man mit 3mA pro LED schon 20 anschliessen, hat man soviel freie GPIO ?
dann muss man rechnen: GPIO Spannung maximal 3,3V - LED Spannung = Spannung am Vorwiderstand / LED Strom = Widerstand
für rote LED rechnet man so 1,8-2V für grüne 2-2,5V
also Rechenbeispiel rot
3,3V - 1,9V (Mittelwert) = 1,4V / 3mA (LED Strom) = 470 Ohm
also Rechenbeispiel grün
3,3V - 2,2V (Mittelwert) = 1,1V / 3mA (LED Strom) = 360 OhmLED Spannung blau bis weiss 3,3-3,6V bei Nennstrom 20mA
Edit: bei 3mA sind auch diese betreibbar siehe etwas tiefer, alle Spannungen unter 3,3V es bleibt was übrig für den Vorwiderstand !da sieht man schon das geht nicht, entweder bleibt für den Vorwiderstand nichts übrig oder die Spannung wird vom PI nicht errreicht (das braucht dann andere Schaltungen)
-
zwei LED Bilder eingefügt
von links nach rechts, alle mit 3mA
low current rot 1,78V
low current grün 1,92V
low current gelb 5,3V
low current orange 1,82Vdie ultra hellen fetzen einem schon bei 3mA die Netzhaut weg (wir hatten als geringsten Strom wo sie noch gut zu erkennen waren 36µA ermittelt)
grün 2,73V
rot 1,68V
blau 2,69V
warmweiss 2,90V
kaltweiss 2,71Ventweder liegts an der Helligkeit oder kaltweiss und warmweiss sind in den Kisten vertauscht worden, waren vertauscht muss das Bild neu machen und die Spannungen hochladenEdit: warmweiss und kaltweiss nun drin,
2tes Bild , da habe ich den Strom der LED auf 50µA = 0,05mA gesenkt um warmweiss oder kaltweiss überhaupt erst sichtbar zu machen,
die low current haben da längst aufgegeben!
Suchwort: LED Spannung LED-Spannung
-
UPDATE s.o.
-
Danke, hat mir schon alles ein bischen weitergeholfen :thumbs1:, nur ich steuer leider mehr als nur 15 LEDs an einem Strang an.
Deswegen dachte ich mir (und nach etwas Nachforschung), ob man mit dem Raspberry nicht auch einen Transistor steuern könnte. Nun stellt sich die Frage, ob das Vorteilhaft wäre oder einfach nur Sinnlos. Die größten Probleme bereiten mir bis jetzt das Programmieren.
LieberScholli Dein Beispiel war für mich schon mal ein Einblick, wie das aussehen müsste, aber leider versteh ich bis jetzt nur Bahnhofdenn ich hab bis jetzt, null Kenntnisse vom Programmieren.
Hoffe ihr könntet mir noch mal ein Beispiel bringen, oder das obrige etwas genauer erläutern.
Vielen Dank,
Thomas -
Sehr gerne:
Code
Display Moreimport RPi.GPIO as GPIO # importiert die funktion GPIO # und setzt den typ der nummerierung auf GPIO import time # importiert die funktion time led_gpio = [ 0 , 4 , 8 , 10 , 11 ] # definiert die LED's: # led 1 = GPIO 4 # led 2 = GPIO 8 , usw... a = 0 while a < 4: # schleife von 0 bis 3 a += 1 # zählt einen hoch GPIO.setup(led_gpio[a], GPIO.OUT) # setzt den GPIO port auf ausgang GPIO.output(led_gpio[a], 0) # schaltet led aus (0) # ende der schleife # Lauflicht : while 1: # endlosschleife a = 0 # setzt den zähler auf 0 while a < 4: # schleife von 0 bis 3 a += 1 # zählt einen hoch GPIO.output(led_gpio[a] , 1) # schaltet led ein time.sleep(.5) # wartet einen moment # hier lässt sich die Geschwindigkeit regulieren GPIO.output(led_gpio[a] , 0) # schaltet led aus # ende der schleife bis 3 # ende der endlosschleife
Erstmal musst Du natürlich die Led's anschließen
Dafür suchst Du nach einer GPIO Belegungstabelle passend zu Deinem Raspberry Modell.
Gibt kleine Unterschiede bei der Belegung zwischen den Modellen, also sorgfältig suchen!
(Kleiner Hinweis: bei mir gibt es 3 GPIO Ports, die nicht einwandfrei funktionieren. Also vor dem Festlöten die Funktion einmal prüfen)
Dann Leafpad öffnen und den Code einfügen. Die Hinweise dürfen stehenbleiben.
Jetzt müssen die GPIO Ports evtl. angepasst werden (led_gpio).
Speichern als "lauflicht.py" und ausführen aus dem Terminal mit "sudo python lauflicht.py"Wenn alles funktioniert, meld Dich nochmal.
Hab schon einige Effekte für mein Board geschrieben, die Du dann einfach einfügen kannst.Dankeschön nochmal an jar! Ich hab hier nur ein analoges Multimeter, dem ich aber nicht mehr zutraue als den Durchgang oder die Spannung zu messen. Mit den Messungen kann man doch schonmal gut arbeiten :thumbs1:
Der Hinweis mit dem Vorwiderstand hat auch nur darauf abgezielt, einem Anfänger die Led's nicht sofort zu verbrennen.;)Viel Erfolg und bb!
-
Danke, hat mir schon alles ein bischen weitergeholfen :thumbs1:, nur ich steuer leider mehr als nur 15 LEDs an einem Strang an.Deswegen dachte ich mir (und nach etwas Nachforschung), ob man mit dem Raspberry nicht auch einen Transistor steuern könnte.
ja pro Strang 1 Transistor an einem GPIO Port ginge , aber dann gilt nur an oder aus pro Strang !
alle LED Spannungen addieren, wie du siehst habe ich ja beim Test auch alle in Reihe geschaltet, aber im Test brauchte ich natürlich über 25V musste 2 Netzgeräte a 25V in Reihe schalten um die Schwellspannung aller Dioden zu überschreiten, der Strom durch alle Dioden war ja mit 3mA gewählt, bei 20mA wird die Spannung an den Dioden größer.
15 LED einer Sorte werde ich nicht testen können, glaub nicht das meine Kisten so voll sind
Der Transistor muss natürlich die Spannung aushalten, das Netzteil diese Spannung bringen, z.b. weisse und blaue LED mit über 3V * 15 sind schon locker über 45V (die Trasis gibt es aber auch 40V Typen also genau rechnen und schauen)
-
LieberScholli
Ich hab mal in einer freien Stunde versucht (bevor ich deinen Kommentar gelesen hab), selbst ein Programm dafür zu schreiben.
Das kam dabei raus:Code
Display Moreimport RPi.GPIO as GPIO import time Ring_1 = 8 Ring_2 = 10 Ring_3 = 12 Ring_4 = 16 GPIO.setup(Ring_1, GPIO.OUT) GPIO.setup(Ring_2, GPIO.OUT) GPIO.setup(Ring_3, GPIO.OUT) GPIO.setup(Ring_4, GPIO.OUT) while True: GPIO.output(Ring_1, True) time.sleep(5) GPIO.output(Ring_2, True) GPIO.output(Ring_1, False) time.sleep(5) GPIO.output(Ring_3, True) GPIO.output(Ring_2, False) time.sleep(5) GPIO.output(Ring_4, True) GPIO.output(Ring_3, False) time.sleep(5) GPIO.output(Ring_4, False)
Und jetzt stell ich mir die Frage, ob das schon als Endlosschleife zählt, oder ob ich da etwas übersehen habe.
Hab das nur mal Probeweise mit 4 Ringen gemacht. Vielleicht werden es auch nur 3 oder auch 5. Kommt auf die Zeit drauf an, die ich zur Verfügung habe.
jar
Das Problem damit wird ja nur die Spannung, wenn ich alle LEDs in Reihe verschalte, die kann ich dann nicht mehr nur mit meinem RaspPi versorgen.
Würde es eigentlich reichen, wenn ich für z.B. 15 LEDs nur einen Vorwiderstand ganz am Anfang nehme?
Gruß,
Thomas -
jar
Das Problem damit wird ja nur die Spannung, wenn ich alle LEDs in Reihe verschalte, die kann ich dann nicht mehr nur mit meinem RaspPi versorgen.ja, da der PI ja nur maximal 5V hat
jar
Würde es eigentlich reichen, wenn ich für z.B. 15 LEDs nur einen Vorwiderstand ganz am Anfang nehme?
Gruß,
Thomaswas ändert das bei 15 Dioden in Reihe ?
bei 15 Diode in Reihe braucht man nur einen Vorwiderstand aber hohe Spannung
bei 15 Diode parallel braucht man (normalerweise) 15 Vorwiderstände und 15x den Strom von deinen genannten 20mA = 300mA kann zuviel für den PI sein, jedenfalls am GPIO da ja nur 300mA übrig sind nach der Polyfuse wenn man über microUSB speist für den USB-A bleibt nix mehr übrig, aber wer über GPIO oder USB-A speist umgeht diese Begrenzung, da sind es dann nur noch die Leiterbahnen auf dem PI Board die den Strom begrenzenalso mehr Strom sollte man den LED anders zuführen