Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Мини пианино

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

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


Ambox content.png Черновик


Мини пианино

Данный пример демонтирует построение небольшого пианино. При нажатии на одну из 5-ти кнопок будет воспроизводится одна из нот, пока вы не отпустите кнопку.

Необходимые компоненты

Монтажная схема

Соберите схему согласно монтажной схеме.

При подключении динамика к выводам Arduino необходимо использовать токоограничивающие резисторы. Каждый вывод Arduino может выдать ток не более 40 мА (0,04 А). Воспользовавшись законом Ома, вычислим минимальное сопротивление токоограничивающего резистора:

  • U = I * R;
  • R = U / I = 5 / 0,04 = 125 Ом;

Но т.к. динамик имеет также сопротивление(обмотка провода катушки электромагнита), для примера возьмем 8 Ом, то получим минимальное сопротивление токоограничивающего резистора равным:

  • R = 125 - 8 = 117 Ом;

Ближайший номинал резистора равен 150 Ом, его и будем использовать в нашей схеме.

Чтобы регулировать громкость звучания мелодии, воспользуемся переменным резистором на 10 кОм, включив его последовательно с подобранным токоограничивающим резистором. Обратите внимание, что мы используем только крайний и средний вывод потенциометра. Крайний вывод соединен с токоограничивающим резистором, а средний с одним из выводов динамика.

При повороте ручки потенциометра громкость воспроизведения будет изменяться вследствие изменения сопротивления цепи.

Arduino uno example piano 1.png

Код

  1. #define NOTE_C  262            // частота в Гц
  2. #define NOTE_D  294            // частота в Гц
  3. #define NOTE_E  330            // частота в Гц
  4. #define NOTE_G  392            // частота в Гц
  5. #define NOTE_A  440            // частота в Гц
  6.  
  7. #define SPEAKER 9              // к 9-му выводу подключаем динамик
  8.  
  9. #define BUTTON_C 7             // к 7-му выводу подключаем кнопку
  10. #define BUTTON_D 6             // к 6-му выводу подключаем кнопку
  11. #define BUTTON_E 5             // к 5-му выводу подключаем кнопку
  12. #define BUTTON_G 4             // к 4-му выводу подключаем кнопку
  13. #define BUTTON_A 3             // к 3-му выводу подключаем кнопку
  14.  
  15.  
  16. void setup()
  17. {
  18.  // Не требуется настройки
  19.  // функция tone() установит выводы как выходы
  20. }
  21.  
  22. void loop()
  23. {
  24.  while (digitalRead(BUTTON_C))
  25.   tone(SPEAKER, NOTE_C);
  26.  while(digitalRead(BUTTON_D))
  27.   tone(SPEAKER, NOTE_D);
  28.  while(digitalRead(BUTTON_E))
  29.   tone(SPEAKER, NOTE_E);
  30.  while(digitalRead(BUTTON_G))
  31.   tone(SPEAKER, NOTE_G);
  32.  while(digitalRead(BUTTON_A))
  33.   tone(SPEAKER, NOTE_A);
  34.  
  35.  // Прекращаем воспроизведение, если все кнопки были отпущены
  36.  noTone(SPEAKER);
  37. }

См.также

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