ዝርዝር ሁኔታ:

ማይክሮን ፕሮግራም ማድረግ - ቢት ሮቦት እና ጆይስቲክ - ቢት መቆጣጠሪያ በማይክሮ ፓይቶን 11 ደረጃዎች
ማይክሮን ፕሮግራም ማድረግ - ቢት ሮቦት እና ጆይስቲክ - ቢት መቆጣጠሪያ በማይክሮ ፓይቶን 11 ደረጃዎች

ቪዲዮ: ማይክሮን ፕሮግራም ማድረግ - ቢት ሮቦት እና ጆይስቲክ - ቢት መቆጣጠሪያ በማይክሮ ፓይቶን 11 ደረጃዎች

ቪዲዮ: ማይክሮን ፕሮግራም ማድረግ - ቢት ሮቦት እና ጆይስቲክ - ቢት መቆጣጠሪያ በማይክሮ ፓይቶን 11 ደረጃዎች
ቪዲዮ: DIY ፈጣን እና ቀላል አሻንጉሊት Djanilda መስራት ይማሩ 2024, ሀምሌ
Anonim
ማይክሮ ፕሮግራምን ማዘጋጀት - ቢት ሮቦት እና ጆይስቲክ - ቢት መቆጣጠሪያ በማይክሮ ፓይቶን
ማይክሮ ፕሮግራምን ማዘጋጀት - ቢት ሮቦት እና ጆይስቲክ - ቢት መቆጣጠሪያ በማይክሮ ፓይቶን

ለሮቦካምፕ 2019 ፣ የእኛ የበጋ ሮቦቲክስ ካምፕ ፣ ዕድሜያቸው ከ10-13 የሆኑ ወጣቶች የቢቢሲ ማይክሮ-ቢት ላይ የተመሠረተ ‹antweight ሮቦት› ፣ እንዲሁም ማይክሮ-ቢት እንደ የርቀት መቆጣጠሪያ ለመጠቀም ብየዳ እያዘጋጁ ፣ እያዘጋጁ እና እየገነቡ ናቸው።

የመጀመሪያዎቹን ሁለት ደረጃዎች በቡድን እንዳደረግነው በአሁኑ ጊዜ በሮቦካምፕ ውስጥ ከሆኑ ወደ ደረጃ 3 ይዝለሉ

ከጆይስቲክ-ቢት መቆጣጠሪያ ጋር የሚገናኝ ማይክሮ-ቢት ሮቦት ለማግኘት ይህ የደረጃ በደረጃ መመሪያ ነው።

ሁሉም ነገር እንዲሠራ ፈጣኑ መንገድ አይወስድም ፣ ግን በሚሄዱበት ጊዜ ኮዱን ለመፈተሽ ፣ የራስዎን ማህተም በላዩ ላይ እንዲጭኑ እና እኛ የምንሠራቸውን ነገሮች ለምን እንደምናደርግ እንዲረዱ ነገሮችን በትንሽ ቁርጥራጮች ይሞክራል። !

ለዚህ እንቅስቃሴ እኛ የራሳችንን ብጁ ሮቦት እንጠቀማለን ፣ ግን እንደ L9110 ዎች ካሉ ተመሳሳይ የሞተር ሾፌር በመጠቀም ከማንኛውም ሮቦት ጋር ይሠራል።

ለሮቦታችን የንድፍ ፋይሎች እዚህ ይገኛሉ

ይህ መመሪያ ለጀማሪዎች የተፃፈ ነው ፣ ግን ከዚህ በፊት ማይክሮ -ቢት ከማይክሮፒቶን ጋር በጭራሽ የማይጠቀሙ ከሆነ ፣ ልክ እንደ የስማችን ባጅ አስተማሪ የሆነ ቀለል ያለ ፕሮግራም እንዲሞክሩ እንመክርዎታለን- https://www.instructables.com/id/Felt -ማይክሮቢት-ናም…

አቅርቦቶች

2x ቢቢሲ ማይክሮ ቢት

ከቢቢሲ ማይክሮ ጋር የሚሠራ ሮቦት - ቢት (ከላይ ያለውን ማብራሪያ ይመልከቱ)

ጆይስቲክ - ቢት መቆጣጠሪያ (የእኛን ከቀዝቃዛ አካላት አግኝተናል)

ደረጃ 1-ሮቦት ማዋቀር

የማይክሮ ፓይቶን ኮድ ለማይክሮ -ቢትዎ ለመፃፍ ጥቂት አማራጮች አሉዎት

  • ሙ ፣ እርስዎ ከዚህ ማውረድ እና መጫን የሚችሉት-
  • እዚህ ሊያገኙት የሚችሉት የመስመር ላይ አርታኢ

እነዚህ መመሪያዎች ሙን እየተጠቀሙ እንደሆነ ያስባሉ።

ሙን ይክፈቱ እና ማይክሮ -ቢትዎን በኮምፒተርዎ ላይ ይሰኩ። ሙ ማይክሮ -ቢት እየተጠቀሙ መሆኑን መገንዘብ አለበት እና ማይክሮ -ቢት ‹ሞድ› ን ይምረጡ ፣ ካልሆነ ግን እራስዎ ይለውጡት።

ሁነታን ይምረጡ
ሁነታን ይምረጡ

የሮቦት ሞተር የሙከራ ኮዱን ቅጂ ከዚህ ያግኙ

