ኮድ ይፈልጉ

ትምህርት 13/31፡ XY ጆይስቲክን ከ Arduino ጋር መጠቀም እና በጆይስቲክ እንቅስቃሴ ባዘርን ማብራት | Robojax

ትምህርት 13/31፡ XY ጆይስቲክን ከ Arduino ጋር መጠቀም እና በጆይስቲክ እንቅስቃሴ ባዘርን ማብራት | Robojax

በዚህ ትምህርት ውስጥ፣ የXY ጆይስቲክ ሞጁሉን እና አቅጣጫዊ እንቅስቃሴን እና የአዝራር ተጫናን ለመለየት ከአርዱኖ ጋር እንዴት እንደሚገናኝ እንመረምራለን። ይህ ሁለገብ የግብዓት መሣሪያ ሁለት ፖቴንሺዮሜትሮችን (አንዱ ለX-ዘንግ እና አንዱ ለY-ዘንግ) እና የግፋ አዝራርን ይይዛል፣ ይህም ሙሉ የ360-ዲግሪ የእንቅስቃሴ ክልልን ከጠቅታ እርምጃ ጋር እንድትይዙ ያስችልዎታል። ጥሬ እሴቶችን ከማንበብ ባሻገር፣ ጆይስቲኩ ወደ አንድ የተወሰነ ቦታ ሲንቀሳቀስ እርምጃዎችን እንዴት ማስነሳት እንደሚቻል እናሳያለን—ለምሳሌ ባዘርን ማብራት። ይህ መርህ ለብዙ መስተጋብራዊ ፕሮጀክቶች መሠረት ይፈጥራል።

sunfounder-13-JoyStick-2

ይህ መመሪያ ለመገንባት ፍጹም ነው፦

  • ለሮቦቲክ መኪና ወይም የፓን-ቲልት ካሜራ መቆሚያ ባለ ሁለት-ዘንግ የርቀት መቆጣጠሪያ።
  • ለፒሲ ወይም ለሞባይል መሣሪያ ብጁ የጨዋታ መቆጣጠሪያ።
  • ለኤልሲዲ ወይም ኦኤልኢዲ ማሳያ የምናሌ አሰሳ ሥርዓት።
  • ለኢንዱስትሪ ወይም ለትርፍ ጊዜ ማሳለፊያ መተግበሪያዎች ትክክለኛ የሞተር ፍጥነት እና አቅጣጫ መቆጣጠሪያ።
  • አንድ የተወሰነ የጆይስቲክ ቦታ ሳይረን ወይም ማንቂያ የሚያነቃ መስተጋብራዊ የማንቂያ ሥርዓት።

ሃርድዌር እና ክፍሎች

ከዚህ ፕሮጀክት ጋር ለመከታተል፣ የሚከተሉትን ክፍሎች ያስፈልግዎታል። በቪዲዮው ውስጥ ጥቅም ላይ የዋለው ልዩ ኪት የSunFounder 3-in-1 አርዱኖ ኪት ነው፣ ነገር ግን እነዚህ ክፍሎች በተናጠል በስፋት ይገኛሉ።

  • አርዱኖ ኡኖ (ወይም ማንኛውም ተኳሃኝ ቦርድ)
  • XY ጆይስቲክ ሞጁል
  • ፓሲቭ ባዘር
  • ጅመር ሽቦዎች
  • ለፕሮግራም እና ለኃይል የዩኤስቢ ኬብል
LB-LR0001_Dual-axis_XY_Joystick_Module

የXY ጆይስቲክ ሞጁሉን መረዳት

የXY ጆይስቲክ ራሱን የቻለ የግብዓት መሣሪያ ነው። በቪዲዮው ውስጥ እንደተብራራው (በቪዲዮ 01:20 ላይ)፣ በቀጥታ አቅጣጫ የተደረደሩ ሁለት የ10k ኦም ፖቴንሺዮሜትሮችን ያጣምራል። ዱላውን በX-ዘንግ በኩል ማንቀሳቀስ አንዱን ፖቴንሺዮሜትር ያሽከረክራል፣ በY-ዘንግ በኩል ማንቀሳቀስ ደግሞ ሌላውን ያሽከረክራል። ይህ አርዱኖ ለእያንዳንዱ ዘንግ የአናሎግ ቮልቴጅ እንዲያነብ ያስችለዋል፣ ይህም የዱላውን ትክክለኛ ቦታ ይወክላል። ሞጁሉ ዱላው በቀጥታ ወደ ታች ሲጫን የሚነቃ ጊዜያዊ የግፋ አዝራርንም ያካትታል።

Joystick-Module-Internal-Structure

