کوډ ولټوئ

د آردوینو کوډ او ویډیو: دوه محوره جویسټیک

د آردوینو کوډ او ویډیو: دوه محوره جویسټیک

په دې ټیوټوریل کې به موږ وپلټو چې څنګه د آردوینو سره د دوه محوره XY جویسټیک څخه ګټه پورته کړو. دا جویسټیک د لوبې کنټرولر یا د روبوټیک لاسونو کنټرول لپاره کارول کیدی شي، د نورو غوښتنلیکونو په منځ کې. لومړنی تمرکز به د جویسټیک موقعیت او د هغې د فشار-تڼۍ سویچ حالت کشف کول وي، کوم چې په سیریل مانیټر کې ښودل کیدی شي.

XY-Dual access joystick

د ټیوټوریل په اوږدو کې به موږ یو ساده پروګرام پلي کړو چې د جویسټیک X او Y موقعیتونه لولي او په آردوینو سیریل مانیټر کې یې ښیې. کله چې جویسټیک فشارول کیږي، د سویچ حالت به هم کشف شي. د کوډ د تفصیلي توضیح لپاره، ډاډ ترلاسه کړئ چې ویډیو په ټاکل شویو وختونو کې وګورئ (په ویډیو کې په 00:00).

هارډویر تشریح شوی

د دې پروژې اصلي برخې د دوه محوره جویسټیک ماډل او آردوینو بورډ شامل دي. د جویسټیک ماډل دوه متغیر مقاومتونه لري، یو د X محور لپاره او یو د Y محور لپاره، کوم چې د جویسټیک موقعیت پر بنسټ انلاګ ارزښتونه چمتو کوي. د جویسټیک فشار-تڼۍ سویچ د دې لپاره کارول کیږي چې معلومه کړي کله چې دا فشارول کیږي.

کله چې تاسو جویسټیک حرکت کوئ، پوټینشیومیټرونه خپل مقاومت بدلوي، کوم چې د 0 او 1023 ترمنځ ارزښتونو ته ژباړل کیږي. دا موږ ته اجازه راکوي چې د جویسټیک موقعیت په سمه توګه وټاکو. د فشار-تڼۍ سویچ د آردوینو په ډیجیټل انپټ پن پورې تړلی دی، چې موږ ته دا وړتیا راکوي چې د داخلي پل-اپ مقاومت ځانګړتیا په کارولو سره د بهرني مقاومت اړتیا پرته د هغې حالت ولولو.

ډیټاشیټ تفصیلات

جوړونکیعمومي
د پرزې شمېرهدوه محوره جویسټیک ماډل
منطق/IO ولټاژ5 V
د برېښنا رسولو ولټاژ5 V
د محصول ولټاژ سلسله0 - 5 V
ریزولوشن10-بټ (0-1023) انلاګ
د سویچ ډولفشار-تڼۍ
بسته بنديمعیاري ماډل

  • د جویسټیک ماډل ته د برېښنا سمه رسول (5 V) ډاډمن کړئ.
  • د جویسټیک X او Y محصولات په ترتیب سره انلاګ پنونو A0 او A1 سره وصل کړئ.
  • د جویسټیک سویچ لپاره ډیجیټل پن 6 وکاروئ.
  • د سویچ پن لپاره د پل-اپ مقاومت ترتیب وکاروئ.
  • د محصول ارزښتونه وڅارئ ترڅو ډاډ ترلاسه کړئ چې دوی له 0 څخه تر 1023 پورې دي.

د تارونو د نښلولو لارښوونې

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

د دوه محوره جویسټیک د آردوینو سره د نښلولو لپاره، لومړی د جویسټیک د ځمکې پن خپل بریډبورډ ته د ځمکې له کرښې سره وصل کړئ. بیا، د جویسټیک 5V پن د بریډبورډ مثبت کرښې سره وصل کړئ. د جویسټیک دوه متغیر پنونه، چې د X او Y په نوم نښه شوي، باید په ترتیب سره د آردوینو انلاګ پنونو A0 او A1 سره وصل شي.