ለ Github ካልተለመዱ ፣ የማይነቃነቅ ሊሆን ይችላል! ይህንን ኮድ ለማግኘት ሁለት ቀላል መንገዶች -

  1. ጥሬውን ፋይል በኮምፒተርዎ ላይ ያስቀምጡ ፣ ከዚያ ወደ ሙ ይጫኑት
  2. የተሰጠውን ኮድ ሁሉ ይቅዱ እና በሙ አዲስ ፋይል ውስጥ ይለጥፉ።
ጥሬ ፋይልን ያስቀምጡ
ጥሬ ፋይልን ያስቀምጡ

አዲሱን ኮድዎን ወደ ማይክሮ -ቢት ለመላክ አሁን ከሙ መሣሪያ መሣሪያ አሞሌ ‹ፍላሽ› ቁልፍን ጠቅ ያድርጉ።

ማይክሮ -ቢት እስካልተሰካ ድረስ ይህ አይሰራም

በማይክሮው ጀርባ ላይ ያለው ቢጫ መብራት ቢት መብረቅ ይጀምራል። ሲጨርስ የእርስዎ ኮድ ተላል hasል።

የሞተር አቅጣጫዎችን ማቀናበር

በማይክሮ ቢት ላይ የ “ሀ” ቁልፍን ሲጫኑ ይህ ፕሮግራም ሞተሮችን በተለያዩ አቅጣጫዎች ያበራል።

እርስዎ እንዲሆኑ የሚፈልጉት -

  • 'ሀ' በሚታይበት ጊዜ የግራ ሞተር ወደ ፊት
  • 'ለ' ሲታይ የግራ ሞተር ወደ ኋላ
  • 'ሲ' ሲታይ ፣ የቀኝ ሞተር ወደ ፊት
  • 'ዲ' በሚታይበት ጊዜ ቀኝ ሞተር ወደ ኋላ

ሮቦትዎን እንዴት እንዳገናኙት ላይ በመመስረት ይህ ምናልባት ላይሆን ይችላል!

በኮዱ አናት ላይ የትኛውን ፒን (ማይክሮ) ላይ እንደሚወስን የሚወስኑ ተለዋዋጮችን ዝርዝር ያገኛሉ ፣ ቢት የትኛውን የሞተር አቅጣጫ ይቆጣጠራል።

አንዱን ሮቦቶቻችንን (ፋይሎቻችንን) የሚጠቀሙ ከሆነ ፣ ሮቦቱ በትክክለኛው አቅጣጫ እንዲንቀሳቀስ በዙሪያቸው ያሉትን ተለዋዋጭ ስሞች ይቀያይሩ ፦

የፒን ተለዋዋጮችን ይቀያይሩ
የፒን ተለዋዋጮችን ይቀያይሩ

የራስዎን ሮቦት የሚጠቀሙ ከሆነ ፣ ኮዱን ከማረምዎ በፊት የሞተር ነጂው የትኛውን ፒን እንደተገናኘ ያረጋግጡ።

ድራይቭን መሞከር

አሁን የሙከራ ኮዱን በዋናው ሉፕ ውስጥ በአንዳንድ የራስዎ ኮድ በመተካት ሮቦትዎ እንዴት እንደሚነዳ ያረጋግጡ።

የሮቦት () ተግባርን በመጥራት እንዲነዳ ለሮቦቱ ይነግሩታል። ይህ ሁለት ክርክሮችን ይወስዳል - ለግራ ሞተር እና ለትክክለኛ ሞተሮች እሴት ፣ በ 0 (ጠፍቷል) እና 1023 (ከፍተኛ ፍጥነት) መካከል።

ድራይቭ (500 ፣ 500) በመደወል ፣ ለምሳሌ ፣ ለሁለቱም ሞተሮች በግማሽ ፍጥነት ወደ ፊት አቅጣጫ እንዲበሩ እየነገሩ ነው።

ምን ያህል ቀጥታ እንደሚነዳ እና ምን ያህል እንደሚዞር እንዲሰማዎት ጥቂት አማራጮችን ይሞክሩ።

ፍንጭ -የሞተሩ ሙከራዎች ለሁለቱም ውስጡ ነበሩ እውነተኛ ሉፕ ፣ እና መግለጫ ከሆነ - የ A አዝራሩን በማይክሮ ቢት ላይ እስኪጫኑ ድረስ ሞተሮቹ አይዞሩም ፣ እና የ A ቁልፍን ተጭነው እንደሆነ ለዘላለም ይፈትሻል።

ፍንጭ -እስኪነግራቸው ድረስ ሞተሮቹ አይጠፉም! የመጨረሻውን መመሪያቸውን ሁልጊዜ ይቀጥላሉ።

አማራጭ - ቀጥ ባለ መስመር ውስጥ መንዳት ማሻሻል

ሮቦትዎ ቀጥታ መስመር ላይ ካልነዳ ፣ አንዱ ሞተርዎ ከሌላው በበለጠ ፍጥነት እየዞረ ሊሆን ይችላል።

መንኮራኩሩን በነፃነት እንዳይዞር የሚያግድ ምንም ነገር እንደሌለ ከተመለከቱ በኋላ ፈጣን የሞተርን ፍጥነት ለመቀነስ በአሽከርካሪው ተግባር ውስጥ ኮዱን ማረም ይችላሉ።

የመንጃውን ተግባር ፍቺ ለማግኘት ወደ ላይ ይሸብልሉ ፣ እና ከላይ ያሉትን ሁለት መመሪያዎችን ይመልከቱ-

def drive (L ፣ R) ፦

