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

Мелодия при включении

Короткая мелодия-приветствие на бузере при старте.

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

Задача

Проиграть последовательность тонов при включении как индикацию готовности.

Алгоритм

Массив полупериодов (нот) и длительностей; воспроизведение меандром на выводе бузера.

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

⇩ Скачать 40-startup-melody.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>
static void note(uint16_t half_us,uint16_t ms){
  uint32_t c=(uint32_t)ms*1000/(half_us*2);
  while(c--){ PORTD^=(1<<PD6); for(uint16_t i=0;i<half_us;i++) _delay_us(1); }
}
int main(void){
  DDRD|=(1<<PD6);
  uint16_t hp[]={190,150,120}; uint16_t du[]={150,150,250};
  for(uint8_t i=0;i<3;i++){ note(hp[i],du[i]); _delay_ms(40); }
  for(;;){}
}

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

Пояснения

Разные мелодии можно повесить на события (арм, дизарм, ошибка) для звуковой обратной связи.