የፒኖቹ ዝርዝር እነሆ፦

  • GND፦ ከአርዱኖው መሬት (0V) ጋር ይገናኛል።
  • VCC፦ ከአርዱኖው የ5V የኃይል አቅርቦት ጋር ይገናኛል።
  • VRX፦ ለX-ዘንግ ቦታ የአናሎግ ውጤት።
  • VRY፦ ለY-ዘንግ ቦታ የአናሎግ ውጤት።
  • SW፦ ለግፋ አዝራሩ ዲጂታል ውጤት (ንቁ ዝቅተኛ)።

ቪዲዮው እንዲሁም ሁለቱ ውስጣዊ ፖቴንሺዮሜትሮች በVCC እና GND መካከል በትይዩ የተገናኙ መሆናቸውን ያሳያል፣ ይህም በጠቅላላው ወደ 5k ኦም የሚጠጋ ተቃውሞ ይፈጥራል፣ ይህ ለዚህ ሞጁል የተለመደ ንባብ ነው (በቪዲዮ 04:30 ላይ)።

የሽቦ አገናኝ መመሪያ

sunfounder-13_xy_joystick_wiring_bb

ለዚህ ፕሮጀክት የሽቦ አገናኝ ቀላል ነው። ቪዲዮው ከSunFounder ሰነድ የሽቦ አገናኝ ሥዕላዊ መግለጫ ያሳያል፣ ነገር ግን ጆይስቲኩን በቀጥታ እንደተገለጸው ከአርዱኖ ፒኖች ጋር እናገናኛለን። ባዘሩ ለፕሮጀክቱ የእርምጃ ክፍል ተጨምሯል።

በቪዲዮው ውስጥ እንደተመሠረቱት ግንኙነቶች እነሆ (በቪዲዮ 06:24 ላይ)፦

  • ጆይስቲክ GNDአርዱኖ GND (ጥቁር ሽቦ)
  • ጆይስቲክ VCCአርዱኖ 5V (ቀይ ሽቦ)
  • ጆይስቲክ VRXአርዱኖ A0 (ቢጫ ሽቦ)
  • ጆይስቲክ VRYአርዱኖ A1 (አረንጓዴ ሽቦ)
  • ጆይስቲክ SWአርዱኖ ፒን 8 (ሰማያዊ ሽቦ)
  • ባዘር ፖዘቲቭ (ረጅም ፒን)አርዱኖ ፒን 2
  • ባዘር ኔጋቲቭ (አጭር ፒን)አርዱኖ GND

የኮድ ማብራሪያ

የቀረበው ኮድ የጆይስቲኩን ቦታ ለማንበብ እና አንድ የተወሰነ ሁኔታ ሲሟላ ባዘሩን ለማንቃት የተነደፈ ነው። ሊያዋቅሯቸው የሚችሏቸው ቁልፍ ክፍሎች በስኬቹ አናት ላይ ናቸው።

በመጀመሪያ፣ የፒን ትርጓሜዎች ተዘጋጅተዋል። ከእርስዎ ልዩ የሽቦ አገናኝ ጋር እንዲዛመዱ እነዚህን መቀየር ይችላሉ፦

const int xPin = A0;  //the VRX attach to
const int yPin = A1;  //the VRY attach to
const int swPin = 8;  //the SW attach to
const int alarmPin=2;//to buzzer

በመቀጠል፣ የጆይስቲኩን ሁኔታ ለማከማቸት ዓለም አቀፍ ተለዋዋጮች ይገለጻሉ። እነዚህ readJoystick() ተግባር በተጠራ ቁጥር ይዘመናሉ።

int xValue;//to store xValue
int yValue;//to store yValue
int swValue;//to store value of the switch

setup() ተግባር ውስጥ፣ የመቀየሪያ ፒኑ ከውስጥ የመጎተት ተቃዋሚ ጋር ተዋቅሯል። ይህ ወሳኝ እርምጃ ነው ምክንያቱም የውጭ ተቃዋሚ አስፈላጊነትን ያስወግዳል። ወደ INPUT_PULLUP በማዘጋጀት፣ ፒኑ በነባሪ HIGH ያነባል እና አዝራሩ ሲጫን ወደ LOW ይሄዳል።

pinMode(swPin, INPUT_PULLUP);  //set the SW pin to INPUT

ዋናው አመክንዮ በloop() ውስጥ ነው። አዲስ መረጃ ለማግኘት ብጁ የሆነውን readJoystick() ተግባር ይጠራል። ከዚያም ሁኔታን ይፈትሻል፡ የX-ዘንግ እሴት ከ600 በላይ ከሆነ እና የY-ዘንግ እሴት ከ300 ያነሰ ከሆነ፣ ባዘር ይበራል። ለጆይስቲክ የተለየ "ንቁ ዞን" ለመወሰን እነዚህን የገደብ እሴቶች መቀየር ይችላሉ። ባዘሩን ለማግበር alarmPin HIGH ይዘጋጃል እና መልእክት ወደ Serial Monitor ይታተማል።