د جویسټیک د فشار-تڼۍ سویچ لپاره، دا د آردوینو ډیجیټل پن 6 سره وصل کړئ. دا اړیکه د داخلي پل-اپ مقاومت ځانګړتیا کاروي، نو تاسو بهرني مقاومت ته اړتیا نلرئ. په پای کې، که تاسو غواړئ د LED سره د سویچ حالت وڅارئ، د LED اوږده پښه د ډیجیټل پن 13 سره او لنډه پښه د 680-اوم مقاومت له لارې ځمکې سره وصل کړئ.

د کوډ مثالونه او تفصیل

د آردوینو کوډ کې، موږ د سویچ لپاره پن تعریف کوو او د جویسټیک ارزښتونو د نقشې کولو لپاره د سکرین ابعاد مشخص کوو. د سیٹ اپ فنکشن سیریل اړیکه پیل کوي او د سویچ پن حالت ټاکي.

void setup() {
  Serial.begin(9600); // د سیریل اړیکې پیل کول
  pinMode(sw, INPUT_PULLUP); // د sw پن د انپټ په توګه ټاکل
  pinMode(13, OUTPUT); // د LED پن
}

د لوپ فنکشن کې، موږ د X او Y موقعیتونو لپاره انلاګ ارزښتونه لوستل او د ټاکل شوي سکرین ابعادو ته یې نقشه کوو. د سویچ حالت هم لوستل کیږي او سیریل مانیټر ته چاپ کیږي.

void loop() {
  int x = analogRead(A0); // د X لپاره انلاګ ارزښت لوستل
  int y = analogRead(A1); // د Y لپاره انلاګ ارزښت لوستل
  int sStat = digitalRead(sw); // د سویچ حالت لوستل
  // سیریل مانیټر ته ارزښتونه چاپ کړئ
  Serial.print("X: ");
  Serial.print(xPos);
  Serial.print(" Y: ");
  Serial.println(yPos);
}

په پای کې، کوډ ګوري چې ایا سویچ فشارول شوی، د سویچ حالت پر بنسټ LED چالان یا بندوي. دا کله چې د جویسټیک تڼۍ فعاله شي بصری فیډبیک چمتو کوي.

if(sStat == LOW) {
    Serial.println("سویچ فشارول شوی");
    digitalWrite(13, HIGH); // LED چالان کړئ
  } else {
    digitalWrite(13, LOW); // LED بند کړئ
  }

د دې لپاره چې وګورئ د جویسټیک ارزښتونه په ریښتیني وخت کې څنګه بدلیږي، کوډ خپل آردوینو ته پورته کړئ او سیریل مانیټر خلاص کړئ. ارزښتونه به هر نیم ثانیه تازه شي، د اوسني X او Y موقعیتونو او د سویچ حالت سره (په ویډیو کې په 01:30).

ښودنه / څه تمه وکړو

کله چې تاسو جویسټیک حرکت کوئ، د X او Y ارزښتونه باید په مطابق بدل شي، له 0 څخه تر 1023 پورې. که تاسو د جویسټیک تڼۍ فشار کړئ، د پن 13 سره تړلی LED به روښانه شي، چې دا په ګوته کوي چې سویچ فعال دی. که جویسټیک په مرکز کې وي، تاسو باید د دواړو محورونو لپاره شاوخوا 512 ارزښتونه وګورئ، د جویسټیک د کالیبریشن پورې اړه لري.

د ویډیو وختونه

  • 00:00 - د دوه محوره جویسټیک پیژندنه
  • 01:30 - د کوډ توضیح او فعالیت
  • 02:45 - د تارونو د نښلولو لارښوونې
  • 03:15 - تمه شوی محصول او ازموینه

انځورونه

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.
ژبه: 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);
}

هغه شیان چې تاسو ورته اړتیا لرئ

سرچینې او حوالې

تر اوسه هیڅ سرچینې نشته.

فایلونه📁

هیڅ فایل شتون نلري.