Arduino - Een joystick

From SPAD-it Wiki
Revision as of 17:34, 26 January 2018 by WikiAdmin (talk | contribs) (Het programma)

Jump to: navigation, search

Een joystick kan in twee richtinegn bewegen. De horizontale richting noemen we de x-richting en de vertikale richting de y-richting. Daarmee kun je twee dingen besturen met een enkele knop. Een joystick heeft in het algemeen vier aansluitingen: nul, Vcc (voedingsspanning) en twee signaal-aansluitingen, een voor elke richting. Van binnen heeft een joystick twee potmeters die zo zijn geschakeld dat de twee signaal-aansluitingen spanningen afgeven tussen nul en Vcc. In ruststand staat de joystick in het midden en zijn ook de spanningen voor x en y in het midden tussen 0 en Vcc. Een Arduino kan dus de stand van de joystick bepalen door die twee spanningen te meten en actie ondernemen op basis van die informatie. Een joystick gebruikt dan natuurlijk wel twee analoge ingangen van de Arduino. Geen probleem: je hebt er dan nog vier over.

De schakeling

Extra benodigdheden:

  • 1 joystick module
Joystick2.jpgJoystick schakeling.png
Een joystick module met aansluiting op de Arduino

Het programma

int x_pin = 1;      // analoge input pin voor de x-as: A1
int y_pin = 0;      // analoge input pin voor de y-as: A0

void setup()
{
  Serial.begin(9600); // start de seriele communicatie met een baud rate van 9600
}

void loop()
{
  int val_x = digitalRead(x_pin);     // waarde tussen 0 en 1023
  int val_x = digitalRead(y_pin);
  float x = 0.001953125*val_x - 1.0;  // val/512-1 => waarde tussen -1 en 1
  float y = 0.001953125*val_y - 1.0;  // waarde tussen -1 en 1; 0=neutrale stand
  Serial.print("x=");
  Serial.print(x,3);                  // 3 cijfers achter de komma is genoeg hier
  Serial.print("; y=");
  Serial.println(y,3);
  delay(100);
}

Uitleg

Voor de eenvoud van de schakeling bepalen we in dit project alleen de stand van de joystick in de x- en y-richting. Die stand wordt vervolgens via de seriele communicatie doorgegeven aan de PC. We hoeven dan alleen de joystick op de Arduino aan te sluiten. Daarbij gaat de pin voor rx in de A0-poort van de Arduino en de pin voor ry in de A1-poort. De analoge poorten hoeven niet te worden geinitialiseerd omdat die standaard gelden als input. De Setup() functie wordt alleen gebruikt om de seriele communicatie te starten. De Loop() functie meet de stand van de joystick in beide richtingen via de spanning op A0 en A1. Die spanning wordt gemete als een getal tussen 0 en 1024. Hierbij staat 1024 voor Vcc. Door dus te delen door 512 (de helft van Vcc), en 1 af te trekken krijg je een getal tussen -1 en 1. Bij 0 staat de joystick in het midden. Dit getal wordt vervolgens doorgegeven aan de computer via de seriele communicatie.

Beetje spelen

Verdiepende opdrachtjes

Navigatie