Arduino:Примеры/EsploraMusic

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Музыка на Esplora[1]

Этот пример показывает, как проигрывать ноты на зуммере, встроенном в Arduino Esplora. Зуммеры могут генерировать различные аудиосигналы в слышимых частотных диапазонах, и нота – это как раз аудиосигнал на определенной частоте. Если вы знаете частоты нот, которые хотите проиграть, то можете начинать составлять собственную мелодию.

В этом примере вы будете двигать слайдер линейного потенциометра, чтобы настроиться на ту или иную ноту, а затем нажимать на кнопку, чтобы эти ноты проигрывать.

Необходимое оборудование

  • Плата Arduino Esplora;

Цепь

Для этого примера нужна только Arduino Esplora, которую надо подключить к компьютеру через USB-кабель.

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

Код

Внутри массива имеется 13 нот. Вы можете выбрать необходимую ноту, меняя позицию слайдера на линейном потенциометре.

Представьте, что длина потенциометра разбита на 13 секций, а каждая секция соответствует тому или иному значению в массиве note[]. Эти значения, в свою очередь, соответствуют 13 нотам, и вы, перемещая слайдер, выбираете определенное значение в массиве, соответствующее частоте той или иной ноты.

Чтобы проиграть ноту, нажмите на нижнюю кнопку Esplora. Звук будет звучать, пока вы будете нажимать на кнопку.

/*

Музыка на Esplora

Этот скетч превращает Esplora в простой музыкальный инструмент. 
Чтобы увидеть его в работе, двигайте слайдер потенциометра и нажимайте на кнопку «Вниз».

Создан 22 ноября 2012 Энрико Гуэли (Enrico Gueli, enrico.gueli@gmail.com),
модифицирован 22 декабря 2012 Томом Иго (Tom Igoe).

*/

#include <Esplora.h>

// Это частоты нот от среднего «до» до среднего «до» октавой выше:
const int note[] = { 
  262, // до
  277, // до-диез
  294, // ре
  311, // ре-диез
  330, // ми
  349, // фа
  370, // фа-диез
  392, // соль
  415, // соль-диез
  440, // ля
  466, // ля-диез
  494, // си
  523  // до в следующей октаве
};

void setup() {
}

void loop() {
  // Считываем значение кнопки SWITCH_DOWN (т.е. кнопки, отвечающей за перемещение вниз). 
  // Если значение равно LOW, то проигрываем ноту:
  if (Esplora.readButton(SWITCH_DOWN) == LOW) {
    int slider = Esplora.readSlider();

    // Используем функцию map() для того, чтобы подогнать диапазон линейного потенциометра
    // под имеющийся у нас нотный диапазон:
    byte thisNote = map(slider, 0, 1023, 0, 13);
    // Проигрываем ноту, соответствующую позиции потенциометра:
    Esplora.tone(note[thisNote]);
  }
  else {
    // Если кнопка не нажата, выключаем проигрывание ноты:
    Esplora.noTone();
  }
}

См.также

  1. Esplora.readSlider()
  2. Esplora.readButton()
  3. Esplora.tone()
  4. Esplora.noTone()

Внешние ссылки