Mehrere LED's via GPIO steuern

  • Guten Tag

    Ich denke mal das dieses Thema schon mehrfach hier vertreten ist, habe aber leider nichts passendes gefunden, daher mache ich hier ein neues Thema auf.

    Ich habe an die Gpio Pins je eine LED (LED Nummernanzeige) geschalten. und ein Programm dazu gefunden um die LED's einzeln anzusteuern. Sprich ein Lauflicht.

    Ich möchte aber auch Zahlen bis 99 anzeigen lassen. dazu müsste ich jedoch mehrere Gpio Pins gleichzeitig ansteuern, was ich nicht so richtig hinbekomme.

    Vielleicht könnt ihr mir hier helfen.

    Das Programm:

    Wie kann ich als Beispiel zwei Pins ansteuern?

    Danke für eure Hilfe

  • Hallo,

    Programmieren ist nicht raten und Programmieren ist nicht Copy&Paste plus der Hoffnung, dass es funktioniert...

    Du musst halt mehrere Pins in einem Durchgang setzen, nicht nur einen wie in deinem Beispiel.

    Falls du den von dir geposteten Code nicht verstehst, dann fehlen dir definitiv Programmiergrundlagen / C Grundlagen. Dann solltest mal ein bis zwei Schritte zurück gehen und ein paar Grundlagen lernen. Sonst wird das nicht.

    Kannst du C oder hast du den Code "zufällig" gefunden und erfüllt deine Bedürfnisse? Wenn du kein C kannst - kannst du eine andere Programmiersprache?

    Gruß, noisefloor

  • Ich versuche gerade C Programmieren zu lernen. Wobei ich einige Sachen noch nicht ganz verstehe.

    Das Programm habe ich rauskopiert und etwas verändert(um zu sehen wie es arbeitet).

    Ich kann soweit keine Programmiersprache. Habe kein Studium und auch sonst bislang nichts mit Programmieren zu tun gehabt.

    vllt erklärt es was ich kann

    Weiter weiß ich jedoch nichts, kann auch noch keine Programme selbst schreiben, da ich noch nicht verstanden habe in welcher Reihenfolge irgendwas kommt. Außer die Bibliothek die kommt ganz oben.

    Auch suche ich schon im i-net wie blöde. Finde aber meißt nur bash

  • // i=0 wenn i = wahr ist, führe folgendes aus:

    Nö, absolut nicht. Richtig wäre: weise der zuvor deklarierten Variable i (int i;) den Wert 0 zu.

    // i<17 keine ahnung, ebenfalls i++ kein plan

    Tatsächlich... Dann bitte doch noch mal, wie von noisefloor vorgeschlagen, zurück zur Theorie.

    i < 17 ist ein Logischer Ausdruck, der WAHR ist, wenn i kleiner als 17 ist und FALSCH, wenn i 17 oder größer ist. i++ inkrementiert i um 1. Das sind alles wirklich einfache Dinge, die Teil der for-Schleife in C sind und die du verinnerlichen solltest, wenn du tatsächlich etwas programmieren magst.

    :2cents:

  • Schaue mir gerade ein Programm auf :

    http://raspberrypiguide.de/howtos/raspberry-pi-gpio-how-to/

    an und stelle fest das hier die LED's auf 'immer aus' geschalten werden in Zeile 4

    danach Zeile 6 an, wartezeit 100ms, dann wieder aus in Zeile 8

    ist etwas anders geschrieben als bei mir, aber da liegt in meinem Programm der Fehler!!

    Code
    1 // Schalte GPIO 17 (=WiringPi Pin 0) auf Ausgang  pinMode(0, OUTPUT);
    2 // Schalte GPIO 24 (=WiringPi Pin 5) auf Eingang  pinMode(5, INPUT);
    3 // Dauerschleife  while(1) {    4 // LED immer ausmachen    digitalWrite(0, 0);
    5 // GPIO lesen    if(digitalRead(5)==1) {      6 // LED an      digitalWrite(0, 1);
    7 // Warte 100 ms      delay(100);
    8 // LED aus      digitalWrite(0, 0);
    9 // Warte 100 ms      delay(100);    }  }
    10 }
  • Hallo Zottel,

    ich nehme an du bist auf dem Raspberry unterwegs, sonst hättest du nicht den Weg in dieses Forum gefunden. Warum nimmst du da nicht Python? Diese Sprache lässt sich deutlich leichter erlernen und du musst auch nicht nach jeder Änderung Kompilieren. C ist etwas für Spezialisten, z.B. wenn du sehr hohe Anforderungen an die Ausführungsgeschwindigkeit des fertigen Programms hast. Also wenn du nicht aus anderen Gründen unbedingt C lernen musst, nimm Python!

    Außerdem solltest du dein Ziel besser beschreiben. Verstehe ich richtig dass du zwei Siebensegment-LED-Anzeigen hast und darauf die Zahlen 0 bis 99 darstellen möchtest?

    Gruß, Dieter

  • Hallo,

    hadi: bei grundlegenden Verständnisproblemen nützt auch Python nichts.

    Quote

    Außerdem solltest du dein Ziel besser beschreiben.

    Ist es doch. Es sollen mehrere LEDs gleichzeitig leuchten bzw. Ausgänge gleichzeitig geschaltet werden. Warum das so sein soll bzw. welche LED wofür steht ist doch hier sekundär.

    Zottel386 : die Argumente der for-Schleife sind die Startbedingung, die Endbedingung und die Operation auf die Zählervariable. Das ist nicht wirklich C-spezifisch, das ist bei ganz vielen Programmiersprachen so (außer bei Python, da ist a) die Syntax anders und b) muss man da selten eine Variable für eine Schleife so hoch zählen ;) ).

    Gruß, noisefloor

  • Also ja das Raspi soll als Steuerung dienen. Da ich noch ein anderes Projekt über den Raspi laufen habe. Die Nummern laufen dabei eigentlich nur nebenbei um die Zeit ablesen zu können, wie lange Projekt A zum Arbeiten benötigt. Projekt A muss ich allerdings ebenfalls noch über C programmieren(keine andere möglichkeit). Deshalb wäre mir C am liebsten. Somit kann ich beide Sachen letztendlich in einem Programm einbinden.

  • Also ja das Raspi soll als Steuerung dienen. Da ich noch ein anderes Projekt über den Raspi laufen habe. Die Nummern laufen dabei eigentlich nur nebenbei um die Zeit ablesen zu können, wie lange Projekt A zum Arbeiten benötigt. Projekt A muss ich allerdings ebenfalls noch über C programmieren(keine andere möglichkeit). Deshalb wäre mir C am liebsten. Somit kann ich beide Sachen letztendlich in einem Programm einbinden.

    Trotzdem ist mir noch nicht klar, was du erreichen möchtest. In deinem C-Programm werden 17 Pins (also letztlich LEDs) angesteuert. Zwei Siebensegment-Ziffernanzeigen hätten zusammen aber nur 14 LEDs. Wenn du damit eine "00" darstellen wolltest, müsstest du gleichzeitig alle LEDs bis auf die beiden mittleren waagrechten Segmente einschalten. Bei der "88" müsstest du alle Segmente (=LEDs) einschalten. Bei "11" nur jeweils die beiden senkrechten Segment rechts. Meinst du so etwas in der Art?

  • ich habe 8 segmente pro zahl. Weil rechts unten ein punkt ist. Und wie die zahlen einzeln dargestellt werden müssen erklärt sich selbst. Erstmal ging es mir darum aus einem lauflicht mit einer angesteuerten led eine anzeige zu machen bei der mehr als eine led angesteuert wird. Der rest ergibt sich selbst.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!