XY Joystick
Modulet består af en færdig købt Hardware til modulet og Software til modulet.
XY-Joystickets funktioner
En XY-joystick er opbygget af 2 potentiometere, som hver styrer 90 grader. Dette kan den gøre da modulet har et output, som går fra 0V til 5V. I XY-joystickets nulposition vil outputet være 2.5V fra X og Y. Det varrieres så ved, at joystickets output går mellem 0V til 5V afhængig af dets position[1].
Hvis værdierne aflæses, aflæses ved for eksempel en arduino, vil værdien i udgangspositionen være ca. på værdien 512. Ved at flytte på joysticket vil det give en værdi mellem 0-1023.
Joysticket er udstyret med fjedre, hvilket gøre at joysticket ville gå tilbage til udgangspositionen efter brug.
Modulet har 5 følgende pins:
- GND - forsyning til stel
- +5V - forsyning til +5V
- VRx - Analog output for X
- VRy - Analog output for Y
- SW - Digital input
SW er en slutkontakt, som giver digital input signal når den benyttes. Her går værdien fra 0-1[2].
Spændingsværdier
Ud fra illustration nr.2, viser vi rent skitsemæssigt at spændingen varierer mellem 0 til 5V. Der er fortaget målinger, der viser mere eksakte værdier.
- Start/mellem spænding X = 2,497V
- X-max spænding = 4,95V
- X-min spænding = 2,3mV
- Start/mellem spænding Y = 2,431V
- Y-max spænding = 4,95V
- Y-min spænding = 2,3mV
Print til XY-Joystik
Schematics og board filer til Eagle
Print til XY Joystick
Zip-filen indeholder kun schematics og board fil af den externe print, der forbinder XY-Joysticket til PIC'en. Schematics og board af selve XY-Joysticket er ikke tilgængelig, og er ikke til at finde på nettet.
I princippet, kan man sagtens tage udgangspunktet af XY-Joystickets funktioner og hvor man ud fra det, kan få et overblik over hvilke komponenter den er opbygget af. Det eneste underlige med den er at man kan bevæge den et stykke omkring neutral-området uden at den ændrer værdi. Det skyldes at potentiometeret er opbygget lidt specielt med et område midt i uden modstandsændring.
Software modulet XY-Joystik.jal
-- Pseudokode til hovedprogrammet Inkludering af standard biblioteker og adc_holst I/O definitioner
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(7, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
int posX = analogRead(A0);
int posY = analogRead(A1);
int knap = digitalRead(7);
Serial.print("Position X: ");
Serial.println(posX);
Serial.println(" ");
Serial.print("Position Y: ");
Serial.println(posY);
Serial.println(" ");
Serial.print("Knap: ");
Serial.println(knap);
Serial.println(" ");
delay(500);
}
Hardware setup af XY-Joystik modulet
For at opsætte XY-Joysticket til korrekt brug hardwaremæssigt, skal de fem pins: GND, +5V, VRx, VRy og SW, forbindes.
GND og +5V er ansvarlige for at forbinde modulet til et elektrisk kredsløb, og skal hver især forbindes til stel og spændingskilde.
VRx og VRy er output for de to potentiometre i modulet, og skal forbindes til en analog pin, idet at outputtet, der gives er en spænding.
Den sidste pin, SW, er output for modulets sluttekontakt. For det meste giver det mening at forbinde den til til et digitalt input, som så giver værdien 0 eller 1 som output, beskrivende for om kontakten er nedtrykker eller ej. Det er dog muligt at forbinde SW til et analog input, hvilket har den forskel at output så bliver en læsning af spændingen fra kontakten, men det givet ikke mere information, og aflæsningen tager bare længere tid, så det er en dum ide.
Kontakten er forbundet til stel, så der kommer 0V ud af modulet når der trykkes på kontakten, og dermed vil det først fungere når der kommer 5V ud når der IKKE er trykket på kontakten.
For at forhindre at SW’s spænding “svæver” er det nødvendigt, enten at tilføje en pull-up modstand rent fysisk til +5V som det er gjort på det lille print, eller en pull-up funktion i softwaren. Det skal nævnes at en pull-up funktion i begge tilfælde har den effekt at SW’s output skal tolkes inverteret.