#1 2014-06-13 14:57:09

Zinder
Участник
Зарегистрирован: 2014-06-13
Сообщений: 1

Проигрывание музыки на Ардуино

Интересует возможность проиграть несложной музычки на Ардуине, никто не сталкивался? Речь не о качественном аудио, а об уровне звонков в первых мобилках.

#2 2014-06-13 19:11:59

Alexa
Гость

Re: Проигрывание музыки на Ардуино

Вообще для этого используется функция tone(pin), подробнее тут. Мелодии надо искать в инете или писать самому. Вот сайт, на котором выкладывают уже кодированные мелодии и описывают как их использовать (вставкой двух массивов в стандартный скетч из примеров Digital - ToneMelody.ino). Но мелодий на этом сайте немного, но Хэппи бездей и Мери кристмас есть smile

#3 2014-09-21 08:20:35

Дундич
Участник
Зарегистрирован: 2014-09-21
Сообщений: 1

Re: Проигрывание музыки на Ардуино

Подскажите пожалуйста, что настройках таймер-счетчика в моей программе не так. Настройки срисовал максимально возможно с ардуиновского музыкального примера, но в ардуино дуе не могу включить прерывания. В программе считываю длительность входных импульсов при любом перепаде входного импульса. Изначально программу писал для 328 атмеги, она заработала, но для моих целей микросхема слабовата.
volatile static int32_t counter1;                         /* Переменная - текущее показание счетчика 1 */

// Объявляем таймер-счетчик 0 и его канал 1
#define WORK_TIMER TC0
#define INPUT_CHNL 1
#define INPUT_IRQ TC1_IRQn

static Tc *chTC = WORK_TIMER;
static uint32_t chNo = INPUT_CHNL;
static uint32_t in_pin;                                /* Задаем A7 пин ардуино порт PA2 in_pin - 85 вывод */

// Настраиваем 1 канал: предделитель тактовой частоты 32, при изменении уровня входного импульса запись счетчика в регистр А
void set_timer1 (uint32_t ulPin) {
  pmc_set_writeprotect(false);
  pmc_enable_periph_clk((uint32_t)INPUT_IRQ);
  TC_Configure(chTC, chNo,
            TC_CMR_TCCLKS_TIMER_CLOCK3 |
            TC_CMR_LDRA_EDGE);
            chTC->TC_CHANNEL[chNo].TC_IER=TC_IER_LDRAS;
            chTC->TC_CHANNEL[chNo].TC_IDR=~TC_IER_LDRAS;
            NVIC_EnableIRQ(INPUT_IRQ);
in_pin = ulPin;
// Выставили A7 пин ардуино порт PA2 на ввод
pinMode (in_pin, INPUT);
}



void setup() {
  // put your setup code here, to run once:
set_timer1 (A7);
}

void loop() {
  // put your main code here, to run repeatedly:

}

void TC1_Handler (void) {
TC_GetStatus(TC0, 1);
TC_Stop(chTC, chNo);
counter1 = TC0->TC_CHANNEL[1].TC_RA;
TC_Start(chTC, chNo);
}

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела