Raspberry Pi Rätsel

  • Guten morgen zusammen,

    ich habe vor ein Rätsel mithilfe des Raspberry Pis zu erstellen.
    Das Rätsel soll folgendermaßen funktionieren: Am Anfang leuchten drei LEDs in einer bestimmten Reihenfolge auf. Danach muss der Spieler 3 Taster in der richtigen Reihenfolge drücken. Ein Taster ist einer LED zugeordnet. Wurde dreimal falsch gedrückt, so ist das Spiel vorbei.

    Ich wollte das ganze mit Python umsetzten. Ich hatte überlegt jeder LED und jedem Taster einen Wert zuzuweißen. Sodass zum Beispiel Taster 1 zu der roten LED gehört. Mit den vorhandenen Werten soll ein Array zufällig befüllt werden. Danach warten wir auf die Eingabe. Wird das erste Mal ein Taster betätigt, schauen wir in an den Arrayindex 0 nach. Stimmt der gedrückte Taster mit der Nummer überein, so wird der Arrayindex einen nach oben gesetzt. Ist der gedrückte Taster falsch, so wird eine "Fehler-Variable" nach oben gezählt.

    Ist dieses Vorhaben in Python mit den LEDs und Tastern am GPIO-Pin umsetzbar?


    Gruß,

    Frankus

  • Hallo Frankus,

    herzlich Willkommen in unserem Forum!

    Das ist mit jeder Programmiersprache umsetzbar, die auf dem Rapberry Pi verfügbar ist und - in welcher Form auch immer - GPIO unterstützt.

    Also nicht nur Python, sondern
    - Bash
    - Basic
    - C
    - C++
    - C#/mono
    - Icon
    - Java
    - Lazarus
    - Perl
    - Ruby
    - Scratch
    - ...

    mehr siehe hier oder auch dort.


    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.

    2 Mal editiert, zuletzt von Andreas (15. Oktober 2017 um 15:12)

  • Ja, das ist ganz sicher umsetzbar mit Python & GPIOs.

    Ein simples Programmgeruest ohne GPIOs saehe so aus:

  • framp nicht wirklich. LENGTH ist die Laenge der sich zu merkenden Kette. Drei ist die Anzahl der verkabelten Knoepfe. Das eine hat mit dem anderen ja nun nix zu tun ....

  • Stimmt. Ich bin unbewusst davon ausgegangen, dass 3 LEDs, 3 Taster auch eine Sequenz von 3 LEDs zu erraten sein soll.
    Dann ist

    Code
    values = [random.randint(1, LEDs) for _ in xrange(LENGTH)]


    und weiter oben

    Code
    LENGTH = 3
    LEDs = 2

    wohl besser :lol:
    Aber trotzdem sollte randint bei 1 anfangen und nicht bei 0 oder LEDs um 1 dekrementiert werden.

  • Hallo Frankus,

    wie ist die Frage gemeint, beziehst Du Dich auf ein Modul, das an der GPIO-Leiste angeschlossen ist und alle 26 bzw. 40 Pins belegt oder was an einen einzelnen ganz konkreten GPIO-Pin (z.B. GPIO0) dranhängt?

    Ein ganzes Modul "abzufragen" ist eher möglich, wenn es sich an die PiHAT-Definition hält und sich über I²C im System bekannt gibt (Pins 27 und 28 für I²C ID EEPROM): Ein evtl. vorhandenes I²C-EEPROM kann ausgelesen werden und gibt Hinweise auf das dazugehörige HAT-Modul.

    Wirklich schwierig bis unmöglich (?) wird es, wenn man ein bestimmtes Bauelement an einem konkreten GPIO-Pin erkennen will. Hier muss, um Defekte am RPi zu vermeiden, der zu testende GPIO-Pin zuerst auf "Eingang" gestellt werden. Dann kann man nur Low oder High messen. Je nach Widerstand des Bauteils und Anschluss auf GND oder 3,3V kann man evtl. einen entsprechenden Low- oder High-Pegel erkennen. Bei einer LED + Vorwiderstand wird dies aber definitiv scheitern.

    Aus dem einfachen Verhalten der GPIO-Pins resultieren dann auch die verwendeten Schaltungen:
    Ein Schalter wird beispielsweise zwischen GPIOx und GND angeschlossen. Gleichzeitig wird von GPIOx ein Widerstand (> 1k) mit 3,3V verbunden, ein sogenannter PullUp-Widerstand. Wenn der Schalter offen ist, fließt ein minimaler Strom vom 3,3V-Anschluss zum GPIO. Man kann einen HIGH-Pegel auslesen. Ist der Schalter geschlossen, misst man die nun direkt verbundene Masse als LOW-Pegel am GPIO.
    Das ist jetzt sehr vereinfachend erklärt, bei Fragen schau Dich auf einer Elektronikseite um.

    schlizbäda

  • Danke. Damit hast du meine Frage beantwortet. Ich wollte gerne alle angeschlossenen LEDs und Taster in ein Array schreiben. Aktuell mache ich das per Hand und hättes gerne automatisiert gehabt, damit ich nicht immer alles an die gleichen Pins klemmen muss.

  • Guten Tag zusammen,

    ich stehe vor einem Problem. Es gibt einfach so viele Anleitungen wie ein Taster an den Raspberry Pi angeschlossen wird, aber keine für einen Raspberry Pi 3. Nun ich möchte den Taster an den GPIO-PIN anschließen. Ich besitze solche Taster (http://www.u-r-rennert.de/dig/bilder_dig_sch1/taster3.gif) und 10k Ohm Widerstände mit dem Farbcode Braun - Schwarz - Orange - Gold. Gibt es eine Anleitung zum Anschließen an den Raspberry Pi mit kleinem Codebeispiel, welches beim Drücken des Taster ein print-Befehl ausgibt?

  • Bezueglich der GPIO hat sich zwischen PI3 und PI2 nichts signifikantes getan. Jedenfalls nicht bezogen auf GPIO-Funktionalitet, die alternativen Funktionen moegen sich geaendert haben.

    Forums-FAQ und Suchergebnisse anderer Art gelten also auch fuer den PI3 - inklusive Codebeispielen.

  • Es funktioniert, aber eine Frage habe ich noch. Nach dieser Verkabelung funktioniert es Link, aber diese Verkabelung nutzt nicht den 10k Widerstand, wie zum Beispiel hier beschrieben. Kann das denn Pi kaputt machen?

  • Ich bin kein grosser Elektronikgott, aber das sollte nicht schaden. Denn zusammen mit dem internen PullUp des PI (den du programmatisch setzen solltest) bildet der Taster einen Spannungsteiler. Wenn der Taster offen ist, somit sein Widerstand gegen unendlich geht, fliessen I=U/R an Strom. Bei U=3.3V und R ~= 50KOhm fliessen da Bruchteile von Milliampere.

    Wenn der Taster gegen Ground geschlossen wird, faellt die Spannung auf fast auf Ground, und mehr als die oben beschriebenen Milliampere koennen ja nicht fliessen.

Jetzt mitmachen!

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