Operácie

Binárne hodiny: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
 
(2 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.)
Riadok 41: Riadok 41:
Schéma zapojenia:
Schéma zapojenia:


[[Súbor:SchemaZapojenia.jpeg|400px|thumb|center|Schema zapojenia.]]
[[Súbor:SchemaZapojenia.jpeg|400px|thumb|center|Schema zapojenia binárneho počítadla]]


=== Algoritmus a program ===
=== Algoritmus a program ===
Riadok 107: Riadok 107:




Zdrojový kód: [[Médiá:BinarneHodiny.zip|zdrojaky.zip]]
Zdrojový kód: [[Médiá:BinarneHodiny.zip|BinarneHodiny.zip]]


=== Overenie ===
=== Overenie ===


Program sme otestovali zapojením podľa vyššie uvedenej schémy. Počas merania času sme použili aj stopky, ktoré počítali sekundy súčasne s naším binárnym počítadlom.
Program sme otestovali zapojením podľa vyššie uvedenej schémy. Počas merania času sme použili aj stopky, ktoré počítali sekundy súčasne s naším binárnym počítadlom. Výsledok môžeme považovať za vhodný, pretože počítadlo rátalo súčasne so stopkami a pri 1 minúte a 4 sekundách sa binárne hodiny resetovali


'''Video:'''
'''Video:'''
Riadok 119: Riadok 119:


Aby naše počítadlo malo lepšie využitie mohli by sme pridať ešte ďalšie 2 LED, tým by sme dostali čísla od 0 do 255. Pri takomto zapojení ale musíme použiť iný port (napríklad PORTA) pretože PORTB nemá toľko voľných pinov.
Aby naše počítadlo malo lepšie využitie mohli by sme pridať ešte ďalšie 2 LED, tým by sme dostali čísla od 0 do 255. Pri takomto zapojení ale musíme použiť iný port (napríklad PORTA) pretože PORTB nemá toľko voľných pinov.
Mohli by sme ešte pridať tlačidlo na zapínanie a vypínanie časovača, tým by mohli fumgpvať ako stopky.
Mohli by sme ešte pridať tlačidlo na zapínanie a vypínanie časovača, tým by mohli fungpvať ako stopky.
Mohlo by sa pridať aj vypísanie čísla na sériovú linku alebo na LCD display
 






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


[[Category:AVR]] [[Category:MIPS]]
[[Category:AVR]] [[Category:MIPS]]

Aktuálna revízia z 14:42, 2. jún 2026

Záverečný projekt predmetu MIPS / LS2026 - Áron Szabó Bartko


Zadanie

Cieľom projektu bolo vytvoriť program pre mikrokontrolér Arduino s procesorom ATmega328P, ktorý pomocou 6 LED diód zobrazuje binárny zápis čísiel od 0 do 63. Počítadlo sa zvyšuje každú jednu sekundu. Po dosiahnutí hodnoty 63 sa automaticky vynuluje a začne počítať odznova.

Vývojová doska ACROB.



Analýza a opis riešenia

Teoretický rozbor

Binárna sústava je dvojková číselná sústava, ktorá používa iba číslice 0 a 1. Pre náš projekt hodnota 1 bude predstavovať zapnutý stav a hodnota 0 vypnutý stav.

Keďže projekt používa 6 LED diód, je možné zobraziť čísla od 0 do 63, pretože

2^6 = 64

Každá LED predstavuje jednu binárnu pozíciu. Hodnota každej pozície je určená mocninou čísla 2. Celková zobrazená hodnota vznikne sčítaním hodnôt LED, ktoré svietia.

Príklad prepisu binárneho čísla 10110 na desiatkové číslo:

20 * 0 + 21 * 1 + 22 * 1 + 23 * 0 + 24 * 1 + 25 * 0

0 + 2 + 4 + 0 + 16 + 0 = 22

Zapojenie

Projekt obsahuje tieto súčiastky:

  • Arduino s procesorom ATmega328P
  • 6× LED dióda (červená)
  • 6× rezistor (330 Ω)
  • prepojovacie vodiče

Schéma zapojenia:

Schema zapojenia binárneho počítadla

Algoritmus a program

Program po spustení nastaví piny PORTB ako výstupné. Následne vytvorí premennú pocitadlo, ktorá uchováva aktuálnu hodnotu od 0 do 63. V nekonečnej slučke sa vykonávajú tieto kroky: 1. Zobrazí sa aktuálna hodnota počítadla na LED diódach 2. Program počká 1 sekundu 3. Hodnota počítadla sa zvýši o 1 4. Ak hodnota prekročí 63, počítadlo sa nastaví späť na 0

Vlastné funkcie: zobrazBinarnu() - Táto funkcia zapisuje binárnu hodnotu priamo na port PORTB Najprv sa vynulujú prvé 4 bity portu a následne sa zapíše nová hodnota počítadla

Špeciálne knižnice: util/delay.h – táto knižnica je potrebná kvôli vytvoreniu časového oneskorenia

#define F_CPU 16000000UL

#include <avr/io.h>
#include <util/delay.h>

#define LED0 PB0
#define LED1 PB1
#define LED2 PB2
#define LED3 PB3
#define LED4 PB4
#define LED5 PB5

void zobrazBinarnu(uint8_t hodnota) {
    PORTB &= ~(0x3F);
    PORTB |= (hodnota & 0x3F);	
}
	// zobrazBinarnu - zapíše hodnotu počítadla na PORTB – každý bit = jedna LED

int main(void) {

    DDRB |= (1 << LED0) | (1 << LED1) | (1 << LED2) |
            (1 << LED3) | (1 << LED4) | (1 << LED5);

    uint8_t pocitadlo = 0;

    while (1) {
        
        zobrazBinarnu(pocitadlo);		// Zobrazí aktuálnu hodnotu (začína od 0)

        _delay_ms(1000);			// Počkať 1 sekundu 

        pocitadlo++;				// Zvýši počítadlo o 1

        if (pocitadlo > 63) {
            pocitadlo = 0;			// Reset po 63 – vráti sa na 0
        }
    }

    return 0;
}


Zdrojový kód: BinarneHodiny.zip

Overenie

Program sme otestovali zapojením podľa vyššie uvedenej schémy. Počas merania času sme použili aj stopky, ktoré počítali sekundy súčasne s naším binárnym počítadlom. Výsledok môžeme považovať za vhodný, pretože počítadlo rátalo súčasne so stopkami a pri 1 minúte a 4 sekundách sa binárne hodiny resetovali

Video:

Čo by som urobil inak

Aby naše počítadlo malo lepšie využitie mohli by sme pridať ešte ďalšie 2 LED, tým by sme dostali čísla od 0 do 255. Pri takomto zapojení ale musíme použiť iný port (napríklad PORTA) pretože PORTB nemá toľko voľných pinov. Mohli by sme ešte pridať tlačidlo na zapínanie a vypínanie časovača, tým by mohli fungpvať ako stopky. Mohlo by sa pridať aj vypísanie čísla na sériovú linku alebo na LCD display