Seite 1 von 1

Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 18:16
von Crisou
Hallo Leute

Ich hoffe es kann mir jemand helfen. Muss ein Projekt machen.

Möchte ein Auto steuern mit Raspberry pi 3 b+. Das Skript möcht ich im python schreiben. Der Motor für Antrieb rennt schon in die eine und andere Richtung.

Jetzt meine Frage, ich würde gerne den Motor mit Tastatureingabe steuern.
Hierzu gibt es schon viele Möglichkeiten. Aber komm damit nicht zurecht.

Hat vielleicht jemand einen Tipp wie es funktioniert?

Ich bitte um Antwort.

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 18:40
von __deets__
Verstehe ich nicht. Wenn du eine Tastatur am PI hat, der gleichzeitig die Motoren steuert - wohin faehrt denn das Auto dann? Das Tastaturkabel ist ja nicht so wahnsinnig lang...

Kannst du dein gesamtes Setup mal ein bisschen genauer beschreiben?

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 19:06
von Crisou
Ich muss mal vorab sagen Ziel ist es das Auto mittels Smartphone über Kamera zu steuern.

Als Zwischenschritt soll über eine Funktastatur den Antrieb und Lenkung zu steuern.

Verstehe nur nicht wie man die Eingabe deklariert

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 19:15
von Crisou
Ich habe ein Cada Technik Modellauto in dem 2 motoren sind. Und diese sollen über das Raspberry pi das auf dem Auto montiert ist gesteuert werden.

Ich möchte vorab aber schon an anderen Motoren testen mittels tastatur.

Ich mache Raspberry pi die ganze ansteuerung und mein Kollege die Verbindung vom Handy

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 19:38
von Sirius3
Und was hast Du schon ausprobiert? Womit kommst Du konkret nicht zurecht?

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 19:46
von __deets__
Es gibt da verschiedene Moeglichkeiten. Wenn das eh nur so zum Test aufgebaut wird, dann kannst du zB mit pygame arbeiten.

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 19:56
von Crisou
Das Problem ist weis nicht genau wie ich die methode genau aufbaue. Zumindest eine n wenig.

Ich muss ja eine Methode schreiben wo der Tastendruck ausgeführt wird. Ich möchte ja das solange ich die Taste gedrückt halte das Auto nach vor oder zurück fährt.

Kann mir jemand kurz diesen Methodenaufruf schreiben?

Dann wird ja mit def vorwärts()
Gpio.outpu(...) die Pins auf high oder Low gesetzt oder?

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 20:04
von __deets__
pygame hat eine Hauptschleife, in der bestaendig Events (also auch Tastaturdruecke) abgefragt werden. Darin musst du dann einfach deine Logik einbauen. Ein kompaktes Beispiel zum rumspielen ist zB die zweite Antwort hier, das sollte eigentlich funktionieren:

https://stackoverflow.com/questions/160 ... -in-pygame

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 20:07
von Crisou
Hey deets,

Danke mal für deine hilfe. Wird es mal ausprobieren. Wenn ich fragen habe kann ich mich wieder an dich wenden?

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 20:14
von __deets__
Ich bin ja hier, ja. Je konkreter die Fragen, je mehr Code, je besser. Und bitte oeffentlich posten, Beratung per PN mache ich nicht.

Re: Python Tastatureingabe

Verfasst: Samstag 20. Oktober 2018, 20:24
von Crisou
Ok vielen Dank fürs erste

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 08:08
von Crisou
guten morgen,

so ich habe versucht mal mit pygame ein kleines programm zu schreiben. Eine LED ein und ausschalten. Einfach zum kennenlernen

Hier der Code:

import RPi.GPIO as GPIO
import pygame, sys, os
from pygame.locals import *

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT, initial=GPIO.LOW)


def ledein():
GPIO.output(8, GPIO.HIGH)

def ledaus():
GPIO.output(8, GPIO.LOW)

events = pygame.event.get()
for event in events:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
ledein()
if event.key == pygame.K_ENTER:
ledaus()

ich bekomme aber in der console diese fehlermeldung:

Traceback (most recent call last):
File "led2.py", line 16, in <module>
events = pygame.event.get()
pygame.error: viedeo system not initialized

wo habe ich den fehler?
kann mir wer helfen?

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 08:33
von Sirius3
Die Fehlermeldung ist eindeutig: Du brauchst ein Video-System, also ein Fenster an das die Eingaben gesendet werden können. Warnungen sind da, um sie zu beheben, und nicht, um sie einfach zu ignorieren; daher fehlt noch ein gpio.finalize. sys und os werden importiert aber nicht benutzt.

Code: Alles auswählen

import RPi.GPIO as gpio
import pygame

def led_ein():
    gpio.output(8, gpio.HIGH)

def led_aus():
    gpio.output(8, gpio.LOW)

def main():
    try:
        gpio.setmode(gpio.BOARD)
        gpio.setup(8, gpio.OUT, initial=gpio.LOW)
        pygame.display.init()
        screen = pygame.display.set_mode((320, 240))
        while True:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        led_ein()
                    if event.key == pygame.K_ENTER:
                        led_aus()
    finally:
        gpio.finalize()

if __name__ == '__main__':
    main()

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 08:49
von Crisou
Hallo,

hab diesen code jetzt mal versucht. nur irgendwie führt er bei mir die events nicht aus.

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 09:05
von Crisou
programm führt wohl aus nur sobald ich die escape taste drücke kommt:

Traceback (most recent call last):
File "led2.py", line 28 in <module>
main()
File "led2.py", line 25 in main
GPIO finalize()
AttributeError: 'module' object has no attribute finalize

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 09:23
von Sirius3
Heißt ja auch »gpio.cleanup«.

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 09:59
von Crisou
das habe ich schon geändert

nur ich kann td nicht die LED was am raspi angeschlossen ist ein und auschalten.

oder brauch ich da wieder eine eigene funktion?

Re: Python Tastatureingabe

Verfasst: Sonntag 21. Oktober 2018, 18:44
von Sirius3
Jetzt mußt Du herausfinden, ob es am pygame liegt, oder ob das gpio nicht richtig funktioniert oder ob die LED nicht richtig angeschlossen ist. Ersteres läßt sich durch »print« an den richtigen Stellen herausfinden, zweiteres und drittes nur, indem man prüft, ob man auch den richtigen PIN hat und man die Schaltung prüft (richtige Polung, richtige Widerstände, etc).