Darf ich bitte wissen, warum es keine Ausgabe auf dem Bildschirm für diesen Quellcode gibt.Auch bitte sagen Sie mir, warum und wie ich es beheben kann.Keine Ausgabe von Python. Verbunden mit Arduino
Das Projekt basiert auf diesem Quellcode. AutoRCCar on GitHub
Ich habe mein Arduino Uno mit diesem Code geflasht
// assign pin num
int right_pin = 6;
int left_pin = 7;
int forward_pin = 10;
int reverse_pin = 9;
// duration for output
int time = 50;
// initial command
int command = 0;
void setup() {
pinMode(right_pin, OUTPUT);
pinMode(left_pin, OUTPUT);
pinMode(forward_pin, OUTPUT);
pinMode(reverse_pin, OUTPUT);
Serial.begin(115200);
}
void loop() {
//receive command
if (Serial.available() > 0){
command = Serial.read();
}
else{
reset();
}
send_command(command,time);
}
void right(int time){
digitalWrite(right_pin, LOW);
delay(time);
}
void left(int time){
digitalWrite(left_pin, LOW);
delay(time);
}
void forward(int time){
digitalWrite(forward_pin, LOW);
delay(time);
}
void reverse(int time){
digitalWrite(reverse_pin, LOW);
delay(time);
}
void forward_right(int time){
digitalWrite(forward_pin, LOW);
digitalWrite(right_pin, LOW);
delay(time);
}
void reverse_right(int time){
digitalWrite(reverse_pin, LOW);
digitalWrite(right_pin, LOW);
delay(time);
}
void forward_left(int time){
digitalWrite(forward_pin, LOW);
digitalWrite(left_pin, LOW);
delay(time);
}
void reverse_left(int time){
digitalWrite(reverse_pin, LOW);
digitalWrite(left_pin, LOW);
delay(time);
}
void reset(){
digitalWrite(right_pin, HIGH);
digitalWrite(left_pin, HIGH);
digitalWrite(forward_pin, HIGH);
digitalWrite(reverse_pin, HIGH);
}
void send_command(int command, int time){
switch (command){
//reset command
case 0: reset(); break;
// single command
case 1: forward(time); break;
case 2: reverse(time); break;
case 3: right(time); break;
case 4: left(time); break;
//combination command
case 6: forward_right(time); break;
case 7: forward_left(time); break;
case 8: reverse_right(time); break;
case 9: reverse_left(time); break;
default: Serial.print("Invalid Command\n");
}
}
Dann habe ich die rc_control_test.py ausgeführt haben
dem Code
__author__ = 'zhengwang'
import serial
import pygame
from pygame.locals import *
class RCTest(object):
def __init__(self):
pygame.init()
self.ser = serial.Serial('COM3', 115200, timeout=1)
self.send_inst = True
self.steer()
def steer(self):
while self.send_inst:
for event in pygame.event.get():
if event.type == KEYDOWN:
key_input = pygame.key.get_pressed()
# complex orders
if key_input[pygame.K_UP] and key_input[pygame.K_RIGHT]:
print("Forward Right")
self.ser.write(chr(6))
elif key_input[pygame.K_UP] and key_input[pygame.K_LEFT]:
print("Forward Left")
self.ser.write(chr(7))
elif key_input[pygame.K_DOWN] and key_input[pygame.K_RIGHT]:
print("Reverse Right")
self.ser.write(chr(8))
elif key_input[pygame.K_DOWN] and key_input[pygame.K_LEFT]:
print("Reverse Left")
self.ser.write(chr(9))
# simple orders
elif key_input[pygame.K_UP]:
print("Forward")
self.ser.write(chr(1))
elif key_input[pygame.K_DOWN]:
print("Reverse")
self.ser.write(chr(2))
elif key_input[pygame.K_RIGHT]:
print("Right")
self.ser.write(chr(3))
elif key_input[pygame.K_LEFT]:
print("Left")
self.ser.write(chr(4))
# exit
elif key_input[pygame.K_x] or key_input[pygame.K_q]:
print 'Exit'
self.send_inst = False
self.ser.write(chr(0))
self.ser.close()
break
elif event.type == pygame.KEYUP:
self.ser.write(chr(0))
if __name__ == '__main__':
RCTest()
aber nur diese Anzeige in der Konsole
RESTART: C:\Users\Raptor_Is_Online\Desktop\AutoRCCar\test\rc_control_test.py
Wenn möglich Bitte helft mir. Alle Fragen sind willkommen. Ich bin sehr neu in Python, da ich gerade C++ lerne, aber dieses Projekt ist in Python. Wie installiere ich das?
setzen mehr 'print()' und Mabe Sie werden sehen, wo das Problem ist. Frage ist, wie Sie Python-Code ausführen, haben Sie Pygame und SDL1.2 installiert? – furas
Ich habe meinen Code im Leerlauf ausgeführt. Ich drückte Run Module und es öffnete einen weiteren Leerlauf, in dem ich die oben erwähnte Ausgabe erhielt. Ja ich habe Pygame aber nicht SDL 1.2. Auch wo und was soll ich drucken() wie was tippe ich hinein? @furas –
zuerst direkt in cmd.exe mit 'python.exe your_script.py' ausführen. Vielleicht zeigt es eine Fehlermeldung die IDLE nicht anzeigen kann und es neu startet. Später können Sie 'print()' überall einfügen und Werte in Variablen ausgeben (zB print ("self.ser:", self.ser) ') und Nachrichten wie' "vor pygame.init()" '. Auf diese Weise können Sie sehen, wann es abstürzt und welche Werte in diesem Moment in Variablen waren. Oder lerne den Debugger zu benutzen;) – furas