Controlar un Raspberry Pi coche RC con teclado un (5 / 8 paso)

Paso 5: Software

A continuación es el python código que necesita en orden para este programa de trabajo. Guarde el programa como rc_car.py cuando haya terminado.

importación RPi.GPIO como io
IO.setMode (io. BCM)
Import sys, tty, termios, tiempo

# Estos dos bloques de código configuración PWM
# el DC dos motores en el coche de RC. Define los dos GPIO
pernos # utilizados para la entrada, comienza la PWM y establece la
velocidad de los motores # 0
motor1_in1_pin = 4
motor1_in2_pin = 17
IO.Setup (motor1_in1_pin, io. HACIA FUERA)
IO.Setup (motor1_in2_pin, io. HACIA FUERA)
motor1 = io. PWM(4,100)
motor1.Start(0)
motor1. ChangeDutyCycle(0)

motor2_in1_pin = 24
motor2_in2_pin = 25
IO.Setup (motor2_in1_pin, io. HACIA FUERA)
IO.Setup (motor2_in2_pin, io. HACIA FUERA)
motor2 = io. PWM(4,100)
motor2.Start(0)
motor2. ChangeDutyCycle(0)

# Definición de los pines GPIO que serán utilizados para los LEDs en
coche # la RC y la salida en falso
IO.Setup (18, io. HACIA FUERA)
IO.Output (18, falso)

IO.Setup (23, io. HACIA FUERA)
IO.Output (23, False)

# El método de getch puede determinar que tecla ha sido presionada
# por el usuario en el teclado mediante el acceso a los archivos de sistema
# Entonces volverá la tecla presionada como una variable
getch() Def:
FD = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tratar de:
TTY.setraw(sys.stdin.fileno())
CH = sys.stdin.read(1)
Finalmente:
termios.tcsetattr (fd, termios. TCSADRAIN, old_settings)
volver a ch

# En esta sección del código define los métodos utilizados para determinar
# Si un motor tiene que girar hacia adelante o hacia atrás. El
diferentes direcciones # se logran mediante el establecimiento de uno de los
# Pines GPIO a true y el otro a false. Si el estado de
# coinciden con los pines, el motor no girará.
DEF motor1_forward():
IO.Output (motor1_in1_pin, True)
IO.Output (motor1_in2_pin, False)

DEF motor1_reverse():
IO.Output (motor1_in1_pin, False)
IO.Output (motor1_in2_pin, True)

DEF motor2_forward():
IO.Output (motor2_in1_pin, True)
IO.Output (motor2_in2_pin, False)

DEF motor2_reverse():
IO.Output (motor2_in1_pin, False)
IO.Output (motor2_in2_pin, True)

# Este método cambiará las luces de encendido/apagado cuando el usuario
# presiona una tecla determinada. Luego cambiará el estado de
# de las luces para que lo sepan si a o
# cuando está próximo llamado.
DEF toggleLights():

lightStatus global

if(lightStatus == false):
IO.Output (18, True)
IO.Output (23, True)
lightStatus = True
otra cosa:
IO.Output (18, falso)
IO.Output (23, False)
lightStatus = False

# Este método cambiará la dirección de la dirección
motor #. El método va a determinar si el usuario desea
# para girar a la izquierda o derecha dependiendo de la tecla que oprime y
# luego realizar el ajuste correspondiente. Funciona como un palanca
# porque el programa no puede leer múltiples llaves prensadas en
# al mismo tiempo. Las posibles posiciones de las ruedas son
# "derecha", "centro" y "la izquierda". Luego se actualizará el
Estado de # de la rueda para acceder a la siguiente vez que se llama.
DEF toggleSteering(direction):

wheelStatus global

Si (dirección == "derecho"):
Si (wheelStatus == "centro"):
motor1_forward()
motor1. ChangeDutyCycle(99)
wheelStatus = "derecho"
Elif (wheelStatus == "izquierda"):
motor1. ChangeDutyCycle(0)
wheelStatus = "centro"