# ከዚህ በታች ለሞተር ፍጥነት ልዩነት L = int (L*1) R = int (R*1) ለማረም ማስተካከያ ነው

እነዚህ ሁለት መስመሮች በአሁኑ ጊዜ የ L እና አር ዋጋን ይይዛሉ ፣ በ 1 ያባዛሉ ፣ ከዚያ እነሱ አሁንም ሙሉ ቁጥሮች (int) መሆናቸውን ያረጋግጡ።

ለምሳሌ ፣ የግራ ሞተርዎ ፈጣን ከሆነ ፣ በመስመሩ ላይ ያለውን *1 ወደ *0.9 ይለውጡ ፣ እና ያ ነገሮችን ያሻሽል እንደሆነ ይመልከቱ።

እርስዎ ፍጹም ሊያደርጉት አይችሉም ፣ ግን ቀጥ ብሎ እስኪነዳ ድረስ ማስተካከልዎን መቀጠል ይችላሉ።

ሬዲዮን ማዋቀር

የሚከተሉትን መስመሮች በኮድዎ አናት ላይ በማከል አሁን ሬዲዮውን ያዘጋጁ።

ሬዲዮ አስመጣ

radio.config (ሰርጥ = 7 ፣ ቡድን = 0 ፣ ወረፋ = 1) radio.on ()

ይህ የእርስዎ ሮቦት ከሌላ ማይክሮ -ቢት መመሪያዎችን እንዲያገኝ ያስችለዋል ፣ ግን በአሁኑ ጊዜ ከማንኛውም ማይክሮ -ቢት መመሪያዎችን ይቀበላል።

ይህ የሆነው ሰርጥ 7 እና ቡድን 0 ነባሪ ሰርጦች ስለሆኑ ነው።

በ 0-82 እና በ 0-255 መካከል ባለው ቡድን መካከል ሰርጥን በመምረጥ እነዚህን ቁጥሮች ይለውጡ። አሁን የእርስዎ ማይክሮ -ቢት ተመሳሳይ የውቅር መረጃ ካለው ከሌሎች መመሪያዎችን ይቀበላል።

ወረፋ = 1 ማለት ማይክሮ - ቢት በአንድ ጊዜ አንድ ገቢ መልእክት ብቻ ይይዛል - ይህ ከነባሪው ይልቅ ትንሽ ፈጣን የምላሽ ጊዜን ይሰጣል ፣ ይህም 3 ነው።

አንድ ቁልፍን ሲጫኑ መመሪያዎችን ከማሄድ ይልቅ ዋናውን የ loop ኮድዎን ማርትዕ ያስፈልግዎታል ፣ የገቢ ሬዲዮ መልእክት ይጠብቁ እና ተገቢውን ምላሽ ይስጡ።

የሚከተለውን ኮድ እንደ ሙከራ ይሞክሩ (በደረጃ 2 ውስጥ ጆይስቲክን እስኪያዘጋጁ ድረስ ምንም አያደርግም)

እውነት እያለ ፦

message = radio.receive () መልዕክት == 'ወደፊት': ድራይቭ (500 ፣ 500)

ደረጃ 2-ጆይስቲክ ማዋቀር

የሮቦትዎን ማይክሮ -ቢት ይንቀሉ እና በምትኩ የጆይስቲክዎን ማይክሮ -ቢት ይሰኩ።

የ joystick set code ኮዱን ከዚህ ያግኙ

ለሮቦቱ እንዳደረጉት ተመሳሳይ ውቅር (ሰርጥ እና የቡድን ቁጥር) በመጠቀም ሬዲዮውን ያዋቅሩ - ይህ ሁለቱ እርስ በእርስ እንዲግባቡ ያስችላቸዋል።

በፕሮግራሙ መጨረሻ ላይ ዋናውን ዙርዎን ይጀምሩ-

እውነት እያለ ፦

button_a.was_pressed ከሆነ (): radio.send ('ወደፊት')

ይህ ኮድ ገና ጆይስቲክን አይጠቀምም - ቢት። መልእክት ለመላክ አዝራሩን ሀ በማይክሮ -ቢት ይጠቀማል።

የእርስዎ ሮቦት እና ተቆጣጣሪዎ ማይክሮ -ቢት ኃይል እንዳላቸው ያረጋግጡ ፣ ከዚያ መልእክትዎን ለመላክ አዝራሩን ይጫኑ።

መልእክቱ በተሳካ ሁኔታ ከተቀበለ ፣ እና ሮቦትዎ ከተንቀሳቀሰ… በደንብ ተከናውኗል! በቅንብር መመሪያዎች ተጠናቀዋል።

የመረበሽ ምክሮች

በመቆጣጠሪያ ማይክሮ ላይ የስህተት መልእክት ከደረስዎ ቢት… የመቆጣጠሪያ ኮድዎን ያርሙ

በሮቦት ማይክሮ ላይ የስህተት መልእክት ከደረሰዎት ቢት… የሬዲዮ መልእክትዎ በተሳካ ሁኔታ ተልኳል! ነገር ግን ሮቦቱ ሊረዳው አይችልም ፣ ስለዚህ የላኩት መልእክት ፣ እና ለሮቦቱ ለማዛመድ እንዲያዳምጡት የነገሩን መልእክት ያረጋግጡ።

