Warum eine 1 senden um die LED auszuschalten?

  • Hallo,

    bezüglich Raspberry Pi 3 und GPIO bin ich ein Neueinsteiger und versuche mich momentan an einem ersten Beispiel: Eine LED per Raspberry Pi 3 zum Blinken zu bringen.

    Ich folgte dabei dieser Beschreibung:

    In this experiment, connect a 220Ω resistor to the anode of the LED and then connect the resistor to 3.3 V power source, and connect the cathode of the LED to GPIO0 (See Raspberry Pi Pin Number Introduction). Write 1 to GPIO0, and the LED will not light up; write 0 to GPIO0, and then the LED will blink according to principle mentioned previously.


    Schaltplan siehe Anhang.


    Was sich mit leider nicht erschließen will, ist die Tatsache, dass ich auf dem GPIO-Pin eine 1 senden muss, damit die LED ausgeht. Und andersherum muss ich eine 0 senden, damit die LED leuchtet. Vom Prinzip hätte ich das eher umgekehrt erwartet. Wo liegt hier mein Denkfehler. Für Hinweise bin ich sehr dankbar!

    Hier der Quellcode:
    #include <wiringPi.h>
    #include <stdio.h>

    #define LedPin 0

    int main(void)
    {
    if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
    printf("setup wiringPi failed !");
    return 1;
    }
    printf("linker LedPin : GPIO %d(wiringPi pin)\n",LedPin); //when initialize wiring successfully,print message to screen

    pinMode(LedPin, OUTPUT);

    while(1){
    digitalWrite(LedPin, LOW); //led on
    printf("led on...\n");
    delay(500);
    digitalWrite(LedPin, HIGH); //led off
    printf("...led off\n");
    delay(500);
    }

    return 0;
    }


    Gruß, PiPower

  • Dein "Denkfehler" liegt darin, dass die LED "von 3,3V kommt".

    Wenn Du "1" auf den Pin schreibst, bekommt der Pin einen Spannungspegel von 3,3V --> von 3,3V zu 3,3V fliesst recht wenig Strom
    Wenn Du "0" auf den Pin schreibst, bekommt der Pin einen Spannungspegel von V --> von 3,3V zu 0V fliesst der Strom durch die LED

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

  • Mal so in den Raum geworfen - laut gedacht ....

    Ist es so wie er es hat nicht besser? So von wegen GPIO und maximal 51mA und so... Wenn der GPIO Pin als GND fungiert muss dieser kein Strom liefern.

    Nachteil wär nur das die LED dann immer an ist wenn der Pi gerade erst eingeschaltet wurde bis zu dem Zeitpunkt wo das Script den GPIO auf 1 setzt...


    (ich wette da regt sich gleich wieder jmd auf dass der strom in wirklichkeit nicht nach gnd fließt..)

  • Hi meigrafd,

    prinzipiell ja ... und in der Regel wird das ja auch empfohlen.
    Allerdings afaik eher deswegen, weil es einfacher ist einen definierten Pegel HIGH mit einem pullup einzustellen, als zu versuchen das Signal auf GND zu definieren.

    //EDIT:
    Ich glaub' das war Quatsch bzw. gilt nur für Ein- und nicht Ausgänge :blush:

    Mit z.B. einem ULN2803 als Treiber wäre das übrigens wieder stimmig ( weil der invertiert ).

    cu,
    -ds-

  • Hallo Meigrafd,

    nach meiner Deutung der Unterlagen beziehen sich die 51 mA auf 3V3 -> GPIO bzw. GPIO -> GND.

    Demnach bleibt es sich gleich, ob über 3V3 nach GPIO (Eingang) oder von GPIO (Ausgang) nach GND fließen.

    Mehr als 50 mA sollte man nicht entnehmen wollen.

    Und so wie es Pipower macht, von 3V3 auf einen GPIO-Output-Pin zu gehen, der HIGH/LOW schaltet, um eine LED zu schalten, funktioniert zwar. Aber ob es dauerhaft gut ist, möchte ich bezweifeln. Denn dies würde bedeuten, dass beide (3V3, GPIO) Elektronen hineindrücken, ober nur abfließen können, wenn GPIO-Ausgang weniger heftig = LOW drückt.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • nach meiner Deutung der Unterlagen beziehen sich die 51 mA auf 3V3 -> GPIO bzw. GPIO -> GND.

    Demnach bleibt es sich gleich, ob über 3V3 nach GPIO (Eingang) oder von GPIO (Ausgang) nach GND fließen.

    Mehr als 50 mA sollte man nicht entnehmen wollen.

    Hm jetzt bin ich ehrlich gesagt verwirrt... die 3V3 Powerpins kommen doch direkt vom Spannungswandler oder nicht? Die GPIOs aber direkt vom SoC, aber diese können insg. nicht mehr als 51mA beherbergen, die 3V3 PowerPins schon.
    SoC -> GPIO
    Spannungswandler -> 3V3
    Polyfuse -> 5V

    Oder hab ich das falsch in Erinnerung? :huh:

  • Hallo Meigrafd,

    wenn Du hier nachschaust und nach 50 mA suchst, dann findet Du die Bestätigung meiner obigen Ausagen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (18. April 2016 um 17:09)


  • Kurz mal auf Deutsch: Zusammen aus allen GPIOs oder aus der3,3V Versorgung maximal 50mA ziehen. Aus einem GPIO allein max 16mA, optimal sind ca. 3mA (Spezifikation GPIO aus Datenblatt BCM).

    noch deutscher;

    nicht nur aus allen GPIO ziehen als Source; Quelle wenn der GOIO high ist und 3,3V liefert, auch wenn der GPIO auf low ist und eine andere quelle von extern liefert dürfen die Ströme 50/51mA nicht übersteigen weil die dann über den SoC nach dem sein GND fliessen und auch der kann nicht mehr Strom vertragen.


    Aus einem GPIO allein max 16mA,

    ABER doch nur wenn im Kernel alle Ausgangstreiber eingeschaltet sind,
    sind sie das?
    wo kann man das rausbekommen?
    und gilt das für alle Kernel?

    zeige es doch mal!
    Ich warte seit 2 Jahren das nicht nur alle das abschreiben sondern ich warte auch auf ein Programm wo man das überprüfen kann das alle Treiber aktiv sind für 16mA.

    lasst die PIs & ESPs 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)


  • Ich hatte das schon mal geschrieben. Aber die Basis ist das hier: https://de.scribd.com/doc/101830961/GPIO-Pads-Control2

    och manno, das weiss ich, ist das ein Programm zum Auslesen?
    (ich fasse es nicht)

    steht da irgendwas welche Kernelversion welche Ausgangstreiber einschaltet?
    nee? also nix neues ausser ständige Wiederholungen das der GPIO auf 16mA konfiguriert werden kann, aber keiner wirklich keiner sagt wie er konfiguriert ist!

    lasst die PIs & ESPs 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)


  • Na 8 mA ist die Standardkonfiguration.

    für alle Kernel, auch wenn ein Programm Amok läuft und das zur Laufzeit umgestellt wird?

    Vertrauen ist ja nett, ich vertraue dem nicht ohne Möglichkeit das auszulesen!

    lasst die PIs & ESPs 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)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!