ኮድ ይፈልጉ

ኮርስ ትምህርት 2 ከ10፡ Raspberry Pi Pico 4WD Smart Car Kitን ለማሽከርከር መሰረታዊ Python

ይህ ትምህርት ከ: Raspberry Pi Pico 4WD ስማርት መኪና

ኮርስ ትምህርት 2 ከ10፡ Raspberry Pi Pico 4WD Smart Car Kitን ለማሽከርከር መሰረታዊ Python

በዚህ የሮቦጃክስ ራስፍሪ ፒኮ 4WD ስማርት መኪና ኮርስ ሁለተኛ ትምህርት ውስጥ፣ ሮቦትዎን ለመቆጣጠር የሚያስችሉዎትን መሰረታዊ የፓይዘን ፕሮግራሚንግ ፅንሰ-ሀሳቦችን እንመረምራለን። ይህ መመሪያ ከዜሮ የኮዲንግ ልምድ ጀምሮ ሃርድዌርን የሚቆጣጠሩ ስክሪፕቶችን በልበ ሙሉነት እስከመጻፍ ድረስ ሊወስድዎት የተነደፈ ነው። ሲንታክስን ከማስታወስ ይልቅ፣ ከእያንዳንዱ ፅንሰ-ሀሳብ በስተጀርባ ያለውን «ለምን» እንመረምራለን፣ ይህም የራስዎን ፕሮጀክቶች ለመገንባት እና ለማበጀት መሳሪያዎችን ይሰጥዎታል። በዚህ ትምህርት መጨረሻ፣ ተለዋዋጮችን፣ የቁጥጥር ፍሰትን፣ ተግባራትን እና ዝርዝሮችን—ለሁሉም የወደፊት ፕሮጀክቶች መሰረታዊ ነገሮችን በደንብ ይረዱታል።

ይህ እውቀት ለስማርት መኪና ብቻ አይደለም። እዚህ የሚማሩት መርሆዎች በብዙ የእውነተኛ አለም አፕሊኬሽኖች ውስጥ ጥቅም ላይ የሚውሉት ተመሳሳይ ናቸው። እነዚህን ክህሎቶች መተግበር ይችላሉ፡-

  • በሴንሰር መረጃ ላይ በመመስረት አድናቂዎችን፣ ፓምፖችን እና መብራቶችን ለመቆጣጠር የቤት ግሪንሀውስን በራስ-ሰር ማድረግ።
  • ማንቂያዎችን የሚቀሰቅስ ወይም ማሳወቂያዎችን የሚልክ ብጁ የደህንነት ስርዓት መገንባት።
  • ለአካባቢው ምላሽ የሚሰጡ በይነተገናኝ የስነ-ጥበብ ጭነቶችን መፍጠር።
  • ከቅድመ-ፕሮግራም ከተዘጋጁት ባህሪዎች ባሻገር የራስዎን ብጁ የሮቦት ባህሪዎች ማዳበር።

ሃርድዌር/ክፍሎች

በዚህ ትምህርት ውስጥ የሃርድዌር ምሳሌዎችን ለመከተል፣ የሚከተሉትን ክፍሎች ያስፈልግዎታል። እነዚህ ሁሉ የSunFounder Raspberry Pi Pico 4WD ስማርት መኪና ኪት አካል ናቸው፣ ነገር ግን ለገለልተኛ ሙከራዎች በተናጠል ሊገዙ ይችላሉ።

  • ራስፍሪ ፒኮ፡- የፕሮጀክቱ ማይክሮኮንትሮለር አንጎል።
  • ኤልኢዲ፡- የዲጂታል ውፅዓት ቁጥጥርን ለማሳየት ያገለግላል።
  • ሬዚስተር (150Ω - 330Ω)፡- ጅረትን ለመገደብ እና ኤልኢዲውን ለመጠበቅ።
  • ጃምፐር ሽቦዎች፡- በብሬድቦርድ ላይ ግንኙነቶችን ለመፍጠር።
  • ብሬድቦርድ፡- ወረዳዎን ለመስራት (ፕሮቶታይፕ)።

የሽቦ አገናኝ መመሪያ

