Arduino:Примеры/ToneTest

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

Перевод: Максим Кузьмин (Cubewriter) Перевел 364226 статей для сайта.</br>Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Одновременное проигрывание нот[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 }

См.также

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