🐍 MicroPython

Programowanie dla małych komputerów!

Prezentacja dla młodych programistów 🚀

Co to jest MicroPython?

To język programowania dla małych urządzeń elektronicznych! 💻

Łatwy do nauki, potężny w działaniu

Czym różni się od Pythona?

  • 🐍 Python - działa na komputerze
  • 🐍 MicroPython - działa na mikrokontrolerowach
  • 📦 MicroPython jest mniejszy, lżejszy
  • ⚡ Idealny dla Raspberry Pi Pico!

Co możesz z nim zrobić?

  • 💡 Sterować diodami LED
  • 🔊 Odtwarzać dźwięki
  • 📊 Mierzyć napięcie i prąd
  • 🤖 Budować własne gadżety
  • 🎮 Tworzyć proste gry

🎓 Podstawy MicroPython

Zacznijmy od prostych rzeczy!

Zmienne - pudełka na dane

Zmienna to pudełko, w którym trzymamy informacje


# Liczby
wiek = 10
temperatura = 25.5

# Tekst
imie = "Asia"
wiadomosc = "Witaj świecie!"

# Prawda/Fałsz
dioda_wlaczona = True
przycisk_wcisniety = False
                

Instrukcje warunkowe - podejmowanie decyzji

Komputer sprawdza warunek i reaguje


temperatura = 30

if temperatura > 25:
    print("Jest gorąco!")
elif temperatura > 15:
    print("Jest ciepło")
else:
    print("Jest zimno")
                

Jak w życiu: "JEŚLI pada deszcz, TO weź parasol"

Pętle - powtarzanie czynności

Pętla for - powtarzaj określoną liczbę razy


# Policz do 5
for i in range(5):
    print(i)  # Wypisze: 0, 1, 2, 3, 4
                

Pętla while - powtarzaj dopóki jest prawda


licznik = 0
while licznik < 3:
    print("Hurra!")
    licznik = licznik + 1
                

Funkcje - własne komendy

Funkcja to przepis na wykonanie zadania


def powitaj(imie):
    print("Cześć " + imie + "!")

def dodaj(a, b):
    wynik = a + b
    return wynik

# Używamy funkcji
powitaj("Ania")  # Wypisze: Cześć Ania!
suma = dodaj(5, 3)  # suma = 8
                

Funkcje oszczędzają czas - piszemy raz, używamy wiele razy!

🍓 MicroPython + Raspberry Pi Pico

Teraz łączymy programowanie z elektroniką!

Biblioteka machine

To zestaw narzędzi do sterowania Pico


from machine import Pin
from machine import ADC
from machine import PWM
import time
                

💡 Pin - kontroluje piny GPIO

📊 ADC - mierzy napięcie

🌊 PWM - kontroluje jasność/prędkość

Sterowanie pinem - OUTPUT

Wysyłamy sygnał NA ZEWNĄTRZ (np. zapalamy LED)


from machine import Pin

# Utwórz pin 15 jako wyjście (OUTPUT)
led = Pin(15, Pin.OUT)

# Włącz LED
led.on()   # albo led.value(1)

# Wyłącz LED
led.off()  # albo led.value(0)

# Przełącz stan (jeśli był włączony → wyłącz, jeśli wyłączony → włącz)
led.toggle()
                

Odczytywanie pinu - INPUT

Odbieramy sygnał Z ZEWNĄTRZ (np. przycisk)


from machine import Pin

# Utwórz pin 14 jako wejście z podciągnięciem do góry
przycisk = Pin(14, Pin.IN, Pin.PULL_UP)

# Sprawdź czy przycisk wciśnięty
if przycisk.value() == 0:  # 0 = wciśnięty (masa)
    print("Przycisk wciśnięty!")
else:
    print("Przycisk nie wciśnięty")
                

⏱️ Time - kontrola czasu


import time

# Czekaj 1 sekundę
time.sleep(1)

# Czekaj 500 milisekund (0.5 sekundy)
time.sleep(0.5)

# Czekaj bardzo krótko (1 milisekunda)
time.sleep_ms(1)
                

Idealny do tworzenia migających światełek i opóźnień!

💡 Projekt 1: Migająca dioda LED

