ዝርዝር ሁኔታ:

አርዱዲኖን በመጠቀም ቀላል እና ዘመናዊ ሮቦቲክ ክንድ !!!: 5 ደረጃዎች (ከስዕሎች ጋር)
አርዱዲኖን በመጠቀም ቀላል እና ዘመናዊ ሮቦቲክ ክንድ !!!: 5 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱዲኖን በመጠቀም ቀላል እና ዘመናዊ ሮቦቲክ ክንድ !!!: 5 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱዲኖን በመጠቀም ቀላል እና ዘመናዊ ሮቦቲክ ክንድ !!!: 5 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: የአርዱዪኖ ሶፍትዌርን እንዴት ማውረድ እና መጫን እንደሚቻል 2024, ሰኔ
Anonim
Image
Image
የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች

በዚህ ትምህርት ውስጥ እኔ ቀለል ያለ የሮቦት ክንድ እሠራለሁ። ያ ዋና ክንድ በመጠቀም ቁጥጥር ይደረግበታል። ክንድ እንቅስቃሴዎችን ያስታውሳል እና በቅደም ተከተል ይጫወታል። ጽንሰ -ሐሳቡ አዲስ አይደለም ሀሳቡን ያገኘሁት ከ “ሚኒ ሮቦቲክ ክንድ -በ Stoerpeak” ይህንን ለረጅም ጊዜ ለማድረግ ፈልጌ ነበር ፣ ግን ያኔ ሙሉ በሙሉ ኖቤ ነበር እና ስለ ፕሮግራሚንግ እውቀት አልነበረኝም። አሁን በመጨረሻ አንድ እገነባለሁ ፣ ቀላል ፣ ርካሽ እና ከሁሉም ጋር እጋራለሁ።

ስለዚህ እንጀምር….

ደረጃ 1 የሚያስፈልጉዎት ነገሮች-

የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች

የሚያስፈልጉዎት ነገሮች ዝርዝር እነሆ--

1. ሰርቮ ሞተርስ x 5 አገናኝ ለአሜሪካ-- https://amzn.to/2OxbSH7Link ለአውሮፓ--

2. Potentiometers x 5 (100k ን ተጠቅሜአለሁ።) አገናኝ ለአሜሪካ-- https://amzn.to/2ROjhDMLink ለአውሮፓ--

3. አርዱዲኖ UNO. (አርዱዲኖ ናኖንም መጠቀም ይችላሉ) አገናኝ ለአሜሪካ-- https://amzn.to/2DBbENWLink ለአውሮፓ--

4. የዳቦ ሰሌዳ። (ይህንን ኪት እጠቁማለሁ) አገናኝ ለአሜሪካ-- https://amzn.to/2Dy86w4Link ለአውሮፓ--

5. ባትሪ. (እንደ አማራጭ ፣ እኔ የ 5 ቪ አስማሚን እጠቀማለሁ)

6. ካርቶን/እንጨት/ፀሐይ/ሰሌዳ/አክሬሊክስ መቼም የሚገኝ ወይም በቀላሉ የሚገኝ።

እና እንዲሁም Arduino IDE መጫን ያስፈልግዎታል።

ደረጃ 2- ክንድ መሥራት-

ክንድ መሥራት
ክንድ መሥራት
ክንድ መሥራት
ክንድ መሥራት

እዚህ እጄን ለመሥራት የፖፕሲክ እንጨቶችን ተጠቅሜያለሁ። ለእርስዎ የሚገኝ ማንኛውንም ቁሳቁስ መጠቀም ይችላሉ። እና የተሻለ ክንድ እንኳን ለማድረግ የተለያዩ ሜካኒካዊ ንድፎችን መሞከር ይችላሉ። የእኔ ንድፍ በጣም የተረጋጋ አይደለም።

እኔ አሁን ፖፕስክሌል ዱላ ላይ ሰርጎቹን ለመለጠፍ እና ዊንጮችን በመጠቀም ለማሰር ባለ ሁለት ጎን ቴፕ እጠቀም ነበር።

ለዋናው ክንድ ፖፕቲዮሜትሮችን ከፖፕሲክ ዱላዎች ጋር አጣበቅኩ እና ክንድ ሠራሁ።

ስዕሎቹን በመጥቀስ የተሻለ ሀሳብ ይሰጥዎታል።

እኔ እንደ መሠረት ሆኖ በሚያገለግል የ A4 መጠን የሸራ ሰሌዳ ላይ ሁሉንም ነገር ሰቅያለሁ።

ደረጃ 3 ግንኙነቶችን መፍጠር-

ግንኙነቶችን በመፍጠር ላይ
ግንኙነቶችን በመፍጠር ላይ
ግንኙነቶችን በመፍጠር ላይ
ግንኙነቶችን በመፍጠር ላይ
ግንኙነቶችን በመፍጠር ላይ
ግንኙነቶችን በመፍጠር ላይ

በዚህ ደረጃ ሁሉንም አስፈላጊ ግንኙነቶች እናደርጋለን ፣ ከላይ ያሉትን ስዕሎች ይመልከቱ።

  • በመጀመሪያ ሁሉንም አገልጋዮች ከኃይል አቅርቦቱ ጋር በትይዩ ያገናኙ (ቀዩ ሽቦ ወደ +ve እና ጥቁር ወይም ቡናማ ሽቦ ከ Gnd)
  • በመቀጠል የምልክት ሽቦዎችን ማለትም ቢጫ ወይም ብርቱካናማ ሽቦን ከ PWM ፒን አርዱዲኖ ጋር ያገናኙ።
  • አሁን የ potentiometers ን በትይዩ ከ +5v እና Gnd of arduino ጋር ያገናኙ።
  • የመካከለኛውን ተርሚናል ከአርዶኒዮ አናሎግ ፒን ጋር ያገናኙ።

እዚህ ዲጂታል ፒን 3 ፣ 5 ፣ 6 ፣ 9 እና 10 አገልጋዮችን ለመቆጣጠር ያገለግላሉ

አናሎግ ፒን A0 እስከ A4 ከ Potentiometers ለግቤት ያገለግላሉ።

ከፒን 3 ጋር የተገናኘው ሰርቪው ከ A0 ጋር በተገናኘ በ potentiometer ቁጥጥር ይደረግበታል

ከፒን 5 ጋር የተገናኘው ሰርቪስ በ A1 ላይ በድስት ቁጥጥር ይደረግበታል ፣ እና ወዘተ….

ማስታወሻ- ምንም እንኳን ሰርቪስ በአርዲኖ ባይጎበኙም ፣ የአገልጋዮቹን Gnd ከአርዲኖ ጋር ማገናኘቱን ያረጋግጡ ፣ አለበለዚያ ክንድ አይሰራም።

ደረጃ 4- ኮድ መስጠት-

ኮድ መስጠት
ኮድ መስጠት

የዚህ ኮድ አመክንዮ ቀላል ነው የ potentiometers እሴቶች በአንድ ድርድር ውስጥ ተከማችተዋል መዝገቦቹ ለ ‹ሉፕ› በመጠቀም ተሻግረው አገልጋዮቹ እንደ እሴቶቹ ደረጃዎቹን ያደርጋሉ። ለማጣቀሻነት የተጠቀምኩበትን ይህንን አጋዥ ስልጠና መመልከት ይችላሉ።

ኮድ-- (ሊወርድ የሚችል ፋይል ከዚህ በታች ተያይ attachedል።)

በመጀመሪያ በፕሮግራሙ ውስጥ ልንጠቀምባቸው እንዲችሉ ሁሉንም አስፈላጊ ተለዋዋጮችን በአለምአቀፍ እናሳውቃለን። ለዚህ ልዩ ማብራሪያ አያስፈልግም።

#ያካትቱ

// የ Servo ነገሮች Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potentiometer Objects int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Servo Position int Servo_0_Pos ን ለማከማቸት ተለዋዋጭ; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // የቀድሞው የአቀማመጥ እሴቶችን በ Prev_0_Pos ውስጥ ለማከማቸት ተለዋዋጭ; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // የአሁኑን አቀማመጥ እሴቶችን በ Current_0_Pos ውስጥ ለማከማቸት ተለዋዋጭ; int Current_1_Pos; int የአሁኑ_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; // አንጎሉን በ Servo_Number ያከማቻል ፤ // ምንም የ servo int ማከማቻ [600] ን ያከማቻል ፤ // መረጃን ለማከማቸት ድርድር (የድርድር መጠን መጨመር ብዙ ማህደረ ትውስታን ይወስዳል) int Index = 0; // የድርድር መረጃ ጠቋሚ ከ 0 ኛ ቦታ ቻር መረጃ = 0; // ከተከታታይ ግብዓት መረጃን ለማከማቸት ተለዋዋጭ።

