ዝርዝር ሁኔታ:

አርዱinoኖ: የፒንቦል ማሽን: 8 ደረጃዎች (ከስዕሎች ጋር)
አርዱinoኖ: የፒንቦል ማሽን: 8 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱinoኖ: የፒንቦል ማሽን: 8 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱinoኖ: የፒንቦል ማሽን: 8 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: How to control you lights using nodemcu and wifi .ኖድደምኩ እና ዋይፋይ በመጠቀም መብራቶችን እንዴት እንደሚቆጣጠሩ 2024, ሰኔ
Anonim
Image
Image

እኔ ሁለቱንም የፒንቦል ማሽኖችን ፣ እና ኤሌክትሮኒክስን እንደወደድኩ ፣ የራሴን የፒንቦል ማሽን ለመሥራት ወሰንኩ። እኔ ለፕሮግራሙ እና ለኤሌክትሮኒክስ ኤሌክትሮኒክስ አርዱዲኖን መርጫለሁ ፣ ምክንያቱም እሱ በጣም ተደራሽ የሆነ መድረክ ስለሆነ ለመጠቀም ቀላል እና ለመጠቀም ቀላል ነው።

በዚህ መመሪያ ውስጥ የእድገቴን ሂደት እገልጻለሁ ፣ ስለዚህ ምናልባት ከእናንተ አንዱ አፍቃሪዎች አንድ ዓይነት ነገር ሊፈጥሩ ይችላሉ።

ደረጃ 1 - ጉዳዩን መገንባት

ጉዳዩን መገንባት
ጉዳዩን መገንባት

በፒንቦል ማሽን ጉዳይ እንጀምር። እኔ ቀላል ቀላል ግንባታ ሠራሁ። የታችኛውን ጠፍጣፋ አየሁ ፣ እና የግድግዳውን ቁርጥራጮች ለማገናኘት በማዕዘኖቹ ውስጥ 4 ጥቃቅን የእንጨት ዓምዶችን ተጠቀምኩ። የጉዳይዎ መጠን የእራስዎ ምርጫ ነው ፣ ቦታውን ለመሙላት ማንኛውንም እጅግ በጣም አስደናቂ ተጨማሪዎችን ለመጨመር እቅድ ስላልነበረኝ ከዋናው የፒንቦል ማሽን ትንሽ ትንሽ ለማድረግ መርጫለሁ። ጉዳዩን በተቻለ መጠን የተረጋጋ ለማድረግ ሁለቱንም ብሎኖች እና ሙጫ እጠቀም ነበር። በጀርባው ላይ የፒንቦል ማሽኑን ተምሳሌታዊ ማወዛወዝ ለሚሰጡት ለሁለት እግሮች በወለል ቁራጭ ውስጥ ሁለት ቀዳዳዎችን ቆፍሬያለሁ። እንደገና ፣ የእግሮች ቁመት ሁሉም በእርስዎ ላይ የተመሠረተ ነው። እግሮቹን ከፍ በሚያደርጉት መጠን ኳሱ በፍጥነት ይሽከረከራል (ወደ ታች)።

ደረጃ 2 የ Flipper መካኒክ መገንባት

የፍሊፐር ሜካኒክ መገንባት
የፍሊፐር ሜካኒክ መገንባት

የዚህን ፕሮጀክት ዋጋ ለመገደብ ስፈልግ ፣ ከኤሌክትሮኒክስ ይልቅ ሙሉ በሙሉ ሜካኒካዊ ተንሸራታቾችን ለመሥራት ወሰንኩ። በኤሌክትሮኒክ ተንሸራታቾች ላይ ፍላጎት ካለዎት በተወሰነ መልኩ ተመሳሳይ የሆነ ግንባታን መጠቀም ይችላሉ ፣ ግን ከእሱ ጋር የተገናኘ ‹ሶሎኖይድ› ተብሎ በሚጠራው (ተንሸራታቹን ለመቆጣጠር በቂ ኃይል ያላቸው ሶሎኖይዶች ለእኔ በጣም ውድ ነበሩ)።

ለሁለቱም ተንሸራታቾች ምሰሶ ነጥብ ከታች ሁለት ቀዳዳዎችን በመቆፈር ጀመርኩ። እኔ (በእኔ አስተያየት) እርስ በእርስ በጣም ቅርብ የሆነ ቀዳዳዎችን ቆፍሬያለሁ ፣ እና ይህ ጨዋታው በመጨረሻ በጣም ቀላል እንዲሆን አድርጎታል። ስለዚህ ቀላል የጨዋታ ዘይቤ እስካልፈለጉ ድረስ ተንሸራታቾቹን እርስ በእርስ በጣም ቅርብ እንዳያደርጉ ይጠንቀቁ።

እኔ ደግሞ በሁለቱም የጎን ግድግዳዎች ውስጥ ከሚንሸራተቱ ቀዳዳዎች ጋር ትይዩ ሆነው ሁለት ቀዳዳዎችን ቆፍሬያለሁ። እነዚህ ቀዳዳዎች ለሁለቱም ተንሸራታች አዝራሮች ጥቅም ላይ ይውላሉ።

ተንሸራታቾቹን ወደ መጀመሪያው ቦታ ለመሳብ ምንጮችን እጠቀም ነበር ፣ እና ቁልፎቹ በሚጫኑበት ጊዜ እንዲሽከረከሩ ለማድረግ በማዞሪያዎቹ እና በአዝራሮቹ መካከል የማነፃፀሪያ ግንባታ አደረግሁ። ምንጮቹን ተንሸራታቾቹን በጣም ወደ ኋላ እንዳይጎትቱ ለማቆም ፣ ተንሸራታቾቹን በመጀመሪያ ቦታቸው ለመያዝ ሁለት ዊንጮችን አስቀምጫለሁ።

ደረጃ 3: ግድግዳዎቹን ማስቀመጥ

ግድግዳዎቹን በማስቀመጥ ላይ
ግድግዳዎቹን በማስቀመጥ ላይ

የፒንቦል ኳሱን ወደ ተንሸራታቾች ለማዞር ሁለት ግድግዳዎችን አስቀምጫለሁ። ለመሥራት በጣም ቀላል ናቸው። ከጉዳዩ በታች 3 ቀዳዳዎችን በቀላሉ ይከርክሙ እና በሶስት የእንጨት ፒን ይግፉት። በፒንቹ ዙሪያ የጎማ ባንድ ጠቅልለው ጨርሰዋል።

ደረጃ 4 የውጤት ማገጃዎችን ማከል

የውጤት ማገጃዎችን ማከል
የውጤት ማገጃዎችን ማከል
የውጤት ማገጃዎችን ማከል
የውጤት ማገጃዎችን ማከል

የውጤት ብሎኮች የፒንቦል ማሽን በጣም አስፈላጊ ከሆኑት ክፍሎች ውስጥ አንዱ ናቸው ፣ ስለዚህ ይህንን ክፍል በትክክል ማከናወኑን ያረጋግጡ። ለፒንቦል ማሽንዬ ሶስት የውጤት ብሎኮችን ሠርቻለሁ ፣ ግን ይህ ሁሉ በእርስዎ ላይ የተመሠረተ ነው።

ትንሽ የመጥረጊያ ቁራጭ አየሁ ፣ እና ዙሪያውን የመዳብ ሽቦ ተጠምጥሜ አየሁ። አርዱዲኖ ይህንን የመዳብ ሽቦ ያለማቋረጥ በ 5 ቮ ኃይል ይሰጠዋል። ከኳሱ ጋር የተሻለ ግንኙነት ለማድረግ አራት የብዕር ምንጮችን ወደ ጎን ሸጥኩ።

ነጥቡ የሚያግድበት መንገድ ኳሱ በአርዱዲኖ ላይ ወደ ግብዓት ፒን የሚያመራውን ወረዳ ያጠናቅቃል። ስለዚህ እኔ ያደረግሁት በጉዳዩ የታችኛው ክፍል ላይ የአልሙኒየም ፎይል ቴፕን (ነካውን አለመነካካት) እና ፎርዱ በአርዱዲኖ ላይ እስከ ፒን ድረስ ሽቦ ነበር። ኳሱ ሁለቱንም መዳብ እና አልሙኒየም በሚመታበት ጊዜ ወረዳው ይጠናቀቃል እና አርዱዲኖ ምልክት ይቀበላል።

የአሉሚኒየም ፎይልን በመጠቀም ሁሉንም የውጤት ብሎኮች አንድ ላይ አገናኘኋቸው ፣ ግን ተጣባቂው ጎን ኤሌክትሪክ እንደማያደርግ ያስታውሱ።

ደረጃ 5 ጨዋታውን ከእውቂያ በላይ ማከል

በእውቂያ ላይ ጨዋታውን ማከል
በእውቂያ ላይ ጨዋታውን ማከል

በፒንቦል ማሽኑ ታችኛው ክፍል ፣ በተንሸራታችዎቹ መካከል ፣ በእውቂያ ላይ ጨዋታ ጨመርኩ። ኳሱ ይህንን ግንኙነት በሚነካበት ጊዜ ሁሉ ተጫዋቹ ኳስ ያጣል። እኔ የሠራሁት ግንባታ ከውጤት ብሎኮች ጋር በጣም ተመሳሳይ ነው። እዚህ ብቻ ሁለት ዊንጮችን እጠቀማለሁ ፣ እና እንደገና አንድ የአሉሚኒየም ወረቀት ቁራጭ።

ደረጃ 6 የኬብል ቀዳዳዎችን መቆፈር

የኬብል ቀዳዳዎችን መቆፈር
የኬብል ቀዳዳዎችን መቆፈር
የኬብል ቀዳዳዎችን መቆፈር
የኬብል ቀዳዳዎችን መቆፈር
የኬብል ቀዳዳዎችን መቆፈር
የኬብል ቀዳዳዎችን መቆፈር

እስከ አርዱዲኖ ድረስ ሁሉንም ነገር ማገናኘት ከመጀመራችን በፊት በመጀመሪያ ለኬብሎች ሁለት ቀዳዳዎችን መቆፈር አለብን። በሁለቱም የአሉሚኒየም ፎይል ቁርጥራጮች በኩል አንድ ቀዳዳ ቆፍሬያለሁ ፣ ስለዚህ በአሉሚኒየም ፎይል ውስጥ አንድ ነጥብ ወደ ነጥቦቹ ብሎኮች አጠገብ ፣ እና በጨዋታው አቅራቢያ በአሉሚኒየም ፎይል ውስጥ አንድ ቀዳዳ በእውቂያ ላይ።

ከዚህ በተጨማሪ ፣ እኔ ወደ ታችኛው የግራ ቀዳዳ ፣ በግድግዳዎቹ መካከል ፣ ወደ ተጨማሪው የኳስ በር Servo የሚያመራውን ገመድ ቆፍሬያለሁ።

እንዲሁም ከታች ካለው ኤልሲዲ ጋር ለተገናኘው ገመድ ቀዳዳ መኖር አለበት።

ደረጃ 7 - ሁሉንም ነገር ወደ ሽቦ ማዞር

ሁሉንም ነገር ወደላይ ማዞር
ሁሉንም ነገር ወደላይ ማዞር
ሁሉንም ነገር ወደላይ ማዞር
ሁሉንም ነገር ወደላይ ማዞር

ሁሉም ኬብሎች የት መሄድ እንዳለባቸው የተሻለ አጠቃላይ እይታ እንዲኖረኝ ይህንን ስልታዊ አደረግኩ። መስቀሎች ኬብሎች የሚገናኙባቸው ነጥቦች ናቸው። ሁሉንም ነገር የበለጠ የተረጋጋ እና አስተማማኝ ለማድረግ በተቻለ መጠን ለመሸጥ ሞከርኩ። ሽቦው የተወሰነ ጊዜ ይወስዳል ፣ ግን ይህ ከተደረገ በኋላ ወደ እርስዎ ቅርብ ነዎት!

ደረጃ 8 - ኮዱን በመስቀል ላይ

የፒንቦል ማሽንዎ እንዲኖር ለማድረግ የሚከተለውን ኮድ ወደ አርዱinoኖ ይስቀሉ!

// ለኤልሲዲ ቤተ -መጽሐፍት ያካትቱ

#አካትት #አካትት

// የ lcd ውሂብ ፒኖችን ያስጀምሩ

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);

// ሰርቨር ይፍጠሩ

Servo ballGateServo;

// ለምንጠቀምባቸው ፒኖች ተለዋዋጮችን ይፍጠሩ

int gameoverPin = 6; int scorePin = 5; int speakerPin = 4; int ballGateServoPin = 3;

// ለፒንቦል ማሽን የጨዋታ ጨዋታ ተለዋዋጮችን ያስጀምሩ

int ውጤት = 0; int highscore = 500; bool highscoreReached = ሐሰት; int ኳሶች = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = ሐሰት;

// ይህንን ኮድ በመጀመሪያው ክፈፍ ላይ አንዴ ያሂዱ

ባዶነት ማዋቀር () {// pinMode ን ለምንጠቀምባቸው ፒኖች (gameoverPin ፣ INPUT) ያዘጋጁ ፤ pinMode (ውጤት ፒን ፣ ግቤት);

// ስፋቱን እና ቁመቱን በመስጠት lcd ን ያስጀምሩ

lcd.begin (16, 2);

// የኳሱን በር servo ን ከተገቢው ፒን ጋር ያያይዙ

ballGateServo.attach (ballGateServoPin);

// የበሩን አገልጋይ ወደ መጀመሪያው ቦታ ዳግም ያስጀምሩ

ballGateServo.write (0); }

// እያንዳንዱን ክፈፍ ይህንን ኮድ ያሂዱ

ባዶነት loop () {// የፒን ግብዓቶችን int gameoverState = digitalRead (gameoverPin) ይያዙ ፤ int scoreState = digitalRead (scorePin);

// ግብዓት ከተቀበለ ወደ ነጥቡ ያክሉ

ከሆነ (የውጤት ሁኔታ) {ቶን (ተናጋሪ ፒን ፣ 1000); ነጥብ += 10; } ሌላ {noTone (4); }

// የጨዋታ ጫፉ ጉድጓድ ከተቀሰቀሰ ከኳሶቹ ይቀንሱ

ከሆነ (gameoverState እና! gameoverTriggered) {ኳሶች -= 1; gameoverTriggered = እውነት; gameoverTimer = gameoverTimerDuration; }

// ኳሱ የጨዋታ ጫወታውን እንደማይነካው ወዲያውኑ የጨዋታውን ሰዓት ቆጣሪ ይጀምሩ

ከሆነ (! gameoverState) {ከሆነ (gameoverTimer> = 1) {gameoverTimer -= 1; } ሌላ {gameoverTriggered = false; }}

// የጨዋታውን ጽሑፍ ወደ ኤልሲዲ ያብሩ እና ውጤቱን እና ኳሶችን እንደገና ያስጀምሩ

ከሆነ (ኳሶች <= 0) {lcd.setCursor (0, 0); ለ (int i = 5; i> = 1; i--) {lcd.clear (); መዘግየት (250); lcd.print ("GAME OVER"); lcd.setCursor (0, 1); lcd.print ("እንደገና ይሞክሩ?"); መዘግየት (250); } lcd.clear (); ውጤት = 0; ballGateServo.write (0); highscoreReached = ሐሰት; ኳሶች = 3; }

ከሆነ (ውጤት> ከፍተኛ ውጤት እና! ከፍተኛ ውጤት ደርሷል) {

lcd.setCursor (0, 0); ለ (int i = 5; i> = 1; i--) {lcd.clear (); መዘግየት (250); lcd.print ("አዲስ ከፍተኛ ደረጃ"); lcd.setCursor (0, 1); lcd.print ("ድንገተኛ ሞት!"); መዘግየት (250); } lcd.clear (); ኳሶች = 1; ballGateServo.write (120); ከፍተኛ ውጤት = ውጤት; highscoreReached = እውነት; }

// የአሁኑ ውጤት ከፍ ያለ ከሆነ ከፍተኛውን ውጤት ያዘምኑ

ከሆነ (ውጤት> ከፍተኛ ውጤት) {highscore = score; }

// ጠቋሚውን ወደ መስመር 0 ያዘጋጁ

lcd.setCursor (0, 0); // የአሁኑን (ከፍተኛ) ውጤት ወደ ኤልሲዲ ያትሙ (ውጤት <= 0) {lcd.print ("Highscore:" + String (highscore) + "")) } ሌላ {lcd.print ("ነጥብ:" + ሕብረቁምፊ (ውጤት) + ""); }

// ጠቋሚውን ወደ መስመር 1 ያዘጋጁ

lcd.setCursor (0, 1);

// የአሁኑን የኳስ መጠን ወደ ኤልሲዲ ያትሙ

lcd.print ("ኳሶች:" + ሕብረቁምፊ (ኳሶች)); }

የሚመከር: