Lapā tiek izmantotas sīkdatnes 

LED metamais kauliņš


Mērķis

Izveidot elektronisku metamā kauliņa simulāciju, izmantojot ESP32 mikrokontrolieri, 9 LED diodes un pogu. Nospiežot pogu:

  1. LED diodes īslaicīgi animējas;
  2. tiek ģenerēts nejaušs skaitlis no 1 līdz 6;
  3. LED diodes attēlo uzmestā kauliņa skaitli.


Aparatūras apraksts

LED diožu izvietojums

LED diodes izvietotas kā metamajam kauliņam:

LED1   LED2   LED3
LED4   LED5   LED6
LED7   LED8   LED9

Pieslēgumi

Elements GPIO
LED1 25
LED2 26
LED3 27
LED4 33
LED5 32
LED6 14
LED7 2
LED8 4
LED9 12
Poga 19

Poga pieslēgta ar PULL_UP rezistoru.


Darbības apraksts

Programmas loģika
  1. Inicializēt visas LED diodes kā izvadi.
  2. Inicializēt pogu kā ievadi ar PULL_UP.
  3. Nepārtraukti pārbaudīt pogas stāvokli.
  4. Kad poga nospiesta:
  5. izpildīt LED animāciju;
  6. ģenerēt nejaušu skaitli;
  7. attēlot skaitli LED diodēs.
  8. Nodrošināt pogas “debounce”.

Sagatave studentam

from machine import Pin
from random import randrange
import time

# LED definīcija

led1 = Pin(25, Pin.OUT)
led2 = Pin(26, Pin.OUT)
# TODO: definētas visas LED diodes

# Poga
button = Pin(19, Pin.IN, Pin.PULL_UP)

# Saraksts ar visām LED diodēm
leds = [
    led1, led2, led3,
    led4, led5, led6,
    led7, led8, led9
]

# Debounce mainīgie

last_press_time = 0
debounce_ms = 200

# Funkcija: izslēgt visas LED diodes
def all_leds_off():
    """
    Izslēdz visas LED diodes.
    """

    # TODO:
    # Izmanto ciklu, lai izslēgtu visas LED diodes

    pass


# Funkcija: LED animācija
def leds_blinking():
    """
    Izveido īsu LED animāciju pirms
    skaitļa parādīšanas.
    """

    # TODO:
    # Secīgi ieslēdz LED diodes,
    # veidojot animāciju

    pass


# Funkcija: ģenerē nejaušu skaitli
def roll_dice():
    """
    Atgriež nejaušu skaitli no 1 līdz 6.
    """

    # TODO:
    # Izmanto randrange()

    pass

# Funkcija: attēlo skaitli LED diodēs
def show_number_on_leds(num):
    """
    Attēlo kauliņa skaitli,
    izmantojot LED diodes.
    """

    # Vispirms izslēdz visas LED diodes
    all_leds_off()

    # TODO:
    # Izvēlies, kuras LED diodes jāieslēdz
    # katram skaitlim no 1 līdz 6

    # Piemērs:
    #
    # if num == 1:
    #     num_leds = [led5]
    #
    # elif num == 2:
    #     num_leds = [led1, led9]

    # TODO:
    # Ieslēdz izvēlētās LED diodes

    pass


# Funkcija: pogas nospiešanas apstrāde
def on_button_press():
    """
    Izpilda visas darbības,
    kad tiek nospiesta poga.
    """

    # TODO:
    # 1. Atskaņo animāciju
    # 2. Uzģenerē skaitli
    # 3. Attēlo rezultātu

    pass


# Galvenais cikls
while True:

    # TODO:
    # Pārbaudi, vai poga nospiesta
    #
    # Atceries:
    # PULL_UP režīmā nospiesta poga = 0

    # TODO:
    # Pievieno debounce pārbaudi

    # TODO:
    # Sagaidi pogas atlaišanu

    time.sleep_ms(10)

Vērtēšanas kritēriji

Kritērijs Punkti
Pareiza LED inicializācija 2
Funkciju izmantošana 2
Nejauša skaitļa ģenerēšana 2
Pareiza LED attēlošana 4
Debounce realizācija 3
Koda lasāmība un komentāri 2