Arduino:Примеры/Tone2: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 6 промежуточных версий 1 участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


==Звук, реагирующий на изменяющуюся информацию <ref>[http://www.arduino.cc/en/Tutorial/Tone2 Arduino - Tone2]</ref>==
=Звук, реагирующий на изменяющуюся информацию <ref>[http://www.arduino.cc/en/Tutorial/Tone2 Arduino - Tone2]</ref>=


Данный пример демонстрирует, как при помощи команды tone() генерировать звук, который будет реакцией на определенные значения, считанные на входном аналоговом контакте.
Данный пример демонстрирует, как при помощи команды [[Arduino:Справочник языка Arduino/Функции/Дополнительные функции ввода/вывода/tone()|tone()]] генерировать звук, который будет реакцией на определенные значения, считанные на входном аналоговом контакте.


==Необходимое оборудование==
==Необходимое оборудование==


* 8-омовый динамик;
* 8-омовый динамик - 1 шт.
* Фоторезистор;
* [[Фоторезистор]] - 1 шт.
* Резистор на 4700 ом;
* [[Резистор]] на [[4,7 кОм]] - 1 шт.
* Резистор на 100 ом;
* [[Резистор]] на [[100 Ом]] - 1 шт.
* Макетная плата Breadboard;
* [[Макетная плата]] - 1 шт.
* Провода-перемычки;
* Провода-перемычки;


== Цепь ==
== Цепь ==


[[File:arduino_speaker_photocell_bb.png]]
[[File:arduino_speaker_photocell_bb.png|center|frame|'''Рис. 1.''' [[Плата Arduino]] с подключенным [[пьезодинамик]]ом и [[фоторезистор]]ом|alt=Рис. 1. Плата Arduino с подключенным пьезодинамиком и фоторезистором]]


Подсоедините один контакт динамика к 9-ому цифровому контакту (через 100-омовый резистор), а другой – к «земле» (GND). Фоторезистор подсоедините к 5-вольтовому напряжению, а также к 0-ому аналоговому контакту и к «земле»  
Подсоедините один контакт динамика к 9-ому цифровому контакту (через 100-омовый [[резистор]]), а другой – к ''«земле»'' (GND). Фоторезистор подсоедините к 5-вольтовому напряжению, а также к 0-ому аналоговому контакту и к ''«земле»'' (через [[4,7-кОм]] [[резистор]]).  
(через 4700-омовый резистор).  


== Схема ==
== Схема ==


[[File:arduino_speaker_photocell_schem.png]]
[[File:arduino_speaker_photocell_schem.png|center|frame|'''Рис. 2.''' Схема подключения [[пьезодинамик]]а и [[фоторезистор]]а к [[плате Arduino]]|alt=Рис. 2. Схема подключения пьезодинамика и фоторезистора к плате Arduino]]


== Код ==
== Код ==


Для этого примера требуется очень простой код. Просто возьмем входные данные с аналогового контакта и разобьем так, чтобы превратить их в нотную гамму. Люди могут слышать звуки частотой от 20 до 20000 Гц, но для этого скетча подойдет и диапазон от 120 до 1500 Гц.  
Для этого примера требуется очень простой код. Просто возьмем входные данные с аналогового контакта и разобьем так, чтобы превратить их в нотную гамму. Люди могут слышать звуки частотой от 20 до 20000 Гц, но для этого скетча подойдет и диапазон от 120 до 1500 Гц.  
Для разбиения входных данных нужно знать их диапазон, и в построенной нами цепи входные данные варьируются от 400 до 1000. Чтобы преобразовать эти данные (идущие от сенсора) в звуковой диапазон, воспользуемся функцией map().
Для разбиения входных данных нужно знать их диапазон, и в построенной нами цепи входные данные варьируются от 400 до 1000. Чтобы преобразовать эти данные (идущие от сенсора) в звуковой диапазон, воспользуемся функцией map().


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
  Звук, реагирующий на изменяющуюся информацию
  Звук, реагирующий на изменяющуюся информацию
Строка 76: Строка 76:
</syntaxhighlight>
</syntaxhighlight>


==См.также==
=См.также=


# [[Arduino:Справочник языка Arduino/Типы данных/array|array]]
# [[Arduino:Справочник языка Arduino/Типы данных/array|array]]
Строка 86: Строка 86:
# [[Arduino:Примеры/Tone4|Tone4]]
# [[Arduino:Примеры/Tone4|Tone4]]


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


<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/Arduino}}
{{Навигационная таблица/Arduino библиотеки}}