Si (dirección == «izquierda»):
Si (wheelStatus == "centro"):
motor1_reverse()
motor1. ChangeDutyCycle(99)
wheelStatus = "left"
Elif (wheelStatus == "derecho"):
motor1. ChangeDutyCycle(0)
wheelStatus = "centro"

# Establecer los pines PWM en false para que no se muevan los motores
# hasta que el usuario presiona la tecla
IO.Output (motor1_in1_pin, False)
IO.Output (motor1_in2_pin, False)
IO.Output (motor2_in1_pin, False)
IO.Output (motor2_in2_pin, False)

# Globales variables en el estado de las luces y la dirección
lightStatus = False
wheelStatus = "centro"

# Instrucciones para cuando el usuario tiene una interfaz
Imprimir ("w/s: aceleración")
Imprimir ("un/d: dirección")
Imprimir ("l: luces")
Imprimir ("salida de x:")

# Lazo infinito que no terminará hasta que el usuario presiona el
tecla de salida #
Aunque la verdad:
# Método de recuperación teclado carácter es llamado y guardado
# en la variable
char = getch()

# El coche va a conducir hacia adelante cuando se presiona la tecla "w"
Si (char == "w"):
motor2_forward()
motor2. ChangeDutyCycle(99)

# El coche va a retroceder cuando se presiona la tecla "s"
Si (char == "s"):
motor2_reverse()
motor2. ChangeDutyCycle(99)

# La tecla "a" alternará la dirección izquierda
Si (char == "a"):
toggleSteering("left")

# La tecla "d" alternará la dirección derecha
Si (char == "d"):
toggleSteering("right")

# La tecla "l" será cambiar los LEDs de encendido/apagado
Si (char == "l"):
toggleLights()

# La tecla "x" será romper el bucle y salir del programa
Si (char == "x"):
Imprimir ("programa terminado")
rotura

# Al final de cada bucle se detendrá el motor de aceleración
# y esperar a su siguiente comando
motor2. ChangeDutyCycle(0)

# La variable de caracteres de teclado se establecerá en blanco, listo
# guardar la siguiente tecla que se presiona
char = ""

# Programa cesará toda actividad GPIO antes de terminar
IO.Cleanup()

Artículos Relacionados

ESP8266 y Visuino: mando a distancia WiFi Smart coche Robot con Wii Nunchuck

ESP8266 y Visuino: mando a distancia WiFi Smart coche Robot con Wii Nunchuck

Que coche elegante se establece cuando se combinan con Los módulos de controladores Motor L298N, ofrecen una de las maneras más fáciles de fabricar coches robot. Ya hice un Instructable sobre cómo puede controlar coche Smart con Arduino y Joystick. S
Arduino Uno y Visuino: controlar Robot coche Smart con Joystick y L298N controlador de Motor

Arduino Uno y Visuino: controlar Robot coche Smart con Joystick y L298N controlador de Motor

Que coche elegante se establece cuando se combinan con Los módulos de controladores Motor L298N, ofrecen una de las maneras más fáciles de fabricar coches robot. El Módulo del controlador Motor L298N es fácil de controlar con Arduino, y con la ayuda
Controlando un motor servo con teclado

Controlando un motor servo con teclado

se han discutido las operaciones básicas de control de motor servo en interconexión servo con 8051. Este proyecto permite que el motor servo para mover a un ángulo especificado por el usuario. El tren de pulso necesario para girar el servo es produci
Detector láser de Arduino con teclado

Detector láser de Arduino con teclado

Hola a todos!!!!!!He sido jugar con unos pocos componentes y mi arduino. He descubierto este proyecto la semana pasada y sólo tenía que compartir con todos ustedes. Lo que es, es un rayo láser que golpea una célula fotoeléctrica. El arduino lee la cé
IoT - controlar un Raspberry Pi Robot por internet con HTML y shell scripts sólo

