Operácie

Binárne hodiny: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
StudentMIPS (diskusia | príspevky)
Riadok 18: Riadok 18:


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.
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  
Keďže projekt používa 6 LED diód, je možné zobraziť čísla od 0 do 63, pretože  
'''2^6 = 64'''
'''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.
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:
Príklad prepisu binárneho čísla 10110 na desiatkové číslo:
'''20 * 0 + 21 * 1 + 22 * 1 + 23 * 0 + 24 * 1 + 25 * 0'''
'''20 * 0 + 21 * 1 + 22 * 1 + 23 * 0 + 24 * 1 + 25 * 0'''
'''0 + 2 + 4 + 0 + 16 + 0 = 22'''
'''0 + 2 + 4 + 0 + 16 + 0 = 22'''


=== Zapojenie ===
=== Zapojenie ===

Verzia z 11:56, 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.

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;
}

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

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.

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 fumgpvať ako stopky.


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