Beheersing van een Raspberry Pi RC auto met een toetsenbord (5 / 8 stap)

Stap 5: Software

Hieronder is de python code u in om dit programma moet te werken. Sla het programma op als rc_car.py wanneer u klaar bent.

importeren van RPi.GPIO als io
io.setmode (io. BCM)
importeren van sys, tty, termios, tijd

# Deze twee blokken van code de PWM instellingen configureren voor
# de twee DC motoren op de RC auto. Het definieert de twee GPIO
# pinnen gebruikt voor de invoer, begint de PWM en sets de
# motors snelheid op 0
motor1_in1_pin = 4
motor1_in2_pin = 17
io.Setup (motor1_in1_pin, io. UIT)
io.Setup (motor1_in2_pin, io. UIT)
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. UIT)
io.Setup (motor2_in2_pin, io. UIT)
Motor2 = io. PWM(4,100)
Motor2.Start(0)
Motor2. ChangeDutyCycle(0)

# Het definiëren van de GPIO pinnen die zal worden gebruikt voor de LEDs op
# de RC auto en instellen van de uitgang op false
io.Setup (18, io. UIT)
io.output (18, False)

io.Setup (23, io. UIT)
io.output (23, False)

# De methode getch kunt bepalen welke toets is ingedrukt
# door de gebruiker op het toetsenbord door de toegang tot de systeembestanden
# Het keert dan de ingedrukte toets als een variabele
def getch():
FD = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
Try:
tty.setraw(sys.stdin.fileno())
CH = sys.stdin.read(1)
tot slot:
termios.tcsetattr (fd, termios. TCSADRAIN, old_settings)
retourneren van ch

# Deze sectie van code definieert de methoden gebruikt om te bepalen
# of een motor moet draaien vooruit of achteruit. De
# verschillende richtingen worden bereikt door een van de
# GPIO pinnen op true en anderzijds op false. Als de status van
# beide pins overeenkomen, die de motor niet zal veranderen.
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)

# Deze methode schakelt de verlichting uitschakelen wanneer de gebruiker
# op een bepaalde toets drukt. Het zal dan het veranderen van de status
# van de lichten, zodat het zal weten of ze inschakelen of
# af wanneer het volgende wordt aangeroepen.
def toggleLights():

globale lightStatus

if(lightStatus == false):
io.output (18, True)
io.output (23, True)
lightStatus = True
anders:
io.output (18, False)
io.output (23, False)
lightStatus = False

# Deze methode wordt de richting van het stuurwiel in-/ uitschakelen
# motor. De methode zal bepalen of de gebruiker wil
# om te schakelen van links of rechts afhankelijk van de toets zij drukken en
# Maak de juiste aanpassing. Het werkt als een knevel
# omdat het programma niet kan lezen van meerdere ingedrukte toetsen op
# hetzelfde moment. De mogelijke standen van de wielen zijn
# "right", "centrum" en "left". Het worden dan doorgevoerd in de
# de status van het wiel voor toegang tot de volgende keer wordt aangeroepen.
def toggleSteering(direction):

globale wheelStatus

Als (richting == "recht"):
Als (wheelStatus == "centrum"):
motor1_forward()
motor1. ChangeDutyCycle(99)
wheelStatus = "rechts"
Elif (wheelStatus == "links"):
motor1. ChangeDutyCycle(0)
wheelStatus = "centrum"

Als (richting == "links"):
Als (wheelStatus == "centrum"):
motor1_reverse()
motor1. ChangeDutyCycle(99)
wheelStatus = "left"
Elif (wheelStatus == "recht"):
motor1. ChangeDutyCycle(0)
wheelStatus = "centrum"

# Instellen van de PWM-pinnen op false zodat de motoren zal niet bewegen
# totdat de gebruiker op de eerste sleutel
io.output (motor1_in1_pin, False)
io.output (motor1_in2_pin, False)
io.output (motor2_in1_pin, False)
io.output (motor2_in2_pin, False)

# Globale variabelen voor de status van de lichten en stuurinrichting
lightStatus = False
wheelStatus = "centrum"

# Instructies voor wanneer de gebruiker een interface heeft
afdrukken ("w/s: versnelling")
afdrukken ("een/d: besturing")
afdrukken ("l: lights")
afdrukken ("x: exit")

# Oneindige lus die niet eindigen zal totdat de gebruiker op de
# afsluittoets
terwijl juist:
# Methode voor het ophalen van toetsenbord-teken is riep en redde
# in variabele
char = getch()

# De auto zal rijden naar voren wanneer de "w"-toets is ingedrukt
Als (char == "w"):
motor2_forward()
Motor2. ChangeDutyCycle(99)

# De auto zal draaien wanneer de "s"-toets is ingedrukt
Als (char == "s"):
motor2_reverse()
Motor2. ChangeDutyCycle(99)

# De "a"-toets schakelt het stuurwiel links
Als (char == "a"):
toggleSteering("left")

# De "d"-toets schakelt het stuurwiel rechts
Als (char == "d"):
toggleSteering("right")

# De 'l' drukt zal schakelen de LEDs in-/ uitschakelen
Als (char == "l"):
toggleLights()

# De "x" toets zal de lus breken en het programma afsluiten
Als (char == "x"):
afdrukken ("programma afgelopen")
pauze

# Aan het einde van elke lus stopt de versnelling motor
# en wacht op haar volgende opdracht
Motor2. ChangeDutyCycle(0)

# De toetsenbord karakter variabele wordt ingesteld op leeg, klaar
# om op te slaan van de toets die is ingedrukt
char = ""

# Programma zal ophouden alle GPIO activiteit vóór beëindiging
io.Cleanup()

Gerelateerde Artikelen

Beheersing van een RC Servo motor met een Arduino en twee pulsschakelaars

Beheersing van een RC Servo motor met een Arduino en twee pulsschakelaars

de naam zegt het al. Beheersing van een RC auto servomotor met een Arduino en sommige weerstanden, jumper draden en twee tactiele schakelaars. Ik maakte dit de tweede dag kreeg ik mijn Arduino, dus ik erg trots op mezelf ben.Stap 1: Onderdelenlijst O
Etikettering van een toetsenbord van de muziek met een silhouet Vinyl Cutter

Etikettering van een toetsenbord van de muziek met een silhouet Vinyl Cutter

Wanneer leren spelen van de piano of het toetsenbord kan het lastig zijn voor kinderen (en volwassenen!) te onthouden van de notities die overeenkomen met de toetsen. Ik gebruikte om mijn kinderen te helpen mijn ambachtelijke cutter om vinyl letter s
Het gebruik van een toetsenbord Matrix met Ardunio

Het gebruik van een toetsenbord Matrix met Ardunio

Matrix toetsenborden zijn cool! Het is als een toetsenbord die gemakkelijk kan worden gebruikt om de interface met de Arduino voor diverse verschillende projecten, van combo sloten aan rekenmachines aan draadloze afstandsbedieningen en extra toetsen
QWERTY: het omzetten van een toetsenbord in een MakeyMakey

QWERTY: het omzetten van een toetsenbord in een MakeyMakey

Een QWERTY-thats hoe ik heb genoemd it - is een apparaat dat werkt als een MakeyMakey (http://makeymakey.com/) maar die is gebouwd op een oude toetsenbord en een paar goedkope onderdelen. Eigenlijk, de meeste van de materialen op de instructable kan
De ingewanden van een toetsenbord mapping

De ingewanden van een toetsenbord mapping

Hey!Dit is een instructable over het toewijzen van de ingewanden van een toetsenbord. Meer in het bijzonder, gaan we proberen om te vinden welke contactpersonen verbinden met elkaar maken elke unieke ToetsIndrukken (KeyPress). Voor degenen die minder
De juiste manier te reinigen van een toetsenbord

De juiste manier te reinigen van een toetsenbord

De juiste manier te reinigen van een toetsenbord
Beheersing van een stappenmotor met de Raspberry Pi en Piface

Beheersing van een stappenmotor met de Raspberry Pi en Piface

Bijgewerkt April 2015Dit heb ik gemaakt omdat ik geen projecten met behulp van de PiFace heb gevonden.Forumonderwerp op www.raspberrypi.org:http://www.raspberrypi.org/phpBB3/viewtopic.php?f=37&t=54314&p=413902Hier is een eenvoudig project dat alle
Met behulp van een toetsenbord met de Raspberry Pi

Met behulp van een toetsenbord met de Raspberry Pi

ik heb twee klavieren van Jameco.com die ik wilde gebruiken met mijn Raspberry Pi.  Blijkt dat het is vrij eenvoudig, zo lang als je weet wat de pinout structuur is voor het toetsenbord.Dit instructable brengt u door de stappen die ik moest doorlopen
Beheersing van een Arduino Board met behulp van een infrarood afstandsbediening

Beheersing van een Arduino Board met behulp van een infrarood afstandsbediening

I-IntroductionHallo iedereen, mijn naam is Noreddine Kessa, ik ben een liefhebber van de elektronica.  Ik had plezier dit weekend spelen met mijn nieuwe speeltje, Arduino ATmega328 DIY Kit die ik kreeg op eBay, en ik zou graag de vreugde delen met ie
JavaScript voor IoT: beheersing van een knop op de Raspberry Pi via Node.js

JavaScript voor IoT: beheersing van een knop op de Raspberry Pi via Node.js

Deze tutorial legt uit hoe de berg een "push te maken" knop op een breadboard, aangesloten op Raspberry Pi en het besturing met JavaScript en Node.js. Het hele voorbeeld is open source en is beschikbaar op GitHub onder de MIT-licentie. Het algor
Beheersing van een LED met arduino en Wifly schild

Beheersing van een LED met arduino en Wifly schild

Om te demonstreren hoe u apparaten via wifi met behulp van de arduino wifly shield kunt controleren, zal ik schakelaar aan en uit een LED door een http-verzoek te sturen vanuit mijn webbrowser naar het wifly-schild.Vereisten:1. de Arduino uno2. Wifly
Beheersing van een stappenmotor met een Arduino

Beheersing van een stappenmotor met een Arduino

Dit leerprogramma zal u tonen hoe te bedienen van een stappenmotor die werd gered van een oude printer met een Arduino.Stap 1: Wat is een Stepper Motor? Een stappenmotor bestaat uit twee delen, een rotor en een stator. De rotor is het deel van de mot
Beheersing van een 3D-printer met handgebaren

Beheersing van een 3D-printer met handgebaren

ik heb geschreven over het vóór maar ik beheren een creatieve technologie lab aan het California College van de kunsten. Ik helpen studenten met een breed scala aan vaardigheden, het maken van een breed scala van projecten. Een van de vele onderdelen
Beheersing van een karakter-LCD met een Arduino

Beheersing van een karakter-LCD met een Arduino

Hallo! Vandaag zal ik introduceren karakter LCD's en laten zien hoe ze op een Arduino aansluiten.Het is allemaal heel eenvoudig en gebruikt slechts 6 PINS met interface!Opmerking: het beeld is niet de mijne en komt uit http://www.micro-examples.com/p