Klasyczny pierwszy projekt!

🔌 Co potrzebujemy?

  • Dioda LED (dowolny kolor)
  • Rezystor 220Ω - 330Ω
  • Przewody
  • Breadboard (płytka stykowa)

📐 Schemat połączenia

1. Pin GP15 → rezystor → nóżka długa LED (+)

2. nóżka krótka LED (-) → GND (masa)

⚠️ Rezystor chroni LED przed spaleniem!

💻 Kod - prosta wersja


from machine import Pin
import time

# Utwórz pin dla LED
led = Pin(15, Pin.OUT)

# Migaj bez końca!
while True:
    led.on()           # Włącz LED
    time.sleep(1)      # Czekaj 1 sekundę
    led.off()          # Wyłącz LED
    time.sleep(1)      # Czekaj 1 sekundę
                

✨ Twoja pierwsza działająca dioda! ✨

💻 Kod - wersja z funkcją


from machine import Pin
import time

led = Pin(15, Pin.OUT)

def mrugaj(ilosc_razy):
    for i in range(ilosc_razy):
        led.toggle()
        time.sleep(0.3)

# Mrugaj 5 razy szybko
mrugaj(5)

# Długa pauza
time.sleep(2)

# Mrugaj 3 razy
mrugaj(3)
                

Teraz możesz łatwo kontrolować miganie!

🔊 Projekt 2: Buzzer z generatorem

Prosta sygnalizacja dźwiękowa!

🔌 Co potrzebujemy?

  • Buzzer z generatorem (ma 2 przewody)
  • Przewody

⚡ Buzzer z generatorem włącza się sam - wystarczy podać napięcie!

📐 Schemat połączenia

1. Pin GP15 → buzzer (+) (czerwony)

2. Buzzer (-) (czarny) → GND (masa)

🎵 Włączając pin - buzzer piszczy!

💻 Kod - prosty dźwięk


from machine import Pin
import time

# Utwórz pin dla buzzera
buzzer = Pin(15, Pin.OUT)

# Krótki BEEP!
buzzer.on()          # Włącz dźwięk
time.sleep(0.5)      # Brzęcz przez pół sekundy
buzzer.off()         # Wyłącz dźwięk

time.sleep(1)        # Chwila ciszy

# Seria sygnałów SOS
for i in range(3):
    buzzer.on()
    time.sleep(0.2)
    buzzer.off()
    time.sleep(0.2)
                

🎲 Projekt 3: Gra losująca kolor

Naciśnij przycisk - zobacz jaki kolor wylosuje!

🔌 Co potrzebujemy?

  • 3 diody LED (czerwona, żółta, zielona)
  • 3 rezystory 220Ω - 330Ω
  • 1 przycisk
  • Przewody

📐 Schemat połączenia

LED zielona:

→ GP15 → rezystor → LED → GND

LED żółta:

→ GP16 → rezystor → LED → GND

LED czerwona:

→ GP17 → rezystor → LED → GND

Przycisk:

→ Jedna nóżka → GP14

→ Druga nóżka → GND

💻 Kod - losowanie koloru


from machine import Pin
import random
import time

# Konfiguracja LED
led_zielona = Pin(15, Pin.OUT)
led_zolta = Pin(16, Pin.OUT)
led_czerwona = Pin(17, Pin.OUT)

# Konfiguracja przycisku (PULL_UP)
przycisk = Pin(14, Pin.IN, Pin.PULL_UP)

def zgasc_wszystkie():
    led_zielona.off()
    led_zolta.off()
    led_czerwona.off()

print("Naciśnij przycisk, aby wylosować kolor!")

while True:
    # Czekaj na naciśnięcie przycisku
    if przycisk.value() == 0:  # 0 = naciśnięty
        # Losuj liczbę 1, 2 lub 3
        wylosowany = random.randint(1, 3)

        zgasc_wszystkie()

        if wylosowany == 1:
            led_zielona.on()
            print("🟢 Wylosowano ZIELONĄ!")
        elif wylosowany == 2:
            led_zolta.on()
            print("🟡 Wylosowano ŻÓŁTĄ!")
        else:
            led_czerwona.on()
            print("🔴 Wylosowano CZERWONĄ!")

        # Czekaj aż użytkownik puści przycisk
        while przycisk.value() == 0:
            time.sleep(0.1)

        time.sleep(0.5)  # Krótka przerwa

    time.sleep(0.1)
                

🎮 Jak to działa?

🔘 Naciskasz przycisk

🎲 Program losuje liczbę 1, 2 lub 3

💡 Zapala się odpowiednia dioda LED

🎊 Możesz bawić się ile chcesz!

💡 Pomysł: dodaj buzzer dla efektu dźwiękowego!

🚦 Projekt 4: Światła drogowe

Symulator sygnalizacji ulicznej!

🔌 Co potrzebujemy?

  • 3 diody LED (czerwona, żółta, zielona)
  • 3 rezystory 220Ω - 330Ω
  • Przewody

📐 Schemat połączenia

LED czerwona (góra):

→ GP15 → rezystor → LED → GND

LED żółta (środek):

→ GP16 → rezystor → LED → GND

LED zielona (dół):

→ GP17 → rezystor → LED → GND

💻 Kod - prawdziwe światła!


from machine import Pin
import time

# Konfiguracja LED
czerwona = Pin(15, Pin.OUT)
zolta = Pin(16, Pin.OUT)
zielona = Pin(17, Pin.OUT)

def zgasc_wszystkie():
    czerwona.off()
    zolta.off()
    zielona.off()

print("🚦 Start sygnalizacji świetlnej!")

while True:
    # CZERWONE - STOP!
    zgasc_wszystkie()
    czerwona.on()
    print("🔴 CZERWONE - Stój!")
    time.sleep(5)

    # CZERWONE + ŻÓŁTE - Przygotuj się
    zolta.on()
    print("🔴🟡 Przygotuj się...")
    time.sleep(2)

    # ZIELONE - Jedź!
    zgasc_wszystkie()
    zielona.on()
    print("🟢 ZIELONE - Jedź!")
    time.sleep(5)

    # ŻÓŁTE - Uwaga, zaraz czerwone!
    zgasc_wszystkie()
    zolta.on()
    print("🟡 ŻÓŁTE - Uwaga!")
    time.sleep(2)
                

🚦 Jak działają prawdziwe światła?

1. 🔴 CZERWONE (5 sekund) - Stój!

2. 🔴🟡 CZERWONE + ŻÓŁTE (2 sekundy) - Za chwilę zielone

3. 🟢 ZIELONE (5 sekund) - Możesz jechać

4. 🟡 ŻÓŁTE (2 sekundy) - Zwolnij, zaraz czerwone

5. 🔁 Powtarzaj w kółko!

💡 Możesz zmienić czasy trwania każdego światła!

🎨 Dodatkowe pomysły

  • 🔊 Dodaj buzzer przy zielonym świetle (sygnał dla niewidomych)
  • ⏱️ Zmień czasy - np. dłuższe zielone
  • 🌙 Tryb nocny - tylko migające żółte
  • 🚦🚦 Zrób dwa zestawy świateł dla skrzyżowania!

🎯 Dobre praktyki programowania

Jak pisać czysty kod?

📝 Komentarze

Wyjaśniaj co robi Twój kod


# To jest komentarz - Python go ignoruje
# Pomaga zrozumieć kod innym (i Tobie później!)

# Utwórz pin dla LED
led = Pin(15, Pin.OUT)

# Migaj 10 razy
for i in range(10):
    led.toggle()  # Przełącz stan LED
    time.sleep(0.5)  # Czekaj pół sekundy
                

🏷️ Dobre nazwy zmiennych

Nazwy powinny opisywać co przechowują


# ❌ ZŁE - niejasne nazwy
x = 15
y = 220
z = Pin(x, Pin.OUT)

# ✅ DOBRE - jasne nazwy
pin_led = 15
opoznienie = 220
led_czerwona = Pin(pin_led, Pin.OUT)
                

🔧 Używaj funkcji

Dziel kod na mniejsze części


def mrugaj_led(pin, ile_razy, szybkosc):
    """Mruga LED określoną liczbę razy"""
    led = Pin(pin, Pin.OUT)
    for i in range(ile_razy):
        led.toggle()
        time.sleep(szybkosc)

# Teraz łatwo używać!
mrugaj_led(15, 5, 0.3)  # Pin 15, 5 razy, 0.3s
mrugaj_led(16, 3, 0.5)  # Pin 16, 3 razy, 0.5s
                

🐛 Debugowanie - szukanie błędów

Używaj print() do sprawdzania wartości


adc = ADC(26)

while True:
    wartosc = adc.read_u16()
    napiecie = (wartosc / 65535) * 3.3

    # Wyświetl wartości żeby sprawdzić czy są ok
    print(f"Surowa wartość: {wartosc}")
    print(f"Napięcie: {napiecie:.2f}V")
    print("---")

    time.sleep(1)
                

To jak latarka w ciemności - widzisz co się dzieje!

⚠️ Obsługa błędów

Co jeśli coś pójdzie nie tak?


try:
    # Próbuj uruchomić kod
    led = Pin(15, Pin.OUT)
    led.on()
except Exception as e:
    # Jeśli coś poszło nie tak, wyświetl błąd
    print(f"Błąd: {e}")
    print("Sprawdź połączenia!")
                

Dzięki temu program nie zatrzyma się nagle

💡 Pomysły na własne projekty

Co możesz stworzyć?

🎮 Proste projekty z LED

  • 🎄 Choinka - różne wzory migania LED
  • 💓 Serce - LED migające jak bicie serca
  • 🌊 Fala świetlna - LED zapalające się po kolei
  • ⚡ Symulator burzy - losowe błyski
  • 🎆 Fajerwerki - wszystkie LED razem!

🔊 Projekty z buzzerem

  • ⏰ Budzik - buzzer po określonym czasie
  • 🚨 Alarm - gdy naciśniesz przycisk
  • ⏱️ Stoper z sygnałem dźwiękowym
  • 🎵 Kod Morse'a - SOS i inne sygnały
  • 🔔 Dzwonek do drzwi

🎲 Gry i zabawy

  • 🎲 Elektroniczna kostka 1-6 (LED pokazuje wynik)
  • 🎯 Gra na refleks - kto szybciej naciśnie
  • 🧠 Zapamiętaj sekwencję kolorów
  • 🎰 Jednoręki bandyta - losuj 3 kolory
  • 🚦 Quiz - zielone = dobrze, czerwone = źle

🔗 Połącz projekty!

LED + Buzzer + Przycisk = super gadżet!

Przykład: Gra na refleks z dźwiękiem


# Po naciśnięciu przycisku
led_zielona.on()
buzzer.on()
time.sleep(0.2)
buzzer.off()
print("Gratulacje! Wygrałeś!")
                

Możliwości są nieograniczone! 🌟

🎉 Podsumowanie

  • 🐍 MicroPython jest łatwy do nauki
  • 📦 Używamy zmiennych, pętli, warunków i funkcji
  • 🍓 Raspberry Pi Pico + MicroPython = potężne combo!
  • 💡 Sterujemy LED przez Pin.OUT
  • 🔊 Tworzymy dźwięki z buzzerem z generatorem
  • 🔘 Odczytujemy przyciski przez Pin.IN
  • 🎲 Losujemy liczby z modułem random

🎓 Co się nauczyłeś?

✅ Podstawy programowania w MicroPython

✅ Sterowanie pinami GPIO (wejście/wyjście)

✅ Miganie diodami LED

✅ Odtwarzanie dźwięków buzzerem

✅ Odczytywanie przycisków

✅ Losowanie - gra z kolorami

✅ Symulacja świateł drogowych

🚀 Dalsze kroki

📚 Czytaj dokumentację MicroPython

🔬 Eksperymentuj z różnymi komponentami

🤝 Dziel się projektami z innymi

💡 Twórz własne gry i wynalazki!

🎮 Połącz LED + Buzzer + Przycisk = fajny gadżet!

Jesteś teraz programistą MicroPython! 🎊

🐍 Powodzenia!

Czas tworzyć niesamowite projekty! 🚀

Pamiętaj: każdy programista zaczyna od mrugającej diody! 💡