LED zum Leuchten bringen

  • Hallo!


    Habe heute meinen Raspberry mitsamt Starter-Kit bekommen und versuche gerade folgende Anleitung zu befolgen, um eine LED zum Leuchten zu bringen:


    http://www.themagpi.com/issue/issue-2/article/in-control/


    Ich habe nicht genau das gleiche Breadboard und benutze außerdem einen Cobbler, um die GPIO-Pins mit dem Breadboard zu verbinden. Habe dann versucht, die Anleitung entsprechend "anzupassen", aber leider klappt's nicht.


    Mein Breadboard sieht genau folgendermaßen aus:


    http://workupload.com/file/pVYkafgL


    Mein Cobbler sieht genau so aus:


    http://workupload.com/file/cV4vwSfp



    Auch habe ich nicht die exakt gleichen Widerstände wie in der Anleitung. Jetzt habe ich alles folgendermaßen miteinander verbunden:


    http://workupload.com/file/qIsneLSr


    Falls man es nicht so richtig erkennt:


    Der Button steckt in: j 23, j 20, h 23, h 20
    Ein 1kR-Widerstand in: g 30, g 23
    Ein 220R-Widerstand in f 23, e 23
    noch ein 22R-Widerstand in d 23, b 23
    ein 10kR-Widerstand in g20, 3V3
    die LED in a 23, 3V3


    Den Rest kann man sicher erkennen. Leider verstehe ich überhaupt nicht so richtig, wie das alles funktionieren soll. Laut der Anleitung sollte man so den Raspberry einschalten können, und wenn man dann auf den Knopf drückt, sollte die LED angehen, aber es funktioniert nicht.
    Kann mir jemand weiterhelfen, es hinzubekommen, und auch, es ein Bisschen zu verstehen?


    Danke und Gruß,


    kohaerenzstift

  • Erstmal willkommen im Forum! :thumbs1:


    Auf Anhieb kann man erkennen, das Du wohl noch nie mit einem Breadboard gearbeitet hast.
    Macht ja nix! ;)
    Wichtig dabei ist erstmal die Verschaltung des Boards zu verstehen.
    Die äußeren Buchsen zur Stromversorgung sind von oben nach unten durchverbunden.
    (das rechte Kabel auf dem Foto ist daher überflüssig)
    Nur die jeweils linken und rechten Leitungen sind voneinander getrennt. Es sei denn, man hat Deinen Cobbler angeschlossen. Der Verbindet die Masse links mit rechts. Dabei sollte man peinlichst genau darauf achten, welche Spannung (3,3V / 5V) man verwendet. 5V auf GPIO mag der Pi bekanntlich ÜBERHAUPT nicht.


    Die einzelnen Buchsen sind jeweils horizontal in 5er Gruppen verbunden (a1-e1, f1-j1).
    Der "22R" Widerstand in d23-b23 ist also kurzgeschlossen und hat daher keine Funktion (Strom sucht immer den geringsten Widerstand).
    Einen genauen Schaltplan des Breadboardes findest Du z.B. HIER


    Übrigens bedeutet das "R" Resistor (Widerstand) und wird für eine Nummerierung verwendet. Der Wert der Widerstände wird in "Ohm" oder "kOhm" angegeben.
    Korrekterweise würde man das etwa so schreiben:
    R1 = 22kOhm = d23-b23
    So kann man schnell über R1 sprechen und braucht nicht lange im Schaltplan suchen.


    Deine geplante Kabelverbindung zum Taster liegt leider auch genau eine Reihe daneben.
    Zwischen Reihe 23 und 24 besteht kein Kontakt (es sei denn, das Breadboard ist deffekt ;) ).
    Der Widerstand nach g30 läuft ins leere...
    Der Taster ist um 90° verdreht eingebaut, ist also durch das Breadboard dauerhaft kurzgeschlossen.
    In Deiner Einbaurichtung wird bei geschlossenem Kontakt (h20) mit (j20) und (h23) mit (j23) verbunden. Die sind aber schon durch das Breadboard verbunden.
    Bei diesen Tastern sind jeweils die weit auseinander liegenden Anschlüsse miteinander Verbunden.


    Sorry, wenn ich jetzt keine direkte Problemlösung anbiete, aber ich hoffe ich konnte Dir mit diesen Infos schonmal etwas weiterhelfen.
    Btw: Gute und ausführliche Problembeschreibung :thumbs1:


    Liebe Grüße, Scholli.

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Edited once, last by LieberScholli ().

  • Hallo.


    pls. bitte nicht falsch verstehen, aber anscheinend versucht Du mit Raspi und Python die ersten Schritte, was vollkommen ok ist.


    Die Schaltung scheint mir bischen "vom Schwanz her aufgezäumt" .


    Wenn ich das richtig verstehe willst Du folgendes.
    Wenn Du Dein Python Programm startest, soll ne Led als Bestätigung leuchten, wenn Du nen Taster/Schalter betätigst.


    Das würde ich so anfangen:
    LED


    Da passiert folgendes.
    Nach starten von Python sind deine definierten Port's im "Tristate" Modus.
    Will heissen, die sind einfach "offen".
    GPIO in liegt also auf "high" (über dem R470) da der Taster offen ist, und dem GPIO out ist es egal (der liegt über R330 auch auf high).


    Ich bin kein Python Spezi, aber Dein Programm müsste dann so aussehen.


    Wenn Du das Progrämmchen startest, wird folgendes passieren:
    Bei offenem Schalter ist GPIO.in auf high, und sagt Dir das.
    if mybutton == TRUE
    "Schalter ist aus und Led auch"
    er pennt dann 200ms, und auf ein neues.
    Wenn "if mybutton == FALSE also " WAHR" ist, also Schalter gedrückt, zieht er wegen
    if mybotton == FALSE mit
    GPIO.output(12,FALSE), GPIO12 auf Masse.
    Sollte er auch zeigen.
    Dieses "GPIO.output(12,TRUE)" ist dazu da, wenn Du den Taster wieder loslässt, damit die Led dann auch wieder ausgeht.


    Wie gesagt.. bin kein Python'er, aber versuchs mal.
    Viel Erfolg.
    Gruß root

  • Ich würde zwar statt den 330Ohm 470Ohm und statt 470Ohm 10kOhm verwenden, aber sonst kann ich dem nichts beifügen. :thumbs1:
    (Außer, dass hier auch ein falsches Zeichen zur Beschriftung im Schaltplan verwendet wird und FALSE bzw. TRUE nur False bzw. True geschrieben wird. ;) )

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Edited once, last by LieberScholli ().

  • OK.....
    Akzeptiert, Euer Ehren ....:thumbs1:
    Gruß root

  • Hi


    erstmal danke für die schnellen und ausführlichen Antworten. Ich komme erst heute Abend dazu, es mir in Ruhe durchzulesen und melde mich dann wieder!!

  • Pin 12 auf dem Pi = GPIO18 = P5 auf deinem Cobler (wenn das Bild oben passt). ein Besseres Pi PinLayout Bild gibts hier. du hast mit ziemicherSicherheit ein Rev. 2 Pi, also das untere Bild betrachten ;)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv ().

  • Nein, ich habe Revision 1.
    Entweder spinn ich jetzt oder... Jetzt such ich PIN 11, laut deiner Grafik ist das GPIO 17. Aber GPIO 17 gibts bei dem Cobbler gar nicht!

  • :denker: Sehr seltsam das ist. Hau den blöden Cobbler in die ecke und verdrahte direkt. Scheint deutlich einfacher und man muss sich nicht 3 verschiedene Layouts merken. Ich hab ja schon Probleme mit Pin <-> BCM Layout ;)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv ().

  • hallo.


    Quote

    Sagt mal, woran erkenn ich auf dem Cobbler Pin 12? Pin 11 ist SCLK laut


    Ähhhmmm..... nicht verrückt machern lassen: lol:


    GPIO 11 ist CLK, ja, aber erst dann wenn Du SPI verwendest.
    Im Prinzip ist es egal, welche GPIO's du nimmst.
    Solange Du nichts spezielles ansteuerst die Pin's vorschreiben,
    nimm die GPIO's Deiner Wahl.


    Gruß root.

  • Halleluja, es hat geklappt. Hab mehrmals rumprobiert. Die Lösung die hier angeboten wurde und die aus dem Artikel. Das aus dem Artikel hat jetzt endlich funktioniert. Die haben sich aber auch alle Mühe gegeben, den Leser zu verwirren: Wenn man sich die Grafik neben dem Breadboard anschaut, da steht eindeutig Pin 11. Dann im Python-Code steuern die es an mit:


    Code
    mybutton = GPIO.input(11)


    Deswegen dachte ich, der Parameter (11) für GPIO.input() bezieht sich auf die Pin-Nummer und nicht auf die GPIO-Nummer. Also ist der Artikel falsch, behaupte ich...


    Was mir immer noch nicht so richtig klar ist, ist die Geschichte mit den Schaltkreisen und den Widerständen: So viele Widerstände - und so scheinbar willkürliche Werte! Wie weiß ich denn wo in meinem Schaltkreis ich einen Widerstand und mit wieviel Ohm brauche? Und das mit dem Pull-Up raff ich auch nicht so richtig... Mann mann - hatten das in der Schule mal in der 8. Klasse, aber das ist fast 20 Jahre her! Gibt's denn irgendwo was zu lesen, wo man das Nötigste hierfür sozusagen "im Schnelldurchlauf" nachholen/auffrischen kann?


    Gruß und danke,


    Kohaerenzstift

  • Hallo.


    Ok, ich versuchs mal anhand meines Vorschlags.


    Wenn Du die Led an 3.3 V und dann gegen Masse legst, wird sie "HELL" erfreut sein,
    und ihr Leben aushauchen.
    Ne LED darf ~10mA ziehen.
    Der Strom muss also begrenzt werden, (Vorwiderstand).
    Versuchen wir also ~10mA fliesen zu lassen.
    Da gibt's die heilige URI Formel. U(Spannung) = R(Widerstand) * I(Strom).
    Unser U = 3.3 Volt.
    Man nehme heilige Formel, stelle fest....."Die passt da nicht",
    stelle sie gekonnt "um" dann kommt R=U/I --->> 330 OHM... wow. :bravo2:


    Ansonstem im I'net mal bischen schmökern...
    Beispiel: "wie baue ich nen Spannungsteiler......"


    In dem Programm ist dir evtl auch was aufgefallen.
    Angenommen.
    Du drückst den Taster und bleibst drauf.
    Nachdem er dann brav die Led eingeschaltet hat, nach seiner Pause wieder feststellt,
    Taste ist gedrückt, schaltet die Led ein.... ähmm.. wozu eigendlich... hab ich ja schon..:s


    Beim ausschalten..... das gleiche.....


    Dank mal kurz nach....
    Wenn's nicht kommt, erkär ich's gerne... aber erst mal nachdenken:thumbs1:


    Gruß root

    Edited once, last by root ().

  • Ehrlich gesagt kann ich dir überhaupt nicht folgen. Die Lösung die hier gezeigt wurde verstehe ich schon gleich gar nicht - wieso wird in der Lösung aus dem Artikel nur ein GPIO gebraucht, in der Lösung hier aber zwei?
    Ich hab den Eindruck, bei mir hakt's irgendwie an einer ganz anderen Stelle. Hab grad nochmal versucht, den Erklärungen aus dem Artikel In Control zu folgen:


    Quote

    When the voltage is present it is referred to as a logic HIGH state. Alternatively when the GPIO pin is connected to 0V a binary 0 or logic LOW state is created. In our switch example pressing the switch creates a LOW state by connecting the IO port to 0V.


    Heißt das, wenn ich einfach nur eine Verbindung zwischen meinem GPIO-Port und Ground machen und die Verbindung zu 3v3 komplett kappe, dass ich dann immer den Low-Zustand habe?


    Was ich außerdem nicht verstehe: Der sagt, durch die standardmäßige Verbindung zwischen GPIO und 3v3 habe ich erstmal einen High-Zustand. Wenn ich dann den Knopf drücke, wird eine Verbindung hergestellt zwischen GPIO und 0V, weswegen der Zustand auf Low wechselt. Aber wieso eigentlich: Die Verbindung zwischen dem GPIO-Port und 3v3 besteht ja nach wie vor. Eigentlich ist das doch ein Unentschieden...

  • Quote

    Mann mann - hatten das in der Schule mal in der 8. Klasse, aber das ist fast 20 Jahre her! Gibt's denn irgendwo was zu lesen, wo man das Nötigste hierfür sozusagen "im Schnelldurchlauf" nachholen/auffrischen kann?


    Ja, so ging es mir auch... und weiland in der 8. Klasse war sowieso alles andere wichtiger (z.B. die neuesten C64 Disketten tauschen) wichtiger als dem Eumel vorne am Pult zuzuhören. Der ganze Kram mit dem Elektronikgedöns waren nur spanische Dörfer - aber es gibt Hilfe!


    Schau Dir mal das Buch vom Erik Bartmann an: Die elektronische Welt mit Raspberry Pi entdecken (Affiliate-Link)


    Das ist so ziemlich das beste Buch für Anfänger über den RasPi. Der Autor geht in den ersten Kapiteln sehr gründlich und anschaulich (Riskier mal den 'Blick ins Buch') auf die Grundlagen der Elektronik ein und erklärt diese auf verständliche Art und Weise.
    Abgerundet wird das ganze dann mit Schaltungen die gerade am Anfang leicht nachvollziehbar sind.
    Das es 40 Euro kostet ist das einzige Manko, jedoch bereue ich bis heute nicht dieses Werk erstanden zu haben, denn auch wenn man viele der Grundzüge auch irgendwo im Netz findet ist es bequemer diese Dinge griffbereit und kompakt neben sich liegen zu haben.


    Meine ersten Schritte mit einer LED habe ich übrigens mit diesem Tutorial gemacht: https://projects.drogon.net/ra…-examples-1-a-single-led/
    Hier wird auch recht anschaulich (wenn auch wieder in Englisch) erklärt wie es geht und die Schaltung anschließend Schritt für Schritt weiter aufgebaut. Wichtig bei diesem Tutorial ist das man sich "WiringPi" installiert, aber auch das ist dort erklärt.

  • Uff ....etzt wird's kompliziert.


    Deswegen sagte ich ganz am Anfang.... jemandem der anfängt, würde ich diese Schaltung
    nicht hinlegen.
    Wenn jemand nicht weis, wie sich Widerstände parallel mit belasteten und unbelasteten
    Spannungsteiler verhalten, wird das nix.
    Das soll absolut nicht heisen, dass ich dir nichts zutraue.
    Aber da brauchts Verständnis dafür.


    Nichts desto trotz erkläre ich noch wie meine Version funktioniert.
    3.3 V gehen an den Widerstand mit 330 ohm dann an die Anode, die Kathode geht an GPIO out.
    3.3 V gehen auch an den Widerstand mit 470 Ohm, dann an GPIO in und an den Taster.
    Der Taste liegt an der anderen Seite an masse.
    OK soweit.


    Der Taster sei jetzt offen.
    Dein Programm startet, liest den GPIO in und legt das Abfrageergebnis des Tasters in mybutton ab.
    mybutten liefert als ergebnis "High", da der Taster offen ist, und fertig.


    Der Taster sei jetzt gedrückt:
    das Abfrageergebnis in mybutton ist dann "LOW", da du den Widerstand 470 auf masse ziehst, und GPIO in dadurch auch LOW wird.
    Mit GPIO out = (12,False) legst du dann die Kathode der LED auf masse, und die Led leuchtet.
    Die 470 ohm deswegen, da Du ja die 3.3V nicht brutal gegen masse ziehen darfst.
    Die paar millis spielen keine Rolle.
    Deswegen gestern auch der richtige Einwand, anstatt 470 ohm 10 Kohm zu nehmen.
    Dann fliest noch weniger.
    Wir wollen ja beim Taster möglicchst wenig strom fliesen lassen, wir brauchen ja nur nen Pegel fürs Programm.


    Genau genommen schaltet nicht mal Dein Taster die Led aus oder ein, sondern
    die Variable mybutton.
    Denn über mybutton triffst Du ja die Entscheidung..... mach aus oder an.
    mybotton wird deswegen alle 200 ms neu gefüttert (mit dem was Du über GPIO in) gelesen hast.


    Hier Grundsätze in etechnik.... wird nichts..... da musst du selbst bischen was tun....Bücher .... etc.
    Bitte das nicht falsch verstehen.


    Ich helfe gerne... aber so ausschweifend will ich nicht werden.
    Versuch sowas erst mit einfachen Sachen.
    Die Erfahrung kommt dann (auch durch Fragen) mit der Zeit.


    Gruß root

    Edited once, last by root ().

  • Ja, so ging es mir auch... und weiland in der 8. Klasse war sowieso alles andere wichtiger (z.B. die neuesten C64 Disketten tauschen) wichtiger als dem Eumel vorne am Pult zuzuhören. Der ganze Kram mit dem Elektronikgedöns waren nur spanische Dörfer - aber es gibt Hilfe!


    Wunderbar :thumbs1:
    Aber statt Disketten tauschen hatte ich in diesem Fall eher an diese herrlichen 15 seitigen Listings zum abtippen gedacht...*schwärm*
    Das beste daran war, das es darin (fast) keine Fehler gab. Gucke ich mir manche Printmedien heutzutage an (speziell im Pi-Hipe),
    wird entweder unvollständig erklärt, oder/und es gibt in 15 ZEILEN 10 Fehler...
    Und im Netz schwirren noch viel verwirrenderererere Anleitungen rum...


    Als Neueinsteiger in die tiefere Computerwelt dank des Pi's kann ich auch nur zu einem gutem Buch raten.
    Manchmal gibt es ja auch Auszüge daraus, die man sich kostenlos anschauen kann.
    Ich hab sowas aber immer gerne in der Hand. Hab schneller die richtige Seite geblättert, als das ich die gescrollt hab.


    Aber zurück zum eigentlichen Thema:
    Die Schaltung von root und der dazugehörige Pythoncode in diesem Post ist schon ein echt guter Einstieg.
    Damit kann man optimal die Schnittstelle zwischen Pi und Außenwelt erlernen.
    Man muss nur dort die entsprechenden Pinbelegungen und Nummerierungen erfassen.
    Besonders, wenn noch Geräte dazwischen hängen und wiederum eine andere Nummerierung haben sollten (Tipp dazu in meiner Signatur :D ).

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?


  • Wenn Du die Led an 3.3 V und dann gegen Masse legst, wird sie "HELL" erfreut sein,
    und ihr Leben aushauchen.


    richtig :thumbs1:



    Ne LED darf ~10mA ziehen.


    falsch, normale LEDs gehen oft um 20mA aber high power Leds gehen auch über 1A
    low current LEDs um 3mA, uh ultra helle LEDs fetzen einem bei 1-3 mA schon die Netzhaut weg wenn man reinschaut.


    ausgehend von deinen 10mA


    Man nehme heilige Formel, stelle fest....."Die passt da nicht",
    stelle sie gekonnt "um" dann kommt R=U/I --->> 330 OHM... wow. :bravo2:


    das wäre der Kurzschlußstrom ohne LED, aber mit LED wird sich das nie einstellen


    darf man ergänzen ?
    man muss natürlich die LED Spannung berücksichtigen
    und rechnet Spannung PI 3,3V - LED Spannung = Spannung am Vorwiderstand / LED Strom gewünscht = Vorwiderstand !
    http://www.forum-raspberrypi.d…chtung?pid=49513#pid49513



    Ansonstem im I'net mal bischen schmökern...
    Beispiel: "wie baue ich nen Spannungsteiler......"
    Gruß root


    funktioniert an LED nicht so richtig weil deren Kennline nicht linear ist


    ABER man darf am PI GPIO nicht (lange) über 3mA raussaugen, denn die Summe aller GPIO Ströme und der eigene CPU Strom ist begrenzt sonst brennen die internen Chipverbindungen durch. Deswgen wird immer gerne ein Treibertransistor empfohlen.


    Ein Bild von Chips intern
    http://de.wikipedia.org/wiki/Drahtbonden


    Es gibt natürlich Leistungselektronik die auch hunderte von A(mpere) schalten kann, der PI Chip gehört aber nicht dazu
    http://de.wikipedia.org/wiki/Leistungselektronik


    ich bin bei meinen Ampelspielchen immer pro GPIO Port bei 1mA geblieben, alle PIs leben noch trotz heftigster Umbauten.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited once, last by jar ().

  • Hi


    danke wieder für die Antworten, die ich mir wieder erst Abend in Ruhe zu Gemüte führen kann. Ein Buich für 40 Euro würde ich mir ja durchaus kaufen, wenn's wirklich gut erklärt und fehlerfrei ist, um nicht Stunden zu verplembern irgendwelche falschen Erklärungen nachzuvollziehen.
    Wichtig ist mir auch zu wissen, was da genau alles erklärt wird. Beispielsweise Programmierung und so, also wenn das Buch 5% Elektronik und Hardware ist, und der ganze Rest "Grundlagen Linux & Programmierung", dann ist das doof, weil Programmieren kann ich schon und bei Linux muss ich auch nicht beim Urschleim anfangen...


    Aber eine allgemeine Frage noch: GPIO steht doch für General Purpose Input Output: Heißt das die GPIO-Pins sind all gleich? Wenn ja, warum sind die so komisch angeordnet und nicht von Pin 1 - Pin N. Und vor Allem, warum gibt es da Lücken, warum sind die nicht alle von 1-N durchnummeriert? Also warum gibt es GPIO 0, GPIO 1, GPIO 7, GPIO 8, GPIO 14 und GPIO 15 aber kein GPIO 2 und GPIO 3? Und warum haben die so komische "Alternativ"-Bezeichnungen wie SDA, SCL, PWM, MOSI, etc???

  • sind nützliche Sonderfunktionen die mal festgelegt wurden um das in Liberys zu verankern das die von vielen genutzt werden können.


    Es hat doch kaum Sinn mal auf einem PI auf GPIO21 zu senden (RxD TxD) auf dem anderen PI auf GPIO27 , dann kann man das nicht für alle nutzbar in eine Libery legen. Genauso wie I2C und SPI, alles Worte die du googeln kannst


    Natürlich kannst du die Liberys umgehen und dir deine eigenen Senderoutinen auf andere Ports legen.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)