አሁን ፒኖችን እና ተግባሮቻቸውን የምናስቀምጥበትን የማዋቀር ተግባር እንጽፋለን። ይህ መጀመሪያ የሚያስፈጽመው ዋና ተግባር ነው።

ባዶነት ማዋቀር ()

{Serial.begin (9600); // በአርዱዲኖ እና አይዲኢ መካከል ለተከታታይ ግንኙነት። // የ Servo ዕቃዎች ከ PWM ፒኖች ጋር ተያይዘዋል። Servo_0.attach (3); Servo_1.attach (5); Servo_2.attach (6); Servo_3.attach (9); Servo_4.attach (10); // ሰርቪስ መጀመሪያ ላይ ወደ 100 ቦታ ተዘጋጅተዋል። Servo_0. ጻፍ (100); Servo_1. ጻፍ (100); Servo_2. ጻፍ (100); Servo_3. ጻፍ (100); Servo_4. ጻፍ (100); Serial.println ( ለመቅዳት 'R' ን ይጫኑ እና 'ፒ' ለመጫወት»); }

አሁን የአናሎግ ግቤት ፒኖችን በመጠቀም የ potentiometers እሴቶችን ማንበብ እና servos ን ለመቆጣጠር ካርታ ማድረግ አለብን ለዚህ ለዚህ እኛ አንድ ተግባር እንገልፃለን እና Map_Pot () እንሰይማለን። ፣ የፈለጉትን ሁሉ መሰየም ይችላሉ ፣ እሱ በተጠቃሚ የተገለጸ ተግባር ነው።

ባዶ Map_Pot ()

{ / * አገልጋዮቹ በ 180 ዲግሪዎች ይሽከረከራሉ ፣ ግን ገደቦችን መጠቀሙ ያለማቋረጥ የሚረብሽ ስለሆነ አገልጋዮቹን የሚረብሽ ስለሆነ በ 1-179 * / Pot_0 = አናሎግ አንብብ (A0); // ከድስት ግብዓት ያንብቡ እና በተለዋዋጭ Pot_0 ውስጥ ያከማቹ። Servo_0_Pos = ካርታ (Pot_0, 0, 1023, 1, 179); // ከ 0 እስከ 1023 ባለው እሴት መሠረት ካርታ servos ካርታ Servo_0.write (Servo_0_Pos); // አገልጋዩን ወደዚያ ቦታ ያንቀሳቅሱት። Pot_1 = analogRead (A1); Servo_1_Pos = ካርታ (Pot_1, 0, 1023, 1, 179); Servo_1. ጻፍ (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = ካርታ (Pot_2, 0, 1023, 1, 179); Servo_2. ጻፍ (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = ካርታ (Pot_3, 0, 1023, 1, 179); Servo_3. ጻፍ (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = ካርታ (Pot_4, 0, 1023, 1, 179); Servo_4. ጻፍ (Servo_4_Pos); }

አሁን የሉፕ ተግባርን እንጽፋለን-

ባዶነት loop ()

{Map_Pot (); // የድስት እሴቶችን ለማንበብ የተግባር ጥሪ (Serial.available ()> 0) {data = Serial.read (); ከሆነ (ውሂብ == 'R') Serial.println ("ቀረጻ ይንቀሳቀሳል …"); ከሆነ (ውሂብ == 'P') Serial.println ("የተመዘገቡ እንቅስቃሴዎችን መጫወት …"); } ከሆነ (data == 'R') // 'R' ከገባ መቅረጽ ይጀምሩ። {// እሴቶቹን በተለዋዋጭ Prev_0_Pos = Servo_0_Pos ውስጥ ያከማቹ ፤ Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot (); // የካርታ ተግባር (abs (Prev_0_Pos == Servo_0_Pos)) // ፍጹም እሴት የሚገኘው {Servo_0.write (Servo_0_Pos) ን በማወዳደር ነው። // እሴቶች ከ servo ጋር የሚዛመዱ ከሆነ (የአሁኑ_0_Pos! = Servo_0_Pos) // እሴቶች የማይዛመዱ ከሆነ {ማከማቻ [ማውጫ] = Servo_0_Pos + 0; // እሴት ወደ ድርድር ማውጫ ++ ታክሏል ፣ // የመረጃ ጠቋሚ እሴት በ 1} የአሁኑ_0_Pos = Servo_0_Pos ጨምሯል ፤ } /* በተመሳሳይ የእሴት ንፅፅር ለሁሉም ሰርቪስ ይደረጋል ፣ +100 ለመግቢያ እንደ ልዩነት እሴት እያንዳንዱ ታክሏል። */ ከሆነ (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); ከሆነ (Current_1_Pos! = Servo_1_Pos) {ማከማቻ [ማውጫ] = Servo_1_Pos + 100; ማውጫ ++; } የአሁኑ_1_Pos = Servo_1_Pos; } ከሆነ (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); ከሆነ (Current_2_Pos! = Servo_2_Pos) {ማከማቻ [ማውጫ] = Servo_2_Pos + 200; ማውጫ ++; } የአሁኑ_2_Pos = Servo_2_Pos; } ከሆነ (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3. ጻፍ (Servo_3_Pos); ከሆነ (የአሁኑ_3_ፓስ! = Servo_3_Pos) {ማከማቻ [ማውጫ] = Servo_3_Pos + 300; ማውጫ ++; } የአሁኑ_3_Pos = Servo_3_Pos; } ከሆነ (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4. ጻፍ (Servo_4_Pos); ከሆነ (የአሁኑ_4_ፖስ! = Servo_4_Pos) {ማከማቻ [ማውጫ] = Servo_4_Pos + 400; ማውጫ ++; } የአሁኑ_4_ፖስ = Servo_4_Pos; } / * እሴቶች በተከታታይ ማሳያ ላይ ታትመዋል ፣ '\ t' እሴቶችን በሰንጠረዥ ቅርጸት ለማሳየት ነው * / Serial.print (Servo_0_Pos) ፤ Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("ማውጫ ="); Serial.println (ማውጫ); መዘግየት (50); } ከሆነ (ውሂብ == 'P') // IF 'P' ከገባ ፣ የተቀዱ እንቅስቃሴዎችን መጫወት ይጀምሩ። {ለ (int i = 0; i <Index; i ++) // ለሉፕ በመጠቀም ድርድርን ይለፉ {Servo_Number = Storage /100; // የ servo ቁጥርን ያገኛል Servo_Position = ማከማቻ % 100; // የ servo መቀየሪያ (Servo_Number) ቦታን ያገኛል {case 0: Servo_0.write (Servo_Position); ሰበር; ጉዳይ 1: Servo_1.write (Servo_Position); ሰበር; ጉዳይ 2 Servo_2.write (Servo_Position); ሰበር; ጉዳይ 3 Servo_3.write (Servo_Position); ሰበር; ጉዳይ 4: Servo_4.write (Servo_Position); ሰበር; } መዘግየት (50); }}}

ኮዱ ዝግጁ ከሆነ ፣ አሁን ወደ አርዱዲኖ ቦርድ ይስቀሉት።

ስማርት ክንድ ለመሥራት ዝግጁ ነው። በስቶርፔክ እንደተሰራው ተግባሩ ገና ለስላሳ አይደለም።

ኮዱን በተሻለ ሁኔታ ማሻሻል ከቻሉ ወይም ማንኛውም ጥቆማዎች ካሉኝ እባክዎን በአስተያየቱ ክፍል ውስጥ ያሳውቁኝ።

በዚህ በተነገረን ወደ ፈተና እንሂድ….

ደረጃ 5: ሙከራ-

ኮዱን በተሳካ ሁኔታ ወደ ቦርዱ ከሰቀሉ በኋላ ‹ተከታታይ ሞኒተር› ን በመሳሪያዎች አማራጭ ውስጥ ሊያገኙት ይችላሉ። ተከታታይ ሞኒተር ሲጀምር አርዱኢኖ ዳግም ይጀመራል። አሁን ዋናውን ክንድ በመጠቀም የሮቦት ክንድን መቆጣጠር ይችላሉ። ግን ምንም እየተመዘገበ አይደለም።

መቅዳት ለመጀመር ፣ አሁን በመቆጣጠሪያው ውስጥ ‹አር› ን ያስገቡ እና ለመቅዳት የሚፈልጉትን እንቅስቃሴዎች ማከናወን ይችላሉ።

እንቅስቃሴዎቹ ከተደረጉ በኋላ የተቀዳውን እንቅስቃሴ ለማጫወት 'P' ን ማስገባት አለብዎት። ቦርዱ እስካልተዋቀረ ድረስ ሰርቪዎቹ እንቅስቃሴዎቹን ማከናወናቸውን ይቀጥላሉ።

የሚመከር: