Styra datorn med Arduino och en Joystick (4 / 5 steg)
Steg 4: Koden
Koppla in din arduino till datorn, brand upp programmet arduino, då kopia och klistra in denna kod.En kort förklaring:
Potentionmeters mata in värden till arduino baserat på deras position. Dessa värden används för att bestämma hastighet och riktning markören ska flytta. Arduinoen sedan skicka denna information till datorn. När knappen är nedtryckt, delstaten digital stift 2 ändras till hög och arduino skicka ett kommando för att klicka med musen till datorn.
Från arduino.cc:
/*
JoystickMouseControl
Styr musen från en joystick på en Arduino Leonardo eller Micro.
Använder en tryckknapp för att aktivera och inaktivera muskontroll, och
en andra tryckknapp att klicka med vänster musknapp
Hårdvara:
2-axlig joystick ansluten till stift A0 och A1
* tryckknappar för att fästa D2 och D3
Musen rörelsen är alltid relativ. Denna skiss läser
två analoga ingångar som sträcker sig från 0 till 1023 (eller mindre på någon sida)
och översätter dem till spänner av -6-6.
Skissen förutsätts det att joystick vila värdena runt den
mitten av intervallet, men att de varierar inom ett tröskelvärde.
Varning: När du använder kommandot Mouse.move(), Arduino tar
över din mus! Kontrollera att du har kontroll innan du använder kommandot.
Denna skiss innehåller en tryckknapp för att växla mus kontroll staten, så
Du kan sätta på och stänga muskontroll.
skapad 15 Sept 2011
uppdaterad 28 Mar 2012
av Tom Igoe
denna kod är offentlig
*/
Ange pin-koder för switch, joystick axlar och LED:
CONST int switchPin = 2; att slå på och av muskontroll
CONST int musknapp = 3; ingångsstift för musen tryckknappen
CONST int xAxis = A0; joystick X-axeln
CONST int yAxis = A1; joystick Y axel
CONST int ledPin = 5; Muskontroll LED
parametrar för att läsa joysticken:
int utbud = 12. utgående sortiment av X eller Y rörelse
int netbootAnswerRequests = 5; svar fördröjning av musen, i ms
int tröskel = utbud/4; vilande tröskel
int center = range/2; vilande position värde
booleska mouseIsActive = false; även att styra musen
int lastSwitchState = låg; tidigare switch tillstånd
void setup() {
pinMode (switchPin, ingång); switch pin
pinMode (ledPin, produktionen); den LED stiftet
ta kontroll över musen:
Mouse.BEGIN();
}
void loop() {
Läs växeln:
int switchState = digitalRead(switchPin);
om den ändras och det är hög, växla staten mus:
om (switchState! = lastSwitchState) {
om (switchState == hög) {
mouseIsActive =! mouseIsActive;
Aktivera LED att ange mus stat:
digitalWrite (ledPin, mouseIsActive);
}
}
rädda switch staten för nästa jämförelse:
lastSwitchState = switchState;
Läs och skala de två axlarna:
int xReading = readAxis(A0);
int yReading = readAxis(A1);
om tillståndet mus kontroll är aktiv, flytta musen:
om (mouseIsActive) {
Mouse.Move (xReading, yReading, 0);
}
Läs musknappen och klicka på eller inte, klicka på:
om musknappen trycks:
om (digitalRead(mouseButton) == hög) {
om musen inte är intryckt, tryck på det:
IF (!. Mouse.isPressed(MOUSE_LEFT)) {
Mouse.Press(MOUSE_LEFT);
}
}
Annars trycker inte på musknappen:
annat {
om musen trycks, släpp det:
om (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
Delay(responseDelay);
}
/*
läser en axel (0 eller 1 för x eller y) och skalar den
analoga indataområdet till ett intervall från 0 till < utbud >
*/
int readAxis (int thisAxis) {
Läs den analog ingången:
int läsa = analogRead(thisAxis);
karta behandlingen från analoga indataområdet till utdataområdet:
läsning = karta (läsning, 0, 1023, 0, varierar);
om utdata läsningen utanför från den
Vila position tröskel, användas:
int avstånd = läsning - center;
om (abs(distance) < tröskel) {
distans = 0;
}
returnera avståndet för denna axel:
returnera avstånd;
}