IoT - controlar un Raspberry Pi Robot por internet con HTML y shell scripts sólo

(Si te gusta este Instructables, no olvide votar en ella (por encima de: bandera de la esquina a la derecha). está compitiendo en concursos de automatización y de INTERNET de las cosas. ¡Muchas gracias! ;-)En este instructables, aprenderemos cómo cre
Raspberry Pi 2 NAS con Owncloud, Samba y MiniDlna

Raspberry Pi 2 NAS con Owncloud, Samba y MiniDlna

Para empezar, este es mi primer Instructable. Lo que estoy creando con ello esperamos ayudar a otros con este proceso. IV pasado sobre una semana y muchas horas intentando diferentes combinaciones de servidores y tutoriales que explican la mayor part
Coche robot (con doble tren de la impulsión)

Coche robot (con doble tren de la impulsión)

Hemos creado un robot para una competencia de robótica del colegio. La competencia fue controlar remotamente un robot que podría recoger una pelota de golf, maniobra de un curso que incluye puentes apretadas vueltas y una pista de pendiente de 30 gra
Hackear un coche RC con Arduino y Android

Hackear un coche RC con Arduino y Android

(Si te gusta este Instructable, no olvide votar en ella (por encima de: bandera de la esquina a la derecha). está compitiendo en robótica y sensores concursos. ¡Muchas gracias! ;-)Cada vez que entra a una tienda de juguetes y ver coches de control re
Kit manos libres bluetooth de coche barato con música en streaming (A2DP)

Kit manos libres bluetooth de coche barato con música en streaming (A2DP)

Kits de coche bluetooth opcional pueden costar un montón de $$$ en sus tiendas pero hay una manera mucho más barata que el kit manos libres inalámbrico en su vehículo que también tocará música desde su teléfono en su sistema estéreo de coches. Este d
¿Controlar tu música sin cables con el ratón Logitech

¿Controlar tu música sin cables con el ratón Logitech

han siempre necesitado controlar tu música sin cables? Con un poco de software y un ratón de Logitech, es fácil. Vamos a ir sobre cómo configurar el ratón para que puede pausar, saltar y jugar de nuevo hasta que te quedas sin pilas.Aquí es lo que nec
Control de motor Servo con teclado

Control de motor Servo con teclado

¡¡¡He vuelto!!!Bueno Hola a todos!!!! Hace ya bastante tiempo publiqué aquí. Un poco ocupado con los estudios últimamente. Pero sin embargo, hoy me gustaría compartir con usted los individuos acerca de un experimento sencillo sobre arduino y servo mo
Escudo del Arduino RC coche bluetooth con motor

Escudo del Arduino RC coche bluetooth con motor

Para poder crearlo saludando:-Arduino UnoEscudo del motor - Arduino-Modulo bluetooth hc-06-Bateria________________Opcionales-Led-ZumbadorPaso 1: Cambiar la placa del coche por el arduinoHay eliminar la placa dejando solo los cables de motores. Asi se
RatPhone - 3 G FONA Arduino celular teléfono celular móvil con teclado botón Retro y rata de captura de la aplicación

RatPhone - 3 G FONA Arduino celular teléfono celular móvil con teclado botón Retro y rata de captura de la aplicación

No importa el iPhones y Androids. Aquí está el ratPhone! NO se es definitivamente de un teléfono inteligente. Pero no es un estúpido teléfono. Usted no podrá perder horas interminables en Facebook o Twitter, pero le ayudará a atrapar las ratas y otra
Cómo controlar un motor paso a paso con un FPGA

Cómo controlar un motor paso a paso con un FPGA

Este instructivo le guiará por el proceso y algunos conocimientos sobre cómo conseguir un motor paso a paso trabajando en una FPGA. Específicamente un Motor de pasos a Nema, Digilent Basys 3 y Digilent PmodSTEP.Actualmente soy profunda en el proceso