በዚህ ትምህርት ውስጥ ለሃርድዌር ማሳያ፣ ኤልኢዲን በራስፍሪ ፒኮ ለመቆጣጠር ቀላል ወረዳ እንገነባለን። ሽቦው ቀጥተኛ እና በአካላዊ ኮምፒውቲንግ ውስጥ የመጀመሪያ እርምጃ ነው። ቁልፉ ኤልኢዲው እንዳይቃጠል ለመከላከል የጅረት-ገዳቢ ሬዚስተር መጠቀም ነው። ሬዚስተሩ ከኤልኢዲው ጋር በተከታታይ ተገናኝቷል። የኤልኢዲው ረጅም እግር (አኖድ) አወንታዊ ግንኙነት ሲሆን፣ አጭሩ እግር (ካቶድ) አሉታዊ ግንኙነት ነው።

በቪዲዮው ውስጥ፣ አስተማሪው ከመሬት (ግራውንድ) ፒን እና ከኤልኢዲው አጭር እግር ጋር የተገናኘ ሬዚስተር ይጠቀማል። ረጅሙ እግር ከGPIO ፒን 22 ጋር ተገናኝቷል። ይህ ዝግጅት ፒኮው ኤልኢዲውን ለማብራት ከፍተኛ (3.3V) ሲግናል እና ለማጥፋት ዝቅተኛ (0V) ሲግናል እንዲልክ ያስችላል።

ማስታወሻ፡- የሽቦ አገናኝ ስዕላዊ መግለጫ በቪዲዮው ውስጥ ይታያል። ለትክክለኛ አቀማመጥ እባክዎ የእይታ መመሪያውን ይመልከቱ።

የኮድ ማብራሪያ

ይህ ትምህርት ሮቦትዎን ለመቆጣጠር አስፈላጊ በሆኑ ዋና የፓይዘን ሲንታክስ እና አመክንዮ ላይ ያተኩራል። በቪዲዮው ውስጥ የተካተቱትን ቁልፍ ፅንሰ-ሀሳቦች እንከፋፍላቸው። የኮድ ምሳሌዎቹ የተጻፉት በማይክሮፓይዘን ነው፣ እሱም እንደ ራስፍሪ ፒኮ ባሉ ማይክሮኮንትሮለሮች ላይ ለመስራት የተነደፈ የፓይዘን ስሪት ነው።

ተለዋዋጮች እና የዳታ አይነቶች

ተለዋዋጮች መረጃ የሚያከማቹባቸው መለያ ያላቸው ሳጥኖች ናቸው። በፓይዘን ውስጥ፣ የተለዋዋጭን አይነት መግለጽ አያስፈልግዎትም፤ እሱ ከሚመድቡት እሴት ይገመታል። (በቪዲዮ 03:33)


age = 23  # ይህ ኢንቲጀር ነው
name = "Ahmad"  # ይህ ስትሪንግ (ጽሑፍ) ነው
pi = 3.14  # ይህ ፍሎት (አስርዮሽ) ነው

እነዚህን ተለዋዋጮች በስሌቶች ውስጥ መጠቀም እና እሴቶቻቸውን ማተም ይችላሉ። ለምሳሌ፣ በተሰጠ ዕድሜ ውስጥ ያሉትን የቀናት ብዛት ለማስላት፣ days = age * 365 መጠቀም ይችላሉ። የprint() ተግባር ውፅዓትን በኮንሶል ላይ ለማሳየት ያገለግላል።

ሁኔታዊ መግለጫዎች (If/Else)

ሁኔታዊ መግለጫዎች ኮድዎ ውሳኔዎችን እንዲያደርግ ያስችላሉ። ይህ ሮቦት ለአካባቢው ምላሽ እንዲሰጥ፣ ለምሳሌ እንቅፋት ሲያገኝ እንዲቆም ወሳኝ ነው። (በቪዲዮ 07:39)


age = 16
if age >= 17:
    print("መኪና መንዳት ይችላሉ")
else:
    print("ለመንዳት በጣም ወጣት ነዎት")

if መግለጫ ሁኔታን ይፈትሻል። ሁኔታው እውነት ከሆነ፣ ከሱ በታች ያለው የተገታ የኮድ ብሎክ ይሰራል። ሐሰት ከሆነ፣ በelse መግለጫ ስር ያለው ኮድ ይሰራል። መገታት (በመስመሩ መጀመሪያ ላይ ያሉ ክፍተቶች) በፓይዘን ውስጥ ወሳኝ ነው፤ የትኛው ኮድ የየትኛው ብሎክ እንደሆነ ይገልጻል።

