AFON // радиотехник affonya@mail.ru
← Все проекты для дронов

Маяк SOS

Световой/звуковой маяк, передающий SOS кодом Морзе.

DMC.41 · Индикация и сигнал · ATmega328P

Задача

Передавать сигнал SOS (··· ——— ···) светодиодом и бузером циклически.

Алгоритм

Точка/тире = разная длительность включения; между символами и группами — паузы по правилам Морзе.

Исходный код (C, avr-gcc)

⇩ Скачать 41-sos-beacon.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>
#define U 200
static void sig(uint16_t ms){ PORTB|=(1<<PB5);PORTD|=(1<<PD6); for(uint16_t i=0;i<ms;i++)_delay_ms(1); PORTB&=~(1<<PB5);PORTD&=~(1<<PD6); _delay_ms(U); }
int main(void){
  DDRB|=(1<<PB5); DDRD|=(1<<PD6);
  for(;;){
    for(uint8_t i=0;i<3;i++) sig(U);        // S: · · ·
    for(uint8_t i=0;i<3;i++) sig(3*U);      // O: — — —
    for(uint8_t i=0;i<3;i++) sig(U);        // S
    _delay_ms(7*U);
  }
}

Сборка: avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os файл.c -o файл.elf

Пояснения

Универсальный аварийный сигнал для поиска и привлечения внимания. Единица времени задаёт скорость.