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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 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() генерировать звук, который будет реакцией на определенные значения, считанные на входном аналоговом контакте.
Данный пример демонстрирует, как при помощи команды tone() генерировать звук, который будет реакцией на определенные значения, считанные на входном аналоговом контакте.
Строка 9: Строка 9:
==Необходимое оборудование==
==Необходимое оборудование==


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


Строка 20: Строка 20:
[[File:arduino_speaker_photocell_bb.png]]
[[File:arduino_speaker_photocell_bb.png]]


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


== Схема ==
== Схема ==
Строка 30: Строка 29:


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


Строка 76: Строка 76:
</syntaxhighlight>
</syntaxhighlight>


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


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


==Внешние ссылки==
{{ads}}
 
=Внешние ссылки=


<references />
<references />

Версия от 12:06, 25 декабря 2021

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


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

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

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

Цепь

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

Схема

Код

Для этого примера требуется очень простой код. Просто возьмем входные данные с аналогового контакта и разобьем так, чтобы превратить их в нотную гамму. Люди могут слышать звуки частотой от 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

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