ሉፖች (For እና While)

ሉፖች የኮድ ብሎክን ለመድገም ያገለግላሉ። ይህ እንደ ሴንሰር እሴቶችን መቃኘት ወይም ሞተርን በተከታታይ እርምጃዎች ማንቀሳቀስ ላሉ ተግባራት ተስማሚ ነው። (በቪዲዮ 09:04)

For ሉፕ፡- ይህ ሉፕ የተወሰነ ጊዜ ይደግማል።


for x in range(5):  # x 0, 1, 2, 3, 4 ይሆናል
    print(x)

While ሉፕ፡- ይህ ሉፕ ሁኔታው እውነት እስከሆነ ድረስ ይቀጥላል። ይህ የተወሰነ ክስተት እስኪከሰት ድረስ ለዘላለም የሚሰራ ዋና የፕሮግራም ሉፕ ለመፍጠር ጠቃሚ ነው። (በቪዲዮ 12:13)


x = 9
while x > 5:
    print("የ x እሴት፡-", x)
    x = x - 1  # xን መቀነስ
print("ሉፑ አለቀ")

while True: ሉፖች ጋር ይጠንቀቁ። ሉፑን ለመውጣት የbreak መግለጫ ካልተጠቀሙ ወይም ፕሮግራሙን ካላቆሙ በስተቀር ለዘላለም ይሰራሉ።

ተግባራት

ተግባራት የተወሰነ ተግባር የሚያከናውኑ እንደገና ጥቅም ላይ ሊውሉ የሚችሉ የኮድ ብሎኮች ናቸው። ኮድዎን የተደራጀ ለማድረግ እና መደጋገምን ለመከላከል ይረዳሉ። (በቪዲዮ 14:52)


def calculate_days(years):
    days = years * 365
    return days

# አሁን ይህን ተግባር ብዙ ጊዜ መጠቀም እንችላለን
days_in_10_years = calculate_days(10)
print("በ10 ዓመታት ውስጥ ያሉ ቀናት፡-", days_in_10_years)

እዚህ ላይ፣ calculate_days አንድ ነጋሪ እሴት (years) የሚወስድ እና እሴት የሚመልስ ተግባር ነው። ይህ ተመሳሳይ ስሌት ደጋግሞ ከመጻፍ የበለጠ ቀልጣፋ ነው። ቪዲዮው እንዲሁም አንድ ተግባር ሌላውን እንዴት መጥራት እንደሚችል ያሳያል፣ ይህም ውስብስብ ስራዎችን ከቀላል እና ሊሞከሩ ከሚችሉ ክፍሎች እንዲገነቡ ያስችልዎታል።

ዝርዝሮች (Lists)

ዝርዝሮች የታዘዙ የእቃዎች ስብስብ ለማከማቸት ያገለግላሉ። ይህ ለሮቦትዎ እንደ "ወደፊት"፣ "ወደ ኋላ"፣ "ግራ" እና "ቀኝ" ያሉ ተከታታይ ትዕዛዞችን ለማከማቸት ፍጹም ነው። (በቪዲዮ 19:15 ላይ)


move = ["forward", "back", "left", "right", "stop"]
print(len(move))  # በዝርዝሩ ውስጥ ያሉትን የእቃዎች ብዛት ያትማል (5)
print(move[0]) # የመጀመሪያውን እቃ፣ "forward" ያትማል

# እቃዎችን መጨመር ይችላሉ
move.append("cliff")
# እቃዎችን ማስወገድ ይችላሉ
move.pop()  # "cliff"ን ያስወግዳል
# እቃዎችን መቀየር ይችላሉ
move[2] = "fly"  # ሶስተኛውን እቃ ወደ "fly" ይቀይረዋል

ዝርዝሮች ከዜሮ የሚቆጠሩ ናቸው፣ ማለትም የመጀመሪያው እቃ በመረጃ ጠቋሚ 0 ላይ ነው። የlen() ተግባር የዝርዝሩን ርዝመት ይሰጥዎታል፣ እና ሁሉንም እቃዎች ለማለፍ የfor loop መጠቀም ይችላሉ። የenumerate() ተግባርም ቀርቧል፣ ይህም በloop ወቅት ሁለቱንም መረጃ ጠቋሚ እና እሴት ይሰጥዎታል፣ ይህም ከበርካታ ፒኖች ወይም ዳሳሾች ጋር ለመስራት ጠቃሚ ነው።

