SOS maják: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
| Riadok 40: | Riadok 40: | ||
#include <util/delay.h> | #include <util/delay.h> | ||
// Definícia LED na porte B, pin 5 | // 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.

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.

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.

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.

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.