ምንም ነገር ካልተከሰተ

  • ለእያንዳንዱ ኮድ ትክክለኛውን ኮድ ማብራትዎን ያረጋግጡ - ቢት - በስህተት የተሳሳተውን ማብራት ቀላል ነው!
  • የሰርጥዎ እና የቡድን ቁጥሮችዎ በእያንዳንዱ ማይክሮ -ቢት ላይ የሚዛመዱ መሆናቸውን ያረጋግጡ

ደረጃ 3 - የጆይስቲክ እሴቶችን መፈተሽ

የሚቀጥሉት ጥቂት እርምጃዎች ሁሉም የመቆጣጠሪያ ኮዱን እየተጠቀሙ ነው።

በመቆጣጠሪያዎ ላይ ጆይስቲክን ከመጠቀምዎ በፊት ዱላውን ሲገፉ ምን ዓይነት እሴቶች እንደሚያገኙ ማወቅ አለብዎት።

በሚከተለው ኮድ ዋናውን ዑደትዎን ይተኩ

እውነት እያለ ፦

ጆይስቲክ = joystick_push () ህትመት (ጆይስቲክ) እንቅልፍ (500)

ይህንን ኮድ ወደ ማይክሮ -ቢትዎ ያብሩት ፣ ከዚያ በሙ መሣሪያ መሣሪያ አሞሌ ላይ የ REPL ቁልፍን ጠቅ ያድርጉ። ይህ በአርታዒው ታችኛው ክፍል ውስጥ ተርሚናል ይከፍታል ፣ ይህም ወደ ማይክሮ-ቢት የእውነተኛ ጊዜ አገናኝ ይሰጥዎታል።

REPL ን ይክፈቱ
REPL ን ይክፈቱ

ማይክሮ -ቢት እስካልተሰካ ድረስ ይህ አይሰራም

በ REPL ክፍት ፣ በማይክሮ -ቢትዎ ጀርባ ላይ ያለውን ዳግም ማስጀመሪያ ቁልፍን ይጫኑ።

ምስል
ምስል

አንዳንድ እሴቶች ወደ ማያ ገጽዎ 'የታተመ' ሲያመጡ ማየት አለብዎት ፦

ተርሚናል ውስጥ እሴቶች
ተርሚናል ውስጥ እሴቶች

የጆይስቲክን ዱላ ይግፉት እና በቁጥሮች ላይ ምን እንደሚሆን ይመልከቱ።

ጆይስቲክ በማዕከላዊ ቦታ ላይ በሚሆንበት ጊዜ የተሰጡትን እሴቶች ማስታወሻ ያድርጉ - በእኔ ሁኔታ (518 ፣ 523)።

እሱን ለመዝጋት በ Mu መሣሪያ አሞሌ ላይ የ REPL ቁልፍን እንደገና ጠቅ ያድርጉ - ክፍት ሆኖ ሳለ አዲስ ኮድ ወደ ማይክሮ -ቢት ማብራት አይችሉም።

ደረጃ 4 - የ X እና Y ተለዋዋጮችን ማስተካከል

በጆይስቲክ ተግባር የተሰጡትን እሴቶች መለወጥ ይፈልጋሉ ፣ ስለዚህ ፣

  • በማዕከሉ ውስጥ ዜሮ ነው
  • መነሳት አዎንታዊ ነው
  • ታች አሉታዊ ነው።

ይህ ሮቦቱ ከሚያስፈልገው መመሪያ ጋር ይዛመዳል - ወደ ፊት ለመንዳት አዎንታዊ ቁጥር ፣ እና ወደ ኋላ ለመንዳት አሉታዊ ቁጥር።

በመጨረሻው ደረጃ ያገኙትን ቁጥሮች ይመልከቱ። የመጀመሪያው ቁጥር x ነው ፣ ሁለተኛው ቁጥር y ነው።

እሴቶችዎን ከመጀመሪያው ላይ ለመቀነስ በፕሮግራሙ ውስጥ ያለውን የ joystick_push () ትርጉም ያርትዑ

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 መመለስ x ፣ y

የእራስዎን ቁጥሮች ይጠቀሙ ፣ እነሱ ከእኔ የተለዩ ሊሆኑ ይችላሉ

አዲሱን ኮድዎን ያብሩ ፣ REPL ን ይክፈቱ ፣ የማይክሮ ቢት ዳግም ማስጀመሪያ ቁልፍን ይጫኑ እና እሴቶችዎን ይፈትሹ።

እያገኙ ነው (0 ፣ 0)?

ደረጃ 5 - X እና Y ን ወደ ግራ እና ቀኝ ሞተሮች ወደ እሴቶች መለወጥ

በአሁኑ ጊዜ ይህ ጆይስቲክ ሮቦትን ለመንዳት በጣም ጠቃሚ አይሆንም። በመንገዱ ሁሉ ወደፊት ተገፍቶ እንደ (0 ፣ 500) ያለ እሴት ያገኛሉ።

እነዚህን ቁጥሮች ለሮቦት ከሰጠዎት ፣ እንዲከሰት የሚፈልጉት ትክክለኛውን ሞተር ሳይሆን የግራውን ያበራ ነበር!

ጆይስቲክን ሲያንቀሳቅሱ ይህ x እና y እሴቶች ምን እንደሚሆኑ እና ጆይስቲክን ሲያንቀሳቅሱ ሮቦቱ እንዲያደርግ የምንፈልገውን ያሳያል።

ሥዕላዊ መግለጫ
ሥዕላዊ መግለጫ

የበለጠ ጠቃሚ ነገር ለእርስዎ ለመስጠት የ x እና y እሴቶችን ለማደባለቅ አንዳንድ ሂሳቦችን መጠቀም ያስፈልግዎታል።

