Arduino:Примеры/DTMFTest

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

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


Тональный сигнал[1]

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

Код

 1 // Тональный сигнал
 2 
 3 // https://ru.wikipedia.org/wiki/DTMF
 4 
 5 // Чтобы совместить выходные данные для сигналов и выходные данные 
 6 // от маленького динамика (например, на 8 ом и выше), воспользуйтесь 
 7 // резисторами на 1 кОм. Подключите их к каждому выходному контакту, 
 8 // а затем соедините вместе на динамике. Не забудьте подключить другую 
 9 // сторону динамика к «земле»!
10 
11 #include <Tone.h>
12 
13 Tone freq1;
14 Tone freq2;
15 
16 const int DTMF_freq1[] = { 1336, 1209, 1336, 1477, 1209, 1336, 1477, 1209, 1336, 1477 };
17 const int DTMF_freq2[] = {  941,  697,  697,  697,  770,  770,  770,  852,  852,  852 };
18 
19 void setup()
20 {
21   Serial.begin(9600);
22   freq1.begin(11);
23   freq2.begin(12);
24 }
25 
26 void playDTMF(uint8_t number, long duration)
27 {
28   freq1.play(DTMF_freq1[number], duration);
29   freq2.play(DTMF_freq2[number], duration);
30 }
31 
32 
33 void loop()
34 {
35   int i;
36   uint8_t phone_number[] = { 8, 6, 7, 5, 3, 0 ,9 };
37 
38   for(i = 0; i < sizeof(phone_number); i ++)
39   {
40     Serial.print(phone_number[i], 10);
41     Serial.print(' ');
42     playDTMF(phone_number[i], 500);
43     delay(600);
44   }
45   
46   Serial.println();
47   delay(4000);
48 }

См.также

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