if(xValue >600 && yValue <300)
{
  digitalWrite(alarmPin, HIGH);
  Serial.print("Alarm X:");
  Serial.print(xValue);
  Serial.print(" Y:");
  Serial.println(yValue);
}else{
  digitalWrite(alarmPin, LOW);
  // ... ማንቂያው ሲጠፋ እሴቶችን ለማተም ኮድ
}

በመጨረሻም፣ ብጁ ተግባር readJoystick() ይገለጻል። ይህ ተግባር ከX እና Y ፒኖች የአናሎግ እሴቶችን እና የመቀየሪያውን ዲጂታል ሁኔታ ያነባል፣ በአለምአቀፍ ተለዋዋጮች ውስጥ ያከማቻል። ይህ ሞዱላር አቀራረብ ዋናውን loop ንጹህ እና የተደራጀ ያደርገዋል።

void readJoystick()
{
  xValue =analogRead(xPin);//የxPin እሴትን ያንብብ
  yValue =analogRead(yPin);//የyPin እሴትን ያንብብ
  swValue =digitalRead(swPin);//የመቀየሪያውን ያንብብ 
}

የቀጥታ ፕሮጀክት እና ማሳያ

ኮዱ ከተጫነ በኋላ፣ ጥሬ እሴቶችን ለመመልከት Serial Monitor መከፈት ይችላል። መጀመሪያ ላይ፣ ጆይስቲኩ መሃል ላይ ሲሆን፣ የX እና Y እሴቶች ወደ 512 ገደማ ይሆናሉ፣ ይህም የ0-1023 ክልል መካከለኛ ነጥብ ነው። ጆይስቲኩን ወደ ታች መጫን የመቀየሪያውን እሴት ከ1 ወደ 0 ይቀይረዋል (በቪዲዮ 10:15 ላይ)።

ጆይስቲኩን ወደ ጫፎቹ ማንቀሳቀስ ሙሉውን ክልል ያሳያል፡ ሙሉ በሙሉ ወደ ቀኝ ማንቀሳቀስ የX እሴት 1023 ያሳያል፣ እና ሙሉ በሙሉ ወደ ግራ ማንቀሳቀስ 0 ያሳያል። በተመሳሳይ፣ ወደ ላይ እና ወደ ታች ማንቀሳቀስ የY እሴትን በ0 እና 1023 መካከል ይቀይረዋል (በቪዲዮ 10:37 ላይ)።

ማሳያው ከዚያም የፕሮጀክቱን የተግባር ክፍል ያሳያል። ጆይስቲኩ ወደ ላይኛው ቀኝ ጥግ ሲንቀሳቀስ (X > 600 እና Y < 300 በሚሆንበት)፣ ባዘሩ ይደወላል፣ እና Serial Monitor "Alarm" መልእክት ያትማል። ከዚያ ዞን ማራቅ ባዘሩን ያጠፋዋል። ይህ የሚያረጋግጠው የጆይስቲክን አቀማመጥ የውጤት መሳሪያን ለመቆጣጠር መጠቀም እንደሚችሉ ነው፣ ይህም ለተለያዩ አፕሊኬሽኖች ሪሌይዎችን፣ LEDs ወይም ሞተሮችን ለመቆጣጠር ሊራዘም ይችላል።

ምዕራፎች

  • [00:00] የXY ጆይስቲክ ፕሮጀክት መግቢያ
  • [01:20] ሃርድዌርን እና ውስጣዊ ክፍሎችን መረዳት
  • [03:33] የሞጁል ስኬማቲክ እና የመቋቋም መለኪያ
  • [05:51] ጆይስቲኩን ከአርዱኖ ጋር ማገናኘት
  • [07:00] ኮዱን ማዘጋጀት እና የፑል-አፕ ሬዚስተርን ማንቃት
  • [09:23] ኮድ መጫን እና ጥሬ እሴቶችን መሞከር
  • [12:21] እርምጃ መውሰድ፡ ባዘሩን በጆይስቲክ አቀማመጥ መቆጣጠር
  • [16:02] የማንቂያ ስርዓቱ የቀጥታ ማሳያ

ምስሎች

Sunfounder car assembled
Sunfounder car assembled
LB-LR0001_Dual-axis_XY_Joystick_Module
LB-LR0001_Dual-axis_XY_Joystick_Module
sunfounder-13-JoyStick-1
sunfounder-13-JoyStick-1
sunfounder-13-JoyStick-2
sunfounder-13-JoyStick-2
Joystick-Module-Internal-Structure
Joystick-Module-Internal-Structure
sunfounder-13_xy_joystick_wiring_bb
sunfounder-13_xy_joystick_wiring_bb
922-Lesson 13/31: How to read position and values of X-Y Joystick
ቋንቋ: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

እንደሚያስፈልግዎት ይችላል

ምንጮች እና ምንጮች

ፋይሎች📁

Arduino ቤተ መዝገቦች (zip)

ተጠቃሚ መመሪያ