2017-01-18 7 views
0

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?

+0

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

+0

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 –

+0

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

Antwort

0

Verwendung „pygame.display.set_mode()“ es wird die Fenster klicken Sie Pfeiltasten auf diesem Fenster initialisieren Sie Ausgabe erhalten wird

Verwandte Themen