Soek Kode

Arduino-kode en video: Tweea-as-stuurstok

Arduino-kode en video: Tweea-as-stuurstok

In hierdie tutoriaal gaan ons ondersoek hoe om 'n twee-as XY-joystick met Arduino te gebruik. Hierdie joystick kan gebruik word as 'n speletjie-beheerder of vir die beheer van robotarms, onder andere toepassings. Die primêre fokus sal wees op die opsporing van die joystick se posisie en die toestand van sy drukknoppie-skakelaar, wat op 'n reeksmonitor weerspieël kan word.

XY-Dual access joystick

Dwarsdeur die tutoriaal sal ons 'n eenvoudige program implementeer wat die X- en Y-posisies van die joystick lees en dit in die Arduino-reeksmonitor vertoon. Wanneer die joystick gedruk word, sal die skakelaartoestand ook opgespoor word. Vir 'n gedetailleerde verduideliking van die kode, maak seker dat jy die video by die gespesifiseerde tydstempels kyk (in video by 00:00).

Hardeware Verduidelik

Die hoofkomponente vir hierdie projek sluit die twee-as-joystickmodule en die Arduino-bord in. Die joystickmodule bestaan uit twee veranderlike resistors, een vir die X-as en een vir die Y-as, wat analoogwaardes verskaf gebaseer op die joystick se posisie. Die drukknoppie-skakelaar op die joystick word gebruik om te bepaal wanneer dit gedruk word.

Wanneer jy die joystick beweeg, verander die potensiometers hul weerstand, wat vertaal word in waardes tussen 0 en 1023. Dit stel ons in staat om die joystick se posisie akkuraat te bepaal. Die drukknoppie-skakelaar is gekoppel aan 'n digitale insetpen op die Arduino, wat ons in staat stel om sy toestand te lees sonder om 'n eksterne resistor nodig te hê deur die interne optrek-resistor-funksie te gebruik.

Datablad Besonderhede

VervaardigerGeneries
DeelnommerTwee-as Joystickmodule
Logika/IO-spanning5 V
Toevoerspanning5 V
Uitsetspanningsreeks0 - 5 V
Resolusie10-bis (0-1023) analoog
SkakelaartipeDrukknoppie
PakketStandaardmodule

  • Verseker behoorlike kragtoevoer (5 V) na die joystickmodule.
  • Koppel die joystick se X- en Y-uitsette aan analoogpenne A0 en A1, onderskeidelik.
  • Gebruik digitale pen 6 vir die joystick-skakelaar.
  • Gebruik 'n optrek-resistor-konfigurasie vir die skakelaarpen.
  • Monitor die uitsetwaardes om te verseker dat hulle van 0 tot 1023 strek.

Bedradingsinstruksies

Arduino wiring for XY-Dual access joystick
Arduino wiring for XY-Dual access joystick
Arduino X-Y-Joystick wiring
Arduino X-Y-Joystick wiring

Om die twee-as-joystick aan die Arduino te bedraad, begin deur die joystick se grondpen aan die grondrail op jou broodbord te koppel. Koppel volgende die joystick se 5V-pen aan die positiewe rail op die broodbord. Die twee veranderlike penne op die joystick, gemerk as X en Y, moet aan die analoogpenne A0 en A1 op die Arduino gekoppel word, onderskeidelik.

Vir die drukknoppie-skakelaar op die joystick, koppel dit aan digitale pen 6 op die Arduino. Hierdie verbinding gebruik die interne optrek-resistor-funksie, so jy benodig nie 'n eksterne resistor nie. Laastens, as jy die skakelaartoestand met 'n LED wil monitor, koppel die langer been van die LED aan digitale pen 13 en die korter been deur 'n 680-ohm-resistor na grond.

Kode Voorbeelde & Deurloop

In die Arduino-kode definieer ons die pen vir die skakelaar en spesifiseer die skermafmetings vir die kartering van joystickwaardes. Die opstellingsfunksie initialiseer reekskommunikasie en stel die skakelaarpenmodus.

void setup() {
  Serial.begin(9600); // initialiseer reekskommunikasie
  pinMode(sw, INPUT_PULLUP); // stel pen sw as inset
  pinMode(13, OUTPUT); // LED-pen
}

In die lusfunksie lees ons die analoogwaardes vir X- en Y-posisies en karteer hulle na die gedefinieerde skermafmetings. Die toestand van die skakelaar word ook gelees en op die Reeksmonitor gedruk.

void loop() {
  int x = analogRead(A0); // lees analoogwaarde vir X
  int y = analogRead(A1); // lees analoogwaarde vir Y
  int sStat = digitalRead(sw); // lees skakelaartoestand
  // Druk waardes op Reeksmonitor
  Serial.print("X: ");
  Serial.print(xPos);
  Serial.print(" Y: ");
  Serial.println(yPos);
}

Laastens kontroleer die kode of die skakelaar gedruk is, en skakel die LED aan of af gebaseer op die skakelaartoestand. Dit verskaf visuele terugvoer wanneer die joystick-knoppie geaktiveer word.

if(sStat == LOW) {
    Serial.println("Skakelaar gedruk");
    digitalWrite(13, HIGH); // Skakel LED AAN
  } else {
    digitalWrite(13, LOW); // Skakel LED AF
  }

Om te sien hoe die joystickwaardes in reële tyd verander, laai die kode na jou Arduino op en open die Reeksmonitor. Die waardes sal elke halwe sekonde opdateer, wat die huidige X- en Y-posisies saam met die skakelaartoestand vertoon (in video by 01:30).

Demonstrasie / Wat om te Verwags

Wanneer jy die joystick beweeg, behoort die X- en Y-waardes dienooreenkomstig te verander, wat strek van 0 tot 1023. As jy die joystick-knoppie druk, sal die LED wat aan pen 13 gekoppel is, aangaan, wat aandui dat die skakelaar aktief is. As die joystick gesentreer is, behoort jy waardes rondom 512 vir beide asse te sien, afhangende van die joystick se kalibrasie.

Video Tydstempels

  • 00:00 - Inleiding tot die twee-as-joystick
  • 01:30 - Kodeverduideliking en funksionaliteit
  • 02:45 - Bedradingsinstruksies
  • 03:15 - Verwagte uitset en toetsing

Beelde

Arduino wiring for XY-Dual access joystick
Arduino wiring for XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
Arduino X-Y-Joystick wiring
Arduino X-Y-Joystick wiring
58-This is the Arduino code for a dual-axis joystick.
Taal: C++
/*
 * This is Arduino code to use a dual-axis XY joystick to read the value of the joystick position as X and Y, and
 * also read the switch.
 * Other Arduino library and videos: https://robojax.com
 
 * Watch the video for this code to learn it fully.
  * Watch the video here: https://youtu.be/6N8Iq353GM8
 * This code is offered "as is" without any warranty.
 * If you are sharing this code, you must keep this copyright note.
 */
 /*

 * Written for Robojax video on January 10, 2018
 * by Ahmad Nejrabi, in Ajax, Ontario, Canada
 * Copyright Robojax Inc.
 */
 
/*
 * This is a dual-axis joystick sketch for Arduino.
 * The position of the joystick is read and displayed on the serial monitor.
 */
#define sw 6
#define screenWidth 600
#define screenHeight 300
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(sw,INPUT_PULLUP);// setting pin sw as input
  pinMode(13,OUTPUT);
}
 
void loop() {
  // Robojax Dual Axis joystick project
  int x = analogRead(A0);// read analog value
  int y = analogRead(A1);
  int xPos = map(x, 0, 1023,0,screenWidth);
  int yPos = map(y, 0, 1023,0,screenHeight); 
  int sStat = digitalRead(sw);//
  // Robojax project

  Serial.print("X: ");
  Serial.print(xPos);

  Serial.print(" Y: ");
  Serial.println(yPos);// Robojax prints y value
  if(sStat ==LOW){
    Serial.println("Switch pressed");
    digitalWrite(13,HIGH);// Turn LED ON
  }else{
    digitalWrite(13,LOW);// Turn LED OFF
  }
  delay(500);
}

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Geen hulpbronne nog.

Lêers📁

Geen lêers beskikbaar.