ከፒኖች እና ጊዜ ጋር መስራት

ይህ የPython አመክንዮን ከአካላዊው ዓለም ጋር የሚያገናኙበት ቦታ ነው። የPicoን GPIO ፒኖች ለመቆጣጠር የmachine ቤተ-መጻሕፍትን ይጠቀማሉ። (በቪዲዮ 25:16 ላይ)


from machine import Pin
import time

# ፒን 22ን እንደ ውጤት ያዋቅሩ
led = Pin(22, Pin.OUT)

# LEDውን ያብሩ እና ያጥፉ
led.on()
time.sleep(1)
led.off()
time.sleep(1)

እንዲሁም ፒንን በPin(2, Pin.IN) እንደ ግብዓት በማዋቀር ከእሱ ማንበብ ይችላሉ። የtime ቤተ-መጻሕፍት መዘግየቶችን ለመጨመር (time.sleep()) እና ያለፈውን ጊዜ በtime.ticks_ms() ለመለካት ወይም በtime.localtime() እና time.mktime() በጊዜ ቅርጸቶች መካከል ለመቀየር አስፈላጊ ነው። ይህ የሞተርን ፍጥነት ለመቆጣጠር እንደ pulse-width modulation (PWM) ምልክት ለመፍጠር ባሉ በጊዜ ላይ የተመሰረቱ አመክንዮዎች ወሳኝ ነው።

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

በቪዲዮው ውስጥ፣ አስተማሪው የእነዚህን ፅንሰ-ሀሳቦች የቀጥታ ማሳያ ይሰጣል። በPython አስተርጓሚ ውስጥ ቀላል የprint() መግለጫዎችን እና ተለዋዋጭ ምደባዎችን በማሳየት ይጀምራል። ከዚያም የif መግለጫዎች በተለዋዋጭ እሴት ላይ በመመስረት የፕሮግራሙን ፍሰት እንዴት እንደሚቀይሩ በእይታ በማሳየት ወደ ውስብስብ ምሳሌዎች ይሸጋገራል።

አስተማሪው ከዚያም LEDን ከRaspberry Pi Pico ጋር በማገናኘት ተግባራዊ የሃርድዌር ምሳሌ ያሳያል። LEDውን በአንድ ሰከንድ መዘግየት የሚያበራ እና የሚያጠፋ ቀላል የMicroPython ስክሪፕት ይጽፋል፣ ይህም አካላዊ ውጤትን በኮድ የመቆጣጠርን ቀጥተኛ ውጤት ያሳያል። ይህ ተግባራዊ ምሳሌ በፕሮግራም አመክንዮ እና በእውነተኛ ዓለም ተግባር መካከል ያለውን ግንኙነት ያጠናክራል። ትምህርቱ የሚያጠናቅቀው በርካታ ፒኖችን ለማስተዳደር enumerateን እንዴት መጠቀም እንደሚቻል እና ለበለጠ የላቀ የጊዜ እና የመርሃግብር ስራዎች የtime ሞጁሉን እንዴት መጠቀም እንደሚቻል በማሳየት ነው።

ምዕራፎች

  • [00:00] የRaspberry Pi Pico Smart Car ኮርስ መግቢያ
  • [01:31] የኮርሱ አጠቃላይ እይታ እና የኪት አቅሞች
  • [03:33] በPython ውስጥ ተለዋዋጮች እና የውሂብ አይነቶች
  • [07:39] ሁኔታዊ መግለጫዎች (If/Else)
  • [09:04] የFor Loops መረዳት
  • [12:13] የWhile Loops መመርመር
  • [14:52] ተግባራትን መግለፅ እና መጠቀም
  • [19:15] ከዝርዝሮች እና የውሂብ አወቃቀሮች ጋር መስራት
  • [25:16] GPIO ፒኖችን በMicroPython መቆጣጠር
  • [29:54] ተግባራዊ ምሳሌ፡ LEDን ማብረቅ
  • [31:15] የላቀ የፒን ቁጥጥር በEnumerate
  • [31:24] ከጊዜ ተግባራት ጋር መስራት
አንድ ኮድ የተያያዘ የለም።

ምንጮች እና ምንጮች

አሁን ምንም ምንጮች የለም።

ፋይሎች📁

አንድ ፋይል የለም።