n

ማትስ

ጆይስቲክን ወደፊት ሁሉ ወደፊት በመግፋት እንጀምር።

ሊያገኙት የሚችሏቸው እሴቶች ምሳሌ -

x = 0

y = 500

ለሮቦቱ ጠቃሚ ለመሆን እንደነዚህ ያሉትን እሴቶች ማግኘት ይፈልጋሉ-

ግራ = 500

ቀኝ = 500

ምን ቁጥሮች እንዳገኘን ለማየት በተለያዩ መንገዶች x እና y ን ለመጨመር እንሞክር -

x + y = 0 + 500 = 500

x - y = 0 - 500 = -500 y + x = 500 + 0 = 500 y - x = 500 - 0 = 500

አሁን ጆይስቲክን ወደ ቀኝ ብንገፋው ምን እንደሚሆን እንመልከት።

ሊያገኙት የሚችሏቸው እሴቶች ምሳሌ -

x = 500

y = 0

ሮቦቱ ወደ ቀኝ እንዲዞር ፣ የግራ ሞተር ወደ ፊት እንዲሄድ ፣ እና ትክክለኛው ሞተር ወደ ኋላ እንዲነዳ ይፈልጋሉ።

ግራ = 500

ቀኝ = -500

የእኛን ቀመር እንደገና እንሞክረው-

x + y = 500 + 0 = 500

x - y = 500 - 0 = 500 y + x = 0 + 500 = 500 y - x = 0 - 500 = -500

የትኛው አማራጭ ትክክለኛውን የግራ እሴት ይሰጥዎታል ፣ እና የትኛው አማራጭ ትክክለኛውን ትክክለኛ እሴት ይሰጥዎታል የሚለውን ለማወቅ ሁለቱን የቀመር ስብስቦች ያወዳድሩ።

የመረጡት ቀመር ሁል ጊዜ የሚሰራ መሆኑን ለማረጋገጥ ከራስዎ ጆይስቲክ በሚያገኙት አንዳንድ እሴቶች ይሞክሩ።

n

የጆይስቲክ ሥራን ማስፋፋት

ሁለት አዲስ ተለዋዋጮችን ለግራ እና ቀኝ ለማድረግ እና ከ x እና y ይልቅ እነዚያን እሴቶች ለመመለስ የጆይስቲክ ተግባሩን ያስፋፉ እና ያርትዑ

def joystick_push ():

x = pin0.read_analog () - 518 y = pin1.read_analog () - 523 ግራ = ቀኝ = ወደ ግራ ፣ ወደ ቀኝ ይመለሱ

አዲሱን ኮድዎን ያብሩ ፣ REPL ን ይክፈቱ ፣ የማይክሮ ቢት ዳግም ማስጀመሪያ ቁልፍን ይጫኑ እና እሴቶችዎን ይፈትሹ።

እርስዎ የሚጠብቋቸውን እሴቶች እያገኙ ነው?

ተጨማሪ እገዛ ከፈለጉ ፣ የእኛን ምሳሌ ኮድ እዚህ ይመልከቱ

ደረጃ 6 እሴቶቹን እንደ ሬዲዮ መልእክቶች መላክ

አሁን ወደ ሮቦትዎ ለመላክ ዝግጁ የሆኑ አንዳንድ እሴቶች አሉዎት።

የጆይስቲክ እሴቶችን እንዲፈትሽ ዋናውን ዑደትዎን ያርትዑ ፣ ግን ከዚያ እሴቶቹን ከማተም ይልቅ እንደ ሬዲዮ መልእክት ለመላክ ያዘጋጃቸዋል።

እውነት እያለ ፦

joystick = joystick_push () መልዕክት = str (ጆይስቲክ [0]) + "" + str (ጆይስቲክ [1])

ይህ በእውነቱ መልዕክቱን ገና አይልክም!

በዚህ አዲስ የኮድ መስመር ውስጥ ምን እየሆነ ነው?

  • ጆይስቲክ [0] ማለት ከጆይስቲክ ተግባር (ግራ) የሚወጣ የመጀመሪያው መረጃ
  • ጆይስቲክ [1] ቀጣዩ መረጃ ነው (ትክክል)
  • str () ሁለቱንም ቁጥሮች ወደ ሕብረቁምፊ ቅርጸት (ከቁጥሮች ይልቅ ጽሑፍ) ይለውጣል - መረጃውን በሬዲዮ ለመላክ ይህ አስፈላጊ ነው።

መደመርን ለመመልከት + ለማየት ይጠቅሙዎታል - እሱ ሁለቱንም ቁጥሮች በአንድ ላይ ማከል እና ሕብረቁምፊዎችን ማያያዝ ይችላል ፣ ይህ ማለት ሁለቱን መረጃዎች በአንድ ላይ ያጣምራል ማለት ነው።

ለምሳሌ:

150 + 100 = 250

str (150) + str (100) = 150100

ስለዚህ ማጣመር የግራ እና የቀኝ እሴቶችን አንድ ላይ ያጣምራል።

በሁለቱ መረጃዎች መካከል መለያየትን ለማስገደድ (ሮቦቱ ሁለት የመረጃ መረጃዎች መሆናቸውን እንዲያውቅ) “” ን በመጠቀም በመካከላቸው አንድ ተጨማሪ ሕብረቁምፊ ያያይዙ። የንግግሩ ምልክቶች በቦታው ዙሪያ ምልክት ማድረጉ ቀድሞውኑ ሕብረቁምፊ ነው ማለት ነው።

