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

Arduino:Примеры/ToneTest

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Одновременное проигрывание нот[1]

Это скетч для библиотеки Tone, который демонстрирует, как при помощи платы Arduino одновременно проигрывать через динамик несколько нот. Нужные ноты присылаются пользователем через последовательный порт.

Код

  1. // Одновременное проигрывание нот
  2.  
  3. // Чтобы совместить выходные данные для сигналов и выходные данные 
  4. // от маленького динамика (например, на 8 ом и выше), воспользуйтесь 
  5. // резисторами на 1 кОм. Подключите их к каждому выходному контакту, 
  6. // а затем соедините вместе на динамике. Не забудьте подключить другую 
  7. // сторону динамика к «земле»! 
  8.  
  9. // Этот пример проигрывает ноты от «a» (ля) до «g» (соль), присланные
  10. // через последовательный порт. Буквы «s» останавливает проигрывание
  11. // текущей ноты. Для второй октавы используйте заглавные буквы.
  12.  
  13. #include <Tone.h>
  14.  
  15. int notes[] = { NOTE_A3,
  16.                 NOTE_B3,
  17.                 NOTE_C4,
  18.                 NOTE_D4,
  19.                 NOTE_E4,
  20.                 NOTE_F4,
  21.                 NOTE_G4 };
  22.  
  23. // ноты можно задать в массиве:
  24. Tone notePlayer[2];
  25.  
  26. void setup(void)
  27. {
  28.   Serial.begin(9600);
  29.   notePlayer[0].begin(11);
  30.   notePlayer[1].begin(12);
  31. }
  32.  
  33. void loop(void)
  34. {
  35.   char c;
  36.  
  37.   if(Serial.available())
  38.   {
  39.     c = Serial.read();
  40.  
  41.     switch(c)
  42.     {
  43.       case 'a'...'g':
  44.         notePlayer[0].play(notes[c - 'a']);
  45.         Serial.println(notes[c - 'a']);
  46.         break;
  47.       case 's':
  48.         notePlayer[0].stop();
  49.         break;
  50.  
  51.       case 'A'...'G':
  52.         notePlayer[1].play(notes[c - 'A']);
  53.         Serial.println(notes[c - 'A']);
  54.         break;
  55.       case 'S':
  56.         notePlayer[1].stop();
  57.         break;
  58.  
  59.       default:
  60.         notePlayer[1].stop();
  61.         notePlayer[0].play(NOTE_B2);
  62.         delay(300);
  63.         notePlayer[0].stop();
  64.         delay(100);
  65.         notePlayer[1].play(NOTE_B2);
  66.         delay(300);
  67.         notePlayer[1].stop();
  68.         break;
  69.     }
  70.   }
  71. }

См.также

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

  1. code.google.com - ToneTest.pde