Arduino met behulp van de joystick controle (3 / 5 stap)

Stap 3: programma's


ik heb toegevoegd de programma's die u nodig

Arduino:

/*

  • JoystickSerialServo
  • --------------
  • Servo bediening met een PC en Joystick

*

*

*/

/ ** Deze waarden voor uw servo en setup, aanpassen indien nodig ** /
int servoPin = 3; controle pin voor servomotor
int minPulse = 600; minimale servo positie (te vinden gebruik google)
int maxPulse = 2400; maximale servo positie (te vinden gebruik google)
int refreshTime = 20; tijd (ms) tussen pulsen (50Hz)

/ ** De Arduino zal deze waarden berekenen voor u ** /
int centerServo; servo middenpositie
int pulseWidth; Servo pulsbreedte
int servoPosition; geboden servo positie, 0-180 graden
int pulseRange; Max pulse - min pulse
lange lastPulse = 0; geregistreerde tijd (ms) van de laatste puls

VOID Setup {}
pinMode (servoPin, OUTPUT); Set servo pin als een uitgang pins
pulseRange = maxPulse - minPulse;
centerServo = maxPulse - ((pulseRange) / 2);
pulseWidth = centerServo; Geven de servo uitgangspunt (of het drijft)
Serial.begin(9600);
}

void loop {}
seriële ingang wachten
Als (Serial.available() > 0) {}
Lees de binnenkomende byte:
servoPosition = Serial.read();

berekenen pulseWidth van servoPosition
pulseWidth = minPulse + (servoPosition * (pulseRange/180));

stoppen met servo puls op de min en max
Als (pulseWidth > maxPulse) {pulseWidth = maxPulse;}
Als (pulseWidth < minPulse) {pulseWidth = minPulse;}

debug
Serial.println(servoPosition);
}

de servo elke 20 ms (refreshTime) met de huidige pulseWidth Pulse
Dit zal houden de servo's positie als ongewijzigd of verplaatsen als gewijzigd
Als (millis() - lastPulse > = refreshTime) {}
digitalWrite (servoPin, hoge); Start van de pols
delayMicroseconds(pulseWidth); pulsbreedte
digitalWrite (servoPin, laag); stoppen van de pols
lastPulse = millis(); opslaan van het tijdstip van de laatste puls
}
}

python:

#! / usr/bin/env python
#
# joystick-servo.py
#
# gemaakt van 19 December 2007
# copyleft 2007 Brian D. Wendt
# http://principialabs.com/
#
# code aangepast van:
# http://svn.lee.org/swarm/trunk/mothernode/python/multijoy.py
#
# Opmerking: Dit script vereist de volgende Python modules:
# pyserial - http://pyserial.sourceforge.net/
# pygame - http://www.pygame.org/
# Win32 gebruikers wellicht ook nodig:
# pywin32 - http://sourceforge.net/projects/pywin32/
#

seriële importeren
pygame importeren

# toestaan meerdere joysticks
vreugde =]

# Arduino USB poortadres (probeer "COM5" op Win32)
Usbport = "COM8"

# usb seriële verbinding definieert met Arduino
ser seriële =. Serieel (usbport, 9600)

