Operácie

SOS maják: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
Riadok 40: Riadok 40:
#include <util/delay.h>
#include <util/delay.h>


// Definícia LED na porte B, pin 5 (podľa cvičenia 1)
// Definícia LED na porte B, pin 5  
#define LED_PIN PB5
#define LED_PIN PB5



Verzia z 20:19, 28. apríl 2026

Záverečný projekt predmetu MIPS / LS2026 - Rostyslav Fursov


Zadanie

Cieľom úlohy bolo vytvoriť program v jazyku C pre mikroprocesor ATmega328P, ktorý simuluje optický maják vysielajúci medzinárodný núdzový signál SOS (... --- ...). Program musí bežať v nekonečnej slučke a dodržiavať štandardizované časové intervaly pre Morseovu abecedu.

Vývojová doska ACROB.

Literatúra:


Analýza a opis riešenia

Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami... Podrobne opíšte použité komponenty (okrem základnej dosky s ATmega328P procesorom), pridajte linky na datasheety alebo opis obvodu.

Celkový pohľad na zariadenie.

Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.

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...


#define F_CPU 16000000UL

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

// Definícia LED na porte B, pin 5 
#define LED_PIN PB5

int main(void)
{
    // Nastavenie pinu PB5 ako výstup 
    DDRB |= (1 << LED_PIN);

    while (1) 
    {
        // Písmeno S (3 krát krátky impulz)
        for (int i = 0; i < 3; i++) {
            PORTB |= (1 << LED_PIN);   // LED zapne
            _delay_ms(200);            // oneskorenie
            PORTB &= ~(1 << LED_PIN);  // LED vypne
            _delay_ms(200);
        }

        _delay_ms(400); // Pauza medzi písmenami (píšem 400 ms, pretože 200 ms už máme z predchádzajúceho cyklu)

        // Písmeno O (3 krát dlhý impulz) 
        for (int i = 0; i < 3; i++) {
            PORTB |= (1 << LED_PIN);   // LED zapne
            _delay_ms(600);            // 3 * T
            PORTB &= ~(1 << LED_PIN);  // LED vypne
            _delay_ms(200);
        }

        _delay_ms(400); // Pauza medzi písmenami

        // Písmeno S (3 krát krátky impulz) 
        for (int i = 0; i < 3; i++) {
            PORTB |= (1 << LED_PIN);   // LED zapne
            _delay_ms(200);            // oneskorenie
            PORTB &= ~(1 << LED_PIN);  // LED vypne
            _delay_ms(200);
        }

        _delay_ms(1200);    // Pauza medzi SOS sekvenciami (píšem 1200 ms, pretože 200 ms už máme z predchádzajúceho cyklu)

    }

    return 0;
}
#include <avr/io.h>

void adc_init(void);                                   // A/D converter initialization

unsigned int adc_read(char a_pin);

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

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. Na konci uvádzame fotku hotového zariadenia.

Aplikácia.

Video:


Čo by som urobil inak

Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak.


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