Arduino - Een joystick

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

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

Om de schakeling eenvoudig te houden 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 A1-poort van de Arduino en de pin voor ry in de A0-poort. De analoge poorten hoeven niet te worden geinitialiseerd omdat die standaard gelden als input. De Setup() functie wordt dus 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 gemeten als een getal tussen 0 en 1023. Hierbij staat 1023 voor Vcc. Door deze waarde 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. Deze getallen wordt vervolgens doorgegeven aan de computer via de seriele communicatie met drie cijfers achter de komma. Na alle voorgaande projecten is dit zo eenvoudig dat er eigenlijk geen toelichting nodig had moeten zijn.

Beetje spelen

Verdiepende opdrachtjes

Navigatie