# handvat joystick gebeurtenis
def handleJoyEvent(e):
als e.type == pygame. JOYAXISMOTION:
as = "onbekend"
Als (e.dict['axis] == 1):
as = "X"

Als (e.dict['axis] == 0):
as = "Y"

Als (e.dict['axis] == 2):
as = "Throttle"

Als (e.dict['axis] == 3):
as = "Z"

Als (as! = "onbekend"):
Str = "as: %s; Waarde: %f "% (as, e.dict['value'])
# uncomment om te debuggen
#output (str, e.dict['joy'])

# Arduino joystick-servo kappen
Als (as == "X"):
POS e.dict['value =']
# joystick positie omzetten in servo increment, 0-180
bewegen = ronde (pos * 90, 0)
Als (verplaatsen < 0):
Servo = int (90 - abs(move))
anders:
Servo = int (beweging + 90)
# positie omzetten in ASCII-teken
servoPosition = chr(servo)
# en Arduino verzenden via seriële verbinding
ser.write(servoPosition)
# uncomment om te debuggen
#print servo, servoPosition

Elif e.type == pygame. JOYBUTTONDOWN:
Str = "knop: %d" % (e.dict['button'])
# uncomment om te debuggen
#output (str, e.dict['joy'])
# 0 (trigger) van de knop Afsluiten
Als (e.dict['button "] == 0):
afdrukken "Bye! \n"
ser.Close()
Quit()
anders:
Pass

# print de joystick positie
def uitgang (lijn, stok):
afdrukken "Joystick: %d; %s"% (stick, lijn)

# wachten voor joystick input
def joystickControl():
terwijl juist:
e = pygame.event.wait()
Als (e.type == pygame. JOYAXISMOTION of e.type == pygame. JOYBUTTONDOWN):
handleJoyEvent(e)

de belangrijkste methode #
def main():
# initialiseren pygame
pygame.joystick.init()
pygame.display.init()
zoniet pygame.joystick.get_count():
afdrukken "\nPlease sluit een joystick en start opnieuw. \n"
Quit()
afdrukken "\n%d joystick(s) gedetecteerd." % pygame.joystick.get_count()
voor ik in range(pygame.joystick.get_count()):
myjoy = pygame.joystick.Joystick(i)
myjoy.init()
Joy.Append(myjoy)
afdrukken "Joystick % d:" % (i) + joy[i].get_name()
afdrukken "Depress trigger (knop 0) te stoppen. \n"

# joystick luisteraar lus uitvoeren
joystickControl()

# gebruik als een module of standalone script toestaan
als naam == "belangrijkste":
Main()

Gerelateerde Artikelen

Met behulp van een Joystick controle stappenmotoren met een FPGA

Met behulp van een Joystick controle stappenmotoren met een FPGA

In de derde stap in mijn reis om opnieuw de klauw-spel met de Basys3, heb ik verbonden twee PmodSTEPs, twee stappenmotorenen de PmodJSTK met de Basys3 zodat ik elk van de servo's met de PmodJSTK controleren kan.Om dit te doen verbonden ik heb met de
Met behulp van een joystick met je Arduino

Met behulp van een joystick met je Arduino

Joysticks zijn een grote bron van input voor een project. Vooral voor Robotica. Als hardware hackers hebben de meesten van ons hield altijd dit soort dingen. Behalve de nieuwe jongens daartoe vindt het misschien moeilijk te begrijpen van het concept
Mobile Application Monitor en Control Arduino, met behulp van kito.io IOT Platform

Mobile Application Monitor en Control Arduino, met behulp van kito.io IOT Platform

Bewaking en beheersing van je Arduino uit uw kito Mobile App.Ik heb een IOT Platform ontwikkeld voor het helpen van DIY Makers die net doet dat met geen kennis van Xcode, Android, JavaScript nodig anders dan hoe weet te schrijven van de Arduino schet
Sensorgegevens (DHT11 & BMP180) verzenden ThingSpeak met een Arduino, met behulp van ENC28J60 Ethercard

Sensorgegevens (DHT11 & BMP180) verzenden ThingSpeak met een Arduino, met behulp van ENC28J60 Ethercard

Opmerking: Dit instructable is voor de oude ENC26J60 Ethershield en ethercard. Als u de moderne WIZ5100 op basis van Ethernetshield of een ESP8266 ga bezoek mijn andere instructable dat ik noemen hieronderOngeveer een jaar en een half geleden ik publ
Controle van de Arduino met behulp van android app

Controle van de Arduino met behulp van android app

In deze instructables ga ik uit te leggen hoe de controle van de arduino IO pinnen met behulp van een android app, die we hier schrijven.De mededeling zal via ethernet en gebruiken we het GET-verzoek voor het activeren van de IO.Laten we beginnen!Sta
Controle van de arduino met behulp van Blynk via usb

Controle van de arduino met behulp van Blynk via usb

Dit is mijn tweede instructable. In dit instructable zal ik laten zien hoe u kunt besturen LED met behulp van Blynk.Blynk is een applicatie die ons dashboard, evenals connectiviteit biedt. die u kunt downloaden van google play store (voor Android). &
Een esp8266 arduino met behulp van een relais met behulp van home-assistant

Een esp8266 arduino met behulp van een relais met behulp van home-assistant

Dit Instructable laat zien hoe een Relais module verbinden met een esp8266, iets dat moet ongecompliceerd, maar moet een paar extra componenten te maken van de estafette werkt correct als u van het kleine apparaat van de esp in de foto's gebruikmaakt
Programmeren van een Arduino met behulp van BeagleBone, zonder USB

Programmeren van een Arduino met behulp van BeagleBone, zonder USB

als je gezien mijn BeagleBone/Arduino seriële communicatie gids, u kan hebben gewacht voor deze!  Als u het nog niet gezien, ga eerst lezen omdat we 100% Voortbouwend op dat kader.  Ik ga niet herhalen die instructie hier.Het einddoel is om te kunnen
Beheersing van 20 Led's van 5 pins van de Arduino met behulp van Charlieplexing

Beheersing van 20 Led's van 5 pins van de Arduino met behulp van Charlieplexing

vandaag, ik zal je laten zien hoe u kunt besturen 20 LED's van slechts 5 pins van de Arduino. Ik ben bezig met een project waar ik controle 15 LED's, 3 knoppen, 3 moet zeven segment displays en een RGB-orb van een Arduino. Nu als u werkt het uit, je
IPhone aan Arduino met behulp van Bluetooth 4.0--

IPhone aan Arduino met behulp van Bluetooth 4.0--

Opmerking: dit project vereist een iOS ontwikkelaar licentie . Het is $99 per jaar.Dit verslag beschrijft het schrijven van een app voor iOS apparaten van Bluetooth 4.0 om een seriële verbinding met een Arduino. Om de seriële verbinding op het einde
Uploaden van de schets naar Pro Mini Arduino met behulp van usbASP

Uploaden van de schets naar Pro Mini Arduino met behulp van usbASP

In deze tutorial tweetalig (Engels en Indonesisch, Indonesisch versie onder scheidingslijn met cursieve stijl), zullen we leren hoe om te uploaden van de schets ("schets" is de term voor programmacode die is geschreven voor Arduino) met Arduino
Plotten en grafische dynamische gegevens uit Arduino met behulp van de kracht van Python

Plotten en grafische dynamische gegevens uit Arduino met behulp van de kracht van Python

Ik zal u tonen hoe te nemen van uw Arduino projecten naar het volgende niveau door het hebben van de Arduino interactie met de programmeertaal Python. Python is een gratis programma dat u kunt downloaden. Aangezien je al geleerd hebt zal de fundament
Maak een Candy Bowl Robot (met behulp van een joystick)

Maak een Candy Bowl Robot (met behulp van een joystick)

ik weet niet wat er mis is met mijn Colombiaanse koffie snoepjes. Ik bracht een tas uit mijn land, en niemand wilde eten. In het kantoor zeiden dat ze zijn voorzichtig met de snoepjes, omdat ze gewend zijn gekke en vreemde snoepjes projecten kunnen b
Arduino/Android BLUETOOTH seriële Monitor APP voor arduino met behulp van de HC-06 en ANDROID

Arduino/Android BLUETOOTH seriële Monitor APP voor arduino met behulp van de HC-06 en ANDROID

Hello wereld! Vandaag maakte ik een Android app die gewoon leest waarden of tekst die zijn afgedrukt op de arduino seriële met behulp van de bluetooth-module HC-06/05 of andere modules. U hoeft niet te stellen iets in de code van de arduino. Gewoon S