Szukaj kodu

Kurs Lekcja 2 z 10: Podstawy Pythona do sterowania zestawem inteligentnego samochodu 4WD Raspberry Pi Pico

Ta lekcja jest częścią: Raspberry Pi Pico 4WD Smart Car

Kurs Lekcja 2 z 10: Podstawy Pythona do sterowania zestawem inteligentnego samochodu 4WD Raspberry Pi Pico

W tej drugiej lekcji kursu Robojax Raspberry Pi Pico 4WD Smart Car zagłębiamy się w podstawowe koncepcje programowania w Pythonie, które umożliwią Ci sterowanie robotem. Ten przewodnik został zaprojektowany tak, aby przeprowadzić Cię od zerowego doświadczenia w kodowaniu do pewnego pisania skryptów sterujących sprzętem. Zamiast tylko zapamiętywać składnię, zgłębimy „dlaczego" stojące za każdą koncepcją, dając Ci narzędzia do budowania i dostosowywania własnych projektów. Pod koniec tej lekcji będziesz mieć solidne zrozumienie zmiennych, przepływu sterowania, funkcji i list — czyli elementów budulcowych wszystkich przyszłych projektów.

Ta wiedza przyda się nie tylko do inteligentnego samochodu. Zasady, których się tutaj nauczysz, są tymi samymi, które są używane w niezliczonych rzeczywistych zastosowaniach. Możesz wykorzystać te umiejętności do:

  • Automatyzacji domowej szklarni w celu sterowania wentylatorami, pompami i oświetleniem na podstawie danych z czujników.
  • Budowy niestandardowego systemu bezpieczeństwa, który uruchamia alarmy lub wysyła powiadomienia.
  • Tworzenia interaktywnych instalacji artystycznych reagujących na otoczenie.
  • Opracowywania własnych, niestandardowych zachowań robota wykraczających poza zaprogramowane.

Sprzęt/Komponenty

Aby śledzić przykłady sprzętowe w tej lekcji, będziesz potrzebować następujących komponentów. Wszystkie są częścią zestawu SunFounder Raspberry Pi Pico 4WD Smart Car Kit, ale można je kupić osobno do samodzielnych eksperymentów.

  • Raspberry Pi Pico: Mikrokontroler będący mózgiem projektu.
  • Dioda LED: Używana do demonstracji cyfrowego sterowania wyjściem.
  • Rezystor (150Ω - 330Ω): Do ograniczenia prądu i ochrony diody LED.
  • Przewody połączeniowe: Do tworzenia połączeń na płytce stykowej.
  • Płytka stykowa: Do prototypowania obwodu.

Schemat połączeń

Do demonstracji sprzętowej w tej lekcji zbudujemy prosty obwód do sterowania diodą LED za pomocą Raspberry Pi Pico. Okablowanie jest proste i stanowi klasyczny pierwszy krok w fizycznym programowaniu. Kluczowe jest użycie rezystora ograniczającego prąd, aby zapobiec przepaleniu diody LED. Rezystor jest podłączony szeregowo z diodą LED. Dłuższa nóżka diody LED (anoda) to połączenie dodatnie, a krótsza nóżka (katoda) to połączenie ujemne.

Na filmie instruktor używa rezystora podłączonego do pinu masy i krótkiej nóżki diody LED. Długa nóżka jest podłączona do pinu GPIO 22. Ta konfiguracja pozwala Pico wysyłać wysoki sygnał (3,3 V) na pin, aby włączyć diodę LED, oraz niski sygnał (0 V), aby ją wyłączyć.

Uwaga: Schemat połączeń jest pokazany na filmie. Aby uzyskać dokładne rozmieszczenie, zapoznaj się z przewodnikiem wizualnym.

Wyjaśnienie kodu

Ta lekcja koncentruje się na podstawowej składni i logice Pythona, które są niezbędne do sterowania robotem. Rozłóżmy na czynniki pierwsze kluczowe koncepcje omówione na filmie. Przykłady kodu są napisane w MicroPythonie, wersji Pythona zaprojektowanej do działania na mikrokontrolerach takich jak Raspberry Pi Pico.

Zmienne i typy danych

Zmienne są jak oznaczone pudełka, w których przechowujesz informacje. W Pythonie nie musisz deklarować typu zmiennej; jest on wnioskowany z wartości, którą przypisujesz. (na filmie o 03:33)


age = 23  # To jest liczba całkowita
name = "Ahmad"  # To jest ciąg znaków (tekst)
pi = 3.14  # To jest liczba zmiennoprzecinkowa (dziesiętna)

Możesz używać tych zmiennych w obliczeniach i wypisywać ich wartości. Na przykład, aby obliczyć liczbę dni dla danego wieku, możesz użyć days = age * 365. Funkcja print() służy do wyświetlania danych wyjściowych w konsoli.

Instrukcje warunkowe (If/Else)

Instrukcje warunkowe pozwalają Twojemu kodowi podejmować decyzje. Jest to kluczowe, aby robot mógł reagować na otoczenie, na przykład zatrzymywać się, gdy wykryje przeszkodę. (na filmie o 07:39)


age = 16
if age >= 17:
    print("Możesz prowadzić")
else:
    print("Za młody, aby prowadzić")

Instrukcja if sprawdza warunek. Jeśli warunek jest True, wykonywany jest wcięty blok kodu poniżej. Jeśli jest False, wykonywany jest kod pod instrukcją else. Wcięcia (spacje na początku linii) są w Pythonie krytyczne; definiują, który kod należy do którego bloku.

Pętle (For i While)