በመጨረሻም ይህንን አዲስ የተፈጠረ መልእክት በሬዲዮ ለመላክ ኮድዎን ያስፋፉ

ሬዲዮ. ላክ (መልእክት)

እንቅልፍ (10)

ተቀባይ ማይክሮ: ቢት በጣም ብዙ መረጃ እንዳይበዛበት እንቅልፍ መልዕክቶችን መላክን ያዘገያል!

ወደሚቀጥለው ደረጃ ከመቀጠልዎ በፊት ይህንን ኮድ ወደ ተቆጣጣሪዎ ማይክሮ -ያንሱ እና ማንኛውንም ስህተቶች ያርሙ።

ደረጃ 7 - በሮቦትዎ ላይ መልእክቶችን መቀበል

ከመጀመሪያው ወደ ሮቦት ኮድዎ ይመለሱ - በድንገት የሮቦት ኮዱን እንዳያበሩብዎት የመቆጣጠሪያዎን ማይክሮ -ቢት መንቀልዎን ያስታውሱ

ወደ ዋናው ዙርዎ ወደ ታች ይሸብልሉ - የሙከራ ኮዱን ያስወግዱ እና በምትኩ ይህንን ያክሉ

እውነት እያለ ፦

መልእክት = ሬዲዮ። ተቀበል () ህትመት (መልእክት) እንቅልፍ (100)

ይህ ከመጪው መልእክት ጋር እኩል የሆነ ተለዋዋጭ ያዘጋጃል ፣ እና መልዕክቱን ለ REPL ያትማል - መልእክቶቹ እንደተጠበቀው እየመጡ መሆኑን ለመፈተሽ።

ከ REPL ጋር የተገናኘውን አዲሱን ኮድዎን ያብሩ ፣ ከዚያ ጆይስቲክን ይግፉት።

እንደዚህ ያለ ነገር ማግኘት አለብዎት-

የ REPL እሴቶች
የ REPL እሴቶች

የመረበሽ ምክሮች

በመቆጣጠሪያ ማይክሮ ላይ የስህተት መልእክት ከደረስዎ ቢት… የመቆጣጠሪያ ኮድዎን ያርሙ

በሮቦት ማይክሮ ላይ የስህተት መልእክት ከደረሰዎት ቢት… የሬዲዮ መልእክትዎ በተሳካ ሁኔታ ተልኳል! ነገር ግን ሮቦቱ ሊረዳው አይችልም ፣ ስለዚህ የላኩት መልእክት ፣ እና ለሮቦቱ ለማዛመድ እንዲያዳምጡት የነገሩን መልእክት ያረጋግጡ።

ምንም ነገር ካልተከሰተ

  • ለእያንዳንዱ ኮድ ትክክለኛውን ኮድ ማብራትዎን ያረጋግጡ - ቢት - በስህተት የተሳሳተውን ማብራት ቀላል ነው!
  • የሰርጥዎ እና የቡድን ቁጥሮችዎ በእያንዳንዱ ማይክሮ -ቢት ላይ የሚዛመዱ መሆናቸውን ያረጋግጡ

ደረጃ 8 - የሮቦት ሞተሮችን ለመቆጣጠር መጪ መልዕክቶችን መጠቀም

አሁን ሁለት ቁጥሮች በሬዲዮ እንደ ሕብረቁምፊ እየተላኩ ነው።

ይህንን መልእክት በሁለት ሕብረቁምፊዎች መከፋፈል ያስፈልግዎታል ፣ ከዚያ ሕብረቁምፊዎቹን እንደገና ወደ ቁጥሮች ይለውጡ እና ይህንን ወደ ድራይቭ ተግባር ያስተላልፉ። ብዙ ነገሮች በአንድ ጊዜ ይከናወናሉ!

ይህንን ከማድረግዎ በፊት የተቀበሉት መልእክት በትክክለኛው ቅርጸት መሆኑን ማረጋገጥ ያስፈልግዎታል።

ምንም መልዕክቶች ካልተላኩ ፣ በምትኩ ‹የለም› ን ይቀበላሉ። ይህንን ከሞከሩ እና ከከፈሉት የስህተት መልእክት ይደርሰዎታል።

እውነት እያለ ፦

message = radio.receive () መልዕክቱ ከሌለ ምንም የለም - መልዕክት = message.split () drive (int (message [0]) ፣ int (message [1]))

እዚህ ምን እየሆነ ነው?

  • መልዕክቱ ‹የለም› ካልሆነ ሌላ አዲሱ ኮድ ይሠራል።
  • message.split () በመልዕክቱ ውስጥ ቦታን ይፈትሻል (በመጨረሻው ደረጃ ላይ ያከልነው) ፣ እና ይህንን ተጠቅሞ መልእክቱን ለሁለት ለመከፋፈል።
  • int (መልእክት [0]) ፣ int (መልእክት [1]) በቀደመው ደረጃ ከሠራነው ተቃራኒ ያደርጋል - እያንዳንዱን መረጃ በተናጠል ያገኛል እና ወደ ኢንቲጀር (ሙሉ ቁጥር) ይለውጠዋል።
  • int (መልዕክት [0]) በአሽከርካሪው ተግባር ውስጥ ለግራ ሞተር እሴት ሆኖ ያገለግላል ፣ እና int (መልእክት [1]) ለትክክለኛው ሞተር እንደ እሴት ያገለግላል።

እሱ የሚሰራ መሆኑን ያረጋግጡ - ጆይስቲክን ሲገፉ ሞተሮቹ ይዞራሉ?

ካልሆነ - ለአንዳንድ ማረም ጊዜ!

አዎ ከሆነ ፣ ድንቅ! የሚሰራ የርቀት መቆጣጠሪያ ሮቦት አለዎት!

ወደ ቀጣዩ ደረጃ ከመቀጠልዎ በፊት ከሮቦትዎ ጋር ለመለማመድ የተወሰነ ጊዜ ያሳልፉ። እርስዎ በሚጠብቁት መንገድ ያሽከረክራል?

ቀጣዩ ደረጃዎች በሮቦትዎ ላይ ተጨማሪ ተግባርን ለመጨመር በጆይስቲክ ላይ ያሉትን አዝራሮች እንዴት እንደሚጠቀሙ ያሳዩዎታል።

እስካሁን የዚህን ኮድ ስሪት ማየት ከፈለጉ -

  • ሮቦት
  • ተቆጣጣሪ:

ደረጃ 9: አዝራሮቹን መጠቀም - ተጨማሪ መልዕክቶችን መቀበል

በአሁኑ ጊዜ ኮድዎ ምንም ያልሆነ ማንኛውንም መልእክት ለመከፋፈል ይሞክራል። ይህ ማለት ለምሳሌ ‹ሰላም› ከተቀበለ የስህተት መልእክት ይደርሰዎታል ማለት ነው።

ማይክሮ -ቢትዎ ሌሎች መልዕክቶችን እንዲተረጉሙ ለመፍቀድ እያንዳንዱ የሚጠበቀውን መልእክት መጀመሪያ መፈተሽ አለበት ፣ ከዚያ ከእሱ ጋር ሌላ ማንኛውንም ነገር እንዲያደርግ ካልተነገረው ብቻ መልእክቱን መከፋፈል አለበት።

እንደዚህ ያለ ኮድዎን ያስፋፉ

መልዕክቱ ምንም ካልሆነ

መልእክት == 'ሰላም': ማሳያ.show (Image. HAPPY) elif message == 'ዳክዬ': display.show (Image. DUCK) ሌላ መልዕክት - message = message.split () drive (int (message [0]) ፣ int (መልእክት [1]))

በመጀመሪያ ፣ ‹ሰላም› የሚል መልእክት ደርሶ እንደሆነ ይፈትሻል። ካለው ፣ ደስተኛ ምስልን ያሳያል ፣ ከዚያ ወደ ቀለበቱ አናት ይመለሱ እና የሚቀጥለውን መልእክት ይፈትሹ።

መልእክቱ ሰላም ካልሆነ ፣ መልእክቱ ‹ዳክዬ› ከሆነ ቀጥሎ ይፈትሻል።

መልዕክቱ ወይ ‹ሰላም› ወይም ‹ዳክዬ› ካልሆነ ፣ በዝርዝሩ ላይ የመጨረሻውን ነገር ያደርጋል ፣ ይህም መልእክቱን ተከፋፍሎ ሞተሮችን ያበራል። ‹ሰላም› ወይም ‹ዳክዬ› ከተቀበለ መልዕክቱን ለመከፋፈል አይሞክርም ፣ ይህ ማለት ከሁለቱ መልእክቶች ከሁለቱም የስህተት መልእክት አያገኙም ማለት ነው።

ድርብ እኩል ምልክት አስፈላጊ ነው - አንድ ነገር እያዋቀረ ካለው አንድ እኩል ምልክት ጋር ሲነፃፀር ‹እኩል› ማለት ነው (ስለዚህ መልእክት = ‹ሠላም› ማለት ተለዋዋጭውን ወደ ‹ሠላም› ፣ መልእክት == ‹ሠላም› እያቀናበርን ነው ማለት ነው መልዕክቱ ከ ‹ሰላም› ጋር እኩል ነው ብለን እንጠይቃለን ማለት ነው)።

እሱን ለመፈተሽ ለአሁኑ በሁለት አማራጮች ብቻ ይሞክሩት - በኋላ የፈለጉትን ያህል ብዙ መልዕክቶችን ማከል ይችላሉ።

ወደ የሥራ ኮድ አገናኝ

ደረጃ 10 የመቆጣጠሪያውን አዝራሮች በመጠቀም ተጨማሪ መልዕክቶችን መላክ

የሮቦትዎን ማይክሮ -ቢት ይንቀሉ እና በምትኩ የጆይስቲክዎን ማይክሮ -ቢት ይሰኩ።

ለማርትዕ ወደ ተቆጣጣሪ ኮድዎ ይመለሱ።

ከሮቦት ኮድ ጋር ተመሳሳይ ፣ እኛ ጆይስቲክ እሴቶችን ከመላክዎ በፊት ማንኛውንም ሌላ መልእክት ለመላክ እየሞከሩ እንደሆነ ተቆጣጣሪው እንዲፈትሽ እንፈልጋለን።

በሉፉ አናት ላይ ፣ አሁንም የጆይስቲክን የአሁኑ እሴቶችን እንዲፈትሽ እንፈልጋለን ፣ ነገር ግን አንድ አዝራር በአሁኑ ጊዜ ተጭኖ እንደሆነ እንዲፈትሽ እንፈልጋለን-

እውነት እያለ ፦

joystick = joystick_push () አዝራር = button_press ()

button_press () በአሁኑ ጊዜ በየትኛው አዝራር ላይ እንደተጫነ የሚወሰን እሴት A ፣ B ፣ C ፣ D ፣ E ወይም F ይመልሳል (ምንም ካልተጫነ ምንም አይመለስም)።

አሁን እኛ ለሮቦት ኮድ እንዳደረግነው ከሆነ እኛ- elif- ሌላ መግለጫ መስጠት እንችላለን-ሁለት አዝራሮችን በመጠቀም እና ምንም ቁልፍ ካልተጫነ የጆይስቲክ እሴቱን መላክ።

አዝራር ከሆነ == 'ሀ':

radio.send ('hello') እንቅልፍ (500) elif button == 'B': radio.send ('ዳክዬ') እንቅልፍ (500) ሌላ መልዕክት = str (ጆይስቲክ [0]) + "" + str (ጆይስቲክ) [1]) ሬዲዮ። መላኪያ (መልእክት) እንቅልፍ (10)

አንድ አዝራር ሲጫን በቀድሞው ደረጃ እንዲጠብቀው ለሮቦቱ ከነገሯቸው መልዕክቶች ውስጥ አንዱን ይላኩ።

አዝራሩ በተጫነ ቁጥር መልእክቱ ይላካል ፣ እና ኮምፒተሮች ከሰዎች በጣም ፈጣን ናቸው! ስለዚህ ጣትዎን ከአዝራሩ ላይ ከማውጣትዎ በፊት መልእክቱን ብዙ ጊዜ ሊልክ ይችላል።

መልእክቱን ከላከ በኋላ ያለው እንቅልፍ ያዘገየዋል ፣ ስለዚህ ቁልፉን እንደገና በፍጥነት እንዳይፈትሽ - ትክክለኛውን ጊዜ ለማግኘት እዚህ ጥቂት ቁጥሮችን ይሞክሩ - በጣም በዝግታ እና ምላሽ አይሰጥም ፣ በፍጥነት እና ሮቦትዎ ለጆይስቲክ ምላሽ መስጠቱን ሊያቆም ስለሚችል ብዙ የአዝራር መልዕክቶችን ይቀበላል!

ይሠራል?

የስህተት መልዕክቶች እየደረሱዎት ከሆነ ፣ አሁን ስለቀየሩት ፣ እና ምን እየሆነ እንዳለ በጥንቃቄ ያስቡ።

በመቆጣጠሪያዎ ላይ አንድ ቁልፍ ሲጫኑ በሮቦት ላይ ስህተት ካጋጠመዎት - መልእክቱ እየደረሰ መሆኑን ያውቃሉ ፣ ግን ሮቦቱን ግራ የሚያጋባ ነው። የላኩት መልእክት ፣ እና ለሮቦቱ እንዲፈልጉ የነገሩት መልእክት ተመሳሳይ መሆኑን ያረጋግጡ።

ወደ የሥራ ኮድ አገናኝ

ደረጃ 11: ቀጣይ እርምጃዎች

አሁን ከሮቦት ሞተሮችዎ ፣ እና ከእርስዎ ጆይስቲክ - ቢት መቆጣጠሪያ ጋር ለመስራት የሚያስፈልጉዎት እውቀት አለዎት።

ሁለቱን ፕሮግራሞች ለማሻሻል እና የራስዎ ለማድረግ ይህንን እውቀት ይጠቀሙ። አንዳንድ ሀሳቦች ከዚህ በታች!

በመቆጣጠሪያዎ ላይ ስድስት አዝራሮች አሉዎት! ምን እንዲያደርጉ ትፈልጋለህ?

  • ሮቦትዎ በትእዛዝ ላይ እንዲያደርግ የዳንስ ልምድን ስለማዘጋጀትስ? በእንቅልፍ () ትዕዛዞች ተለያይተው የ Drive () ትዕዛዞችን ስልተ ቀመር ይፃፉ!
  • ሮቦቱ በቀላሉ ተገልብጦ ማሽከርከር እንዲችል የሚንቀሳቀስበትን አቅጣጫ መለወጥ ይፈልጋሉ? ስለ ጆይስቲክዎ የ x እና y እሴቶችን ያስቡ። እነሱ ምንን ይወክላሉ እና እንዴት እነሱን ሊያዛብሯቸው ይችላሉ?
  • የእርስዎ ሮቦት (ወይም ማከል ይችላሉ!) እንደ ኤልኢዲዎች ፣ ድምጽ ማጉያ ወይም ዳሳሾች ያሉ ተጨማሪ ባህሪዎች አሉት?

ኮዱን ለማሻሻል ሀሳቦች

  • ሙከራ/ኮድ ካልሆነ በስተቀር ሮቦትዎ ያልታወቁ መልዕክቶችን እንዲቋቋም መርዳት ይችላሉ?
  • የግራ እና የቀኝ እሴቶችን ከጆይስቲክ ለማስላት ያገለገሉት ሂሳቦች ሙሉውን የእሴቶች ክልል አይሰጡንም (የሮቦት ድራይቭ እስከ 1023 የሚደርስ ቁጥርን ሊቀበል ይችላል)። የተሻለ ክልል ለማግኘት ይህንን ኮድ ማርትዕ ይችላሉ?
  • የጆይስቲክ እሴቶችን የማደባለቅ ሌሎች ዘዴዎች አሉ - ይህን ለማድረግ የተሻለ መንገድ ይዘው መምጣት ይችላሉ?

የሚመከር: