Operácie

Hracia kocka s LED: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
Riadok 116: Riadok 116:
        last_button = button_state;
        last_button = button_state;
    }
    }
}>
}
 


</syntaxhighlight ></tab>
<tab name="filename.h"><syntaxhighlight  lang="c++" style="background: LightYellow;">




Riadok 129: Riadok 128:
=== Overenie ===
=== Overenie ===


Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia.  
Po nahratí programu do mikrokontroléra som otestovala správnu funkciu systému pomocou opakovaného stláčania tlačidla. Pri každom stlačení sa mal zobraziť nový náhodný výsledok — číslo od 1 do 6 — ktorý sa zobrazuje ako určitá kombinácia svietiacich LED diód.
Na konci uvádzame fotku hotového zariadenia.  
 
Každé číslo je zobrazené špecifickým spôsobom, ktorý vizuálne pripomína usporiadanie bodiek na klasickej hracej kocke. Napríklad:
• 1 → stredná LED
• 2 → dve diagonálne LED
• 3 → stredná + diagonály
• 4, 5, 6 → ako na skutočnej kocke – LED rozmiestnené symetricky
 
Opakovane som testovala stláčanie tlačidla, pričom som pozorovala, či zvolený počet a umiestnenie LED diód zodpovedá správnemu číslu. Projekt fungoval podľa očakávania a každé číslo malo svoju správnu kombináciu svetiel.


[[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]]
[[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]]

Verzia z 23:31, 23. jún 2025

Záverečný projekt predmetu MIPS / LS2025 - Ilona Baihildina


Zadanie

V tomto projekte používam mikrokontrolér ATmega328P, ku ktorému je pripojených 7 LED diód a jedno tlačidlo. LED diódy sú pripojené k portom B a D. Po stlačení tlačidla sa vygeneruje náhodné číslo od 1 do 6 a podľa toho sa rozsvietia presne definované kombinácie LED diód. Po zapnutí zariadenia a stlačení tlačidla sa zobrazí nové náhodné číslo prostredníctvom svietenia konkrétnych LED diód. Každé číslo má vlastnú unikátnu kombináciu svietiacich diód. Projekt demonštruje prácu s náhodnými číslami, digitálnymi výstupmi a čítaním stavu tlačidla v jazyku C v prostredí AVR Studio.

Vývojová doska ACROB.

Literatúra:


Analýza a opis riešenia

• LED diódy sú nakonfigurované ako výstupné piny pomocou DDRx registrov.
• Tlačidlo je pripojené na vstupný pin PD0, so zapnutým vnútorným pull-up rezistorom.
• Kód využíva funkciu srand() na inicializáciu generovania náhodných hodnôt a rand() na výber čísla.
• Každé číslo je ošetrené cez switch-case, kde sa podľa hodnoty nastavujú výstupné stavy na jednotlivé piny.
• Pridaný je aj jednoduchý anti-drebezgový delay (200 ms) po každom stlačení tlačidla.


Použité komponenty

• 1× mikrokontrolér ATmega328P 
• 7× LED dióda (ľubovoľnej farby)
• 7× rezistor 220–330 Ω (zapojené v sérii s LED diódami)
• 1× tlačidlo (spínač, push-button)
• 1× doska s prepojeniami (breadboard) – nepájivé pole
• Prepojovacie vodiče (jumper wires) – muž–muž
• Zdroj napájania (napr. cez USB alebo externý 5V adaptér)
• (voliteľne) Kondenzátor a externý oscilátor 16 MHz – ak nepoužívaš Arduino Uno a máš čistý čip
Celkový pohľad na zariadenie.

Každá LED dióda je zapojená cez rezistor do výstupného pinu mikrokontroléra a druhou stranou do GND. Tlačidlo je zapojené medzi pin PD0 a GND, pričom v kóde je aktivovaný interný pull-up rezistor.

Schéma zapojenia.


Algoritmus a program

Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...


<tabs> <tab name="AVR C-code"><syntaxhighlight lang="c++" style="background: LightYellow;">

  1. define F_CPU 16000000UL
  2. include <avr/io.h>
  3. include <util/delay.h>
  4. include <stdlib.h>

void setup() {     DDRB |= (1 << PB5) | (1 << PB4) | (1 << PB3) | (1 << PB0);     DDRD |= (1 << PD7) | (1 << PD6) | (1 << PD5);

    DDRD &= ~(1 << PD4);     // PD0 ??? ????     PORTD |= (1 << PD4);     // ???????? ????????

    srand(ADC);  // ????????????? ?????????? ????????? ????? }

void clear_leds() {     PORTB &= ~((1 << PB5) | (1 << PB4) | (1 << PB3) | (1 << PB0));     PORTD &= ~((1 << PD7) | (1 << PD6) | (1 << PD5)); }

void set_leds(uint8_t number) {     clear_leds();

    switch (number) {         case 1:             PORTD |= (1 << PD6);             break;         case 2:             PORTB |= (1 << PB5);             PORTD |= (1 << PD5);             break;         case 3:             PORTB |= (1 << PB0) | (1 << PB3);             PORTD |= (1 << PD6);             break;         case 4:             PORTB |= (1 << PB5) | (1 << PB3) | (1 << PB0);             PORTD |= (1 << PD5);             break;         case 5:             PORTB |= (1 << PB5) | (1 << PB3) | (1 << PB0);             PORTD |= (1 << PD5) | (1 << PD6);             break;         case 6:             PORTB |= (1 << PB5) | (1 << PB4) | (1 << PB3) | (1 << PB0);             PORTD |= (1 << PD5) | (1 << PD7);             break;         default:             break;     } }

int main(void) {     setup();

    uint8_t last_button = 1;

    while (1) {         uint8_t button_state = (PIND & (1 << PD4)) == 0;

        if (button_state && last_button) {             uint8_t rand_num = (rand() % 6) + 1;  // ?? 1 ?? 6             set_leds(rand_num);             _delay_ms(200);  // ???????????         }

        last_button = button_state;     } }



Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

Po nahratí programu do mikrokontroléra som otestovala správnu funkciu systému pomocou opakovaného stláčania tlačidla. Pri každom stlačení sa mal zobraziť nový náhodný výsledok — číslo od 1 do 6 — ktorý sa zobrazuje ako určitá kombinácia svietiacich LED diód.

Každé číslo je zobrazené špecifickým spôsobom, ktorý vizuálne pripomína usporiadanie bodiek na klasickej hracej kocke. Napríklad:

• 1 → stredná LED
• 2 → dve diagonálne LED
• 3 → stredná + diagonály
• 4, 5, 6 → ako na skutočnej kocke – LED rozmiestnené symetricky

Opakovane som testovala stláčanie tlačidla, pričom som pozorovala, či zvolený počet a umiestnenie LED diód zodpovedá správnemu číslu. Projekt fungoval podľa očakávania a každé číslo malo svoju správnu kombináciu svetiel.

Aplikácia.

Video:



Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.