[[Категория:Пример]]
[[Категория:Пример]]

Текущая версия от 12:34, 20 мая 2023

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


Звук, реагирующий на изменяющуюся информацию [1]

Данный пример демонстрирует, как при помощи команды tone() генерировать звук, который будет реакцией на определенные значения, считанные на входном аналоговом контакте.

Необходимое оборудование

Цепь

Рис. 1. Плата Arduino с подключенным пьезодинамиком и фоторезистором
Рис. 1. Плата Arduino с подключенным пьезодинамиком и фоторезистором

Подсоедините один контакт динамика к 9-ому цифровому контакту (через 100-омовый резистор), а другой – к «земле» (GND). Фоторезистор подсоедините к 5-вольтовому напряжению, а также к 0-ому аналоговому контакту и к «земле» (через 4,7-кОм резистор).

Схема

Рис. 2. Схема подключения пьезодинамика и фоторезистора к плате Arduino
Рис. 2. Схема подключения пьезодинамика и фоторезистора к плате Arduino

Код

Для этого примера требуется очень простой код. Просто возьмем входные данные с аналогового контакта и разобьем так, чтобы превратить их в нотную гамму. Люди могут слышать звуки частотой от 20 до 20000 Гц, но для этого скетча подойдет и диапазон от 120 до 1500 Гц.

Для разбиения входных данных нужно знать их диапазон, и в построенной нами цепи входные данные варьируются от 400 до 1000. Чтобы преобразовать эти данные (идущие от сенсора) в звуковой диапазон, воспользуемся функцией map().

/*
 Звук, реагирующий на изменяющуюся информацию

 Проигрывает звук, который меняется в зависимости от изменения данных на входном аналоговом контакте.
 
 Цепь:
 * 8-омовый динамик на 9-ом цифровом контакте
 * фоторезистор, подсоединенный 5 вольтам и 0-ому аналоговому контакту
 * 4700-омовый резистор, подсоединенный к «земле» и 0-ому аналоговому контакту
 
 Создан 21 января 2010,
 модифицирован 31 мая 2012 Томом Иго (Tom Igoe) по совету Майкла Флинна (Michael Flynn)

Этот пример кода не защищен авторским правом.
 
 http://arduino.cc/en/Tutorial/Tone2
 
 */


void setup() {
  // инициализируем последовательную передачу данных (только в целях отладки):
  Serial.begin(9600);
}

void loop() {
  // считываем данные с сенсора (т.е. с фоторезистора):
  int sensorReading = analogRead(A0);
  // выводим на Serial Monitor данные от сенсора, чтобы узнать их диапазон:
  Serial.println(sensorReading);
  // сопоставляем диапазон входных аналоговых данных
  // (в данном случае это 400-1000 от фоторезистора)
  // с выходными данными, т.е. со звуковым диапазоном (120-1500 Гц);
  // меняем максимальное и минимальное значения входных данных
  // в зависимости от данных, «пойманных» фоторезистором:
  int thisPitch = map(sensorReading, 400, 1000, 120, 1500);

  // проигрываем звук:
  tone(9, thisPitch, 10);
  delay(1);        // делаем задержку между считываниями – для стабильности программы
}

См.также

  1. array
  2. for
  3. tone()
  4. map()
  5. Tone
  6. Simple keyboard
  7. Tone4

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