Pętle służą do powtarzania bloku kodu. Są idealne do zadań takich jak skanowanie wartości czujników lub poruszanie silnikiem przez sekwencję kroków. (na filmie o 09:04)

Pętla For: Ta pętla iteruje określoną liczbę razy.


for x in range(5):  # x będzie wynosić 0, 1, 2, 3, 4
    print(x)

Pętla While: Ta pętla działa tak długo, jak długo warunek jest prawdziwy. Jest to przydatne do tworzenia głównej pętli programu, która działa w nieskończoność, dopóki nie wystąpi określone zdarzenie. (na filmie o 12:13)


x = 9
while x > 5:
    print("Wartość x to:", x)
    x = x - 1  # Zmniejsz x
print("Pętla zakończona")

Uważaj na pętle while True:. Będą działać w nieskończoność, chyba że użyjesz instrukcji break, aby wyjść z pętli, lub zatrzymasz program.

Funkcje

Funkcje to wielokrotnego użytku bloki kodu, które wykonują określone zadanie. Pomagają utrzymać kod w porządku i zapobiegają powtarzaniu. (na filmie o 14:52)


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

# Teraz możemy używać tej funkcji wielokrotnie
days_in_10_years = calculate_days(10)
print("Dni w 10 latach:", days_in_10_years)

Tutaj calculate_days to funkcja, która przyjmuje argument (years) i zwraca wartość. Jest to bardziej wydajne niż pisanie tego samego obliczenia wielokrotnie. Film pokazuje również, jak jedna funkcja może wywoływać inną, co pozwala budować złożone operacje z prostych, testowalnych części.

Listy

Listy służą do przechowywania uporządkowanego zbioru elementów. To idealne rozwiązanie do przechowywania sekwencji poleceń dla robota, takich jak „do przodu”, „do tyłu”, „w lewo” i „w prawo”. (na filmie o 19:15)


move = ["do przodu", "do tyłu", "w lewo", "w prawo", "stop"]
print(len(move))  # Wypisuje liczbę elementów na liście (5)
print(move[0]) # Wypisuje pierwszy element, "do przodu"

# Możesz dodawać elementy
move.append("klif")
# Możesz usuwać elementy
move.pop()  # Usuwa "klif"
# Możesz zmieniać elementy
move[2] = "leć"  # Zmienia trzeci element na "leć"

Listy są indeksowane od zera, co oznacza, że pierwszy element ma indeks 0. Funkcja len() podaje długość listy, a pętla for pozwala iterować przez wszystkie elementy. Wprowadzono również funkcję enumerate(), która podczas pętli podaje zarówno indeks, jak i wartość, co jest przydatne przy pracy z wieloma pinami lub czujnikami.

Praca z pinami i czasem

To tutaj łączysz logikę Pythona ze światem fizycznym. Używasz biblioteki machine do sterowania pinami GPIO płytki Pico. (na filmie o 25:16)


from machine import Pin
import time

# Ustaw pin 22 jako wyjście
led = Pin(22, Pin.OUT)

# Włącz i wyłącz diodę LED
led.on()
time.sleep(1)
led.off()
time.sleep(1)

Możesz również odczytywać stan pinu, ustawiając go jako wejście za pomocą Pin(2, Pin.IN). Biblioteka time jest niezbędna do dodawania opóźnień (time.sleep()) oraz do mierzenia upływu czasu za pomocą time.ticks_ms() lub konwersji między formatami czasu przy użyciu time.localtime() i time.mktime(). Jest to kluczowe dla logiki opartej na czasie, takiej jak tworzenie sygnału modulacji szerokości impulsu (PWM) do sterowania prędkością silnika.

Projekt/Demonstracja na żywo

Na filmie instruktor przeprowadza demonstrację na żywo tych koncepcji. Zaczyna od pokazania prostych instrukcji print() i przypisań zmiennych w interpreterze Pythona. Następnie przechodzi do bardziej złożonych przykładów, wizualnie pokazując, jak instrukcje if zmieniają przepływ programu w zależności od wartości zmiennej.

Następnie instruktor demonstruje praktyczny przykład sprzętowy, podłączając diodę LED do Raspberry Pi Pico. Pisze prosty skrypt w MicroPythonie, który włącza i wyłącza diodę LED z jednosekundowym opóźnieniem, pokazując bezpośredni efekt sterowania fizycznym wyjściem za pomocą kodu. Ten praktyczny przykład utrwala związek między logiką programowania a działaniem w świecie rzeczywistym. Lekcja kończy się pokazaniem, jak używać enumerate do zarządzania wieloma pinami oraz jak korzystać z modułu time do bardziej zaawansowanych operacji związanych z czasem i harmonogramowaniem.

Rozdziały

  • [00:00] Wprowadzenie do kursu inteligentnego samochodu Raspberry Pi Pico
  • [01:31] Przegląd kursu i możliwości zestawu
  • [03:33] Zmienne i typy danych w Pythonie
  • [07:39] Instrukcje warunkowe (If/Else)
  • [09:04] Zrozumienie pętli For
  • [12:13] Odkrywanie pętli While
  • [14:52] Definiowanie i używanie funkcji
  • [19:15] Praca z listami i strukturami danych
  • [25:16] Sterowanie pinami GPIO za pomocą MicroPythona
  • [29:54] Praktyczny przykład: miganie diodą LED
  • [31:15] Zaawansowane sterowanie pinami za pomocą Enumerate
  • [31:24] Praca z funkcjami czasu
Brak załączonego kodu.

Zasoby i odniesienia

Brak zasobów.

Pliki📁

Brak dostępnych plików.