Search Code

Kurz Lekcia 2 z 10: Základný Python na ovládanie 4WD Smart Car Kitu s Raspberry Pi Pico

This lesson is part of: Raspberry Pi Pico 4WD Smart Car

Kurz Lekcia 2 z 10: Základný Python na ovládanie 4WD Smart Car Kitu s Raspberry Pi Pico

V tejto druhej lekcii kurzu Robojax Raspberry Pi Pico 4WD Smart Car sa ponoríme do základných konceptov programovacieho jazyka Python, ktoré vám umožnia ovládať vášho robota. Táto príručka je navrhnutá tak, aby vás posunula od nulových skúseností s kódovaním k sebavedomému písaniu skriptov, ktoré ovládajú hardvér. Namiesto memorovania syntaxe preskúmame „prečo" za každým konceptom, čo vám dá nástroje na vytváranie a prispôsobovanie vlastných projektov. Na konci tejto lekcie budete mať solídne pochopenie premenných, riadenia toku, funkcií a zoznamov – základných stavebných blokov pre všetky budúce projekty.

Tieto vedomosti nie sú len pre smart auto. Princípy, ktoré sa tu naučíte, sú rovnaké ako tie, ktoré sa používajú v nespočetných aplikáciách v reálnom svete. Tieto zručnosti môžete aplikovať na:

  • Automatizáciu domáceho skleníka na ovládanie ventilátorov, čerpadiel a svetiel na základe údajov zo senzorov.
  • Vytvorenie vlastného bezpečnostného systému, ktorý spúšťa alarmy alebo posiela upozornenia.
  • Vytváranie interaktívnych umeleckých inštalácií, ktoré reagujú na prostredie.
  • Vyvíjanie vlastných robotických správaní nad rámec predprogramovaných.

Hardvér/Komponenty

Na sledovanie hardvérových príkladov v tejto lekcii budete potrebovať nasledujúce komponenty. Všetky sú súčasťou súpravy SunFounder Raspberry Pi Pico 4WD Smart Car Kit, ale dajú sa kúpiť jednotlivo pre samostatné experimenty.

  • Raspberry Pi Pico: Mikrokontrolér – mozog projektu.
  • LED dióda: Používa sa na demonštráciu digitálneho výstupného ovládania.
  • Rezistor (150Ω – 330Ω): Na obmedzenie prúdu a ochranu LED diódy.
  • Prepojovacie vodiče: Na vytváranie spojení na breadboarde.
  • Breadboard: Na prototypovanie vášho obvodu.

Sprievodca zapojením

Pre hardvérovú demonštráciu v tejto lekcii postavíme jednoduchý obvod na ovládanie LED diódy pomocou Raspberry Pi Pico. Zapojenie je jednoduché a je klasickým prvým krokom vo fyzickej výpočtovej technike. Kľúčové je použiť rezistor obmedzujúci prúd, aby sa LED dióda nespálila. Rezistor je zapojený sériovo s LED diódou. Dlhá nožička LED diódy (anóda) je pozitívne pripojenie a krátka nožička (katóda) je negatívne pripojenie.

Vo videu inštruktor používa rezistor pripojený k uzemňovaciemu pinu a krátkej nožičke LED diódy. Dlhá nožička je pripojená na GPIO pin 22. Toto nastavenie umožňuje Pico poslať vysoký signál (3,3 V) na pin, aby sa LED dióda zapla, a nízky signál (0 V), aby sa vypla.

Poznámka: Schéma zapojenia je zobrazená vo videu. Presné umiestnenie nájdete vo vizuálnom sprievodcovi.

Vysvetlenie kódu

Táto lekcia sa zameriava na základnú syntax a logiku Pythonu, ktorá je nevyhnutná na ovládanie vášho robota. Poďme si rozobrať kľúčové koncepty z videa. Príklady kódu sú napísané v MicroPythone, verzii Pythonu navrhnutej na spustenie na mikrokontroléroch, ako je Raspberry Pi Pico.

Premenné a dátové typy

Premenné sú ako označené škatule, do ktorých ukladáte informácie. V Pythone nemusíte deklarovať typ premennej; je odvodený z hodnoty, ktorú priradíte. (vo videu o 03:33)


age = 23  # Toto je celé číslo
name = "Ahmad"  # Toto je reťazec (text)
pi = 3.14  # Toto je desatinné číslo

Tieto premenné môžete použiť vo výpočtoch a vypísať ich hodnoty. Napríklad na výpočet počtu dní pre daný vek by ste mohli použiť days = age * 365. Funkcia print() sa používa na zobrazenie výstupu do konzoly.

Podmienené príkazy (If/Else)

Podmienené príkazy umožňujú vášmu kódu robiť rozhodnutia. To je kľúčové, aby robot reagoval na svoje prostredie, napríklad zastavil, keď zistí prekážku. (vo videu o 07:39)


age = 16
if age >= 17:
    print("Môžeš šoférovať")
else:
    print("Príliš mladý na šoférovanie")

Príkaz if kontroluje podmienku. Ak je podmienka True, vykoná sa odsadený blok kódu pod ňou. Ak je False, vykoná sa kód pod príkazom else. Odsadenie (medzery na začiatku riadka) je v Pythone kritické; definuje, ktorý kód patrí do ktorého bloku.

Cykly (For a While)

Cykly sa používajú na opakovanie bloku kódu. To je ideálne pre úlohy, ako je skenovanie hodnôt senzorov alebo pohyb motora cez sekvenciu krokov. (vo videu o 09:04)

Cykel For: Tento cyklus iteruje konkrétny počet krát.


for x in range(5):  # x bude 0, 1, 2, 3, 4
    print(x)

Cykel While: Tento cyklus pokračuje, pokiaľ je podmienka pravdivá. To je užitočné na vytvorenie hlavného programového cyklu, ktorý beží donekonečna, kým nenastane konkrétna udalosť. (vo videu o 12:13)


x = 9
while x > 5:
    print("Hodnota x je:", x)
    x = x - 1  # Zníženie x
print("Cykel skončil")

Buďte opatrní s cyklami while True:. Budú bežať donekonečna, pokiaľ nepoužijete príkaz break na ukončenie cyklu alebo nezastavíte program.

Funkcie

Funkcie sú opätovne použiteľné bloky kódu, ktoré vykonávajú konkrétnu úlohu. Pomáhajú udržiavať váš kód organizovaný a zabraňujú opakovaniu. (vo videu o 14:52)


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

# Teraz môžeme túto funkciu použiť viackrát
days_in_10_years = calculate_days(10)
print("Dní za 10 rokov:", days_in_10_years)

Tu, calculate_days je funkcia, ktorá prijíma argument (years) a vracia hodnotu. Toto je efektívnejšie ako písať rovnaký výpočet znova a znova. Video tiež ukazuje, ako môže jedna funkcia volať druhú, čo vám umožňuje vytvárať zložité operácie z jednoduchých, testovateľných častí.

Zoznamy

Zoznamy sa používajú na ukladanie usporiadanej kolekcie položiek. To je ideálne na ukladanie sekvencie príkazov pre vášho robota, ako napríklad „dopredu", „dozadu", „vľavo" a „vpravo". (vo videu o 19:15)


move = ["dopredu", "dozadu", "vľavo", "vpravo", "stop"]
print(len(move))  # Vytlačí počet položiek v zozname (5)
print(move[0]) # Vytlačí prvú položku, "dopredu"

# Môžete pridať položky
move.append("útes")
# Môžete odstrániť položky
move.pop()  # Odstráni "útes"
# Môžete zmeniť položky
move[2] = "letieť"  # Zmení tretiu položku na "letieť"

Zoznamy sú indexované od nuly, čo znamená, že prvá položka je na indexe 0. Funkcia len() vám dá dĺžku zoznamu a môžete použiť cyklus for na prechod cez všetky položky. Funkcia enumerate() je tiež predstavená, ktorá vám počas cyklu dá index aj hodnotu, čo je užitočné pri práci s viacerými pinmi alebo senzormi.

Práca s pinmi a časom

Toto je miesto, kde pripájate logiku Pythonu k fyzickému svetu. Používate knižnicu machine na ovládanie GPIO pinov Pico. (vo videu o 25:16)


from machine import Pin
import time

# Nastavenie pinu 22 ako výstup
led = Pin(22, Pin.OUT)

# Zapnutie a vypnutie LED
led.on()
time.sleep(1)
led.off()
time.sleep(1)

Môžete tiež čítať z pinu nastavením ako vstup pomocou Pin(2, Pin.IN). Knižnica time je nevyhnutná na pridávanie oneskorení (time.sleep()) a na meranie uplynutého času pomocou time.ticks_ms() alebo na prevod medzi časovými formátmi pomocou time.localtime() a time.mktime(). To je kľúčové pre logiku založenú na čase, ako je vytváranie signálu pulznej šírkovej modulácie (PWM) na ovládanie rýchlosti motora.

Živý projekt/demonštrácia

Vo videu inštruktor poskytuje živú demonštráciu týchto konceptov. Začína ukážkou jednoduchých príkazov print() a priradení premenných v interpretery Pythonu. Potom prechádza na zložitejšie príklady, vizuálne ukazujúc, ako príkazy if menia tok programu na základe hodnoty premennej.

Inštruktor potom demonštruje praktický hardvérový príklad pripojením LED k Raspberry Pi Pico. Napíše jednoduchý skript v MicroPythone, ktorý zapína a vypína LED s jednosekundovým oneskorením, čo ukazuje priamy výsledok ovládania fyzického výstupu kódom. Tento praktický príklad upevňuje spojenie medzi programovacou logikou a akciou v reálnom svete. Lekcia sa končí ukážkou, ako použiť enumerate na správu viacerých pinov a ako použiť modul time na pokročilejšie časovacie a plánovacie operácie.

Kapitoly

  • [00:00] Úvod do kurzu Raspberry Pi Pico Smart Car
  • [01:31] Prehľad kurzu a možnosti súpravy
  • [03:33] Premenné a dátové typy v Pythone
  • [07:39] Podmienené príkazy (If/Else)
  • [09:04] Pochopenie cyklov For
  • [12:13] Skúmanie cyklov While
  • [14:52] Definovanie a používanie funkcií
  • [19:15] Práca so zoznamami a dátovými štruktúrami
  • [25:16] Ovládanie GPIO pinov s MicroPythonom
  • [29:54] Praktický príklad: Blikanie LED
  • [31:15] Pokročilé ovládanie pinov s Enumerate
  • [31:24] Práca s časovými funkciami
No code attached.

Resources & references

No resources yet.

Files📁

No files available.