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.
Python Tastatureingabe
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?
Kannst du dein gesamtes Setup mal ein bisschen genauer beschreiben?
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
Als Zwischenschritt soll über eine Funktastatur den Antrieb und Lenkung zu steuern.
Verstehe nur nicht wie man die Eingabe deklariert
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
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
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?
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?
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
https://stackoverflow.com/questions/160 ... -in-pygame
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?
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?
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()
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
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
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).