Arduino:Примеры/DTMFTest

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

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


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

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

Код

// Тональный сигнал

// https://ru.wikipedia.org/wiki/DTMF

// Чтобы совместить выходные данные для сигналов и выходные данные 
// от маленького динамика (например, на 8 ом и выше), воспользуйтесь 
// резисторами на 1 кОм. Подключите их к каждому выходному контакту, 
// а затем соедините вместе на динамике. Не забудьте подключить другую 
// сторону динамика к «земле»!

#include <Tone.h>

Tone freq1;
Tone freq2;

const int DTMF_freq1[] = { 1336, 1209, 1336, 1477, 1209, 1336, 1477, 1209, 1336, 1477 };
const int DTMF_freq2[] = {  941,  697,  697,  697,  770,  770,  770,  852,  852,  852 };

void setup()
{
  Serial.begin(9600);
  freq1.begin(11);
  freq2.begin(12);
}

void playDTMF(uint8_t number, long duration)
{
  freq1.play(DTMF_freq1[number], duration);
  freq2.play(DTMF_freq2[number], duration);
}


void loop()
{
  int i;
  uint8_t phone_number[] = { 8, 6, 7, 5, 3, 0 ,9 };

  for(i = 0; i < sizeof(phone_number); i ++)
  {
    Serial.print(phone_number[i], 10);
    Serial.print(' ');
    playDTMF(phone_number[i], 500);
    delay(600);
  }
  
  Serial.println();
  delay(4000);
}

См.также

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