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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 2 промежуточные версии 1 участника)
Строка 18: Строка 18:
== Цепь ==
== Цепь ==


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


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


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


== Код ==
== Код ==
Строка 32: Строка 32:
Для разбиения входных данных нужно знать их диапазон, и в построенной нами цепи входные данные варьируются от 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">
/*
/*
  Звук, реагирующий на изменяющуюся информацию
  Звук, реагирующий на изменяющуюся информацию
Строка 85: Строка 85:
# [[Arduino:Примеры/Tone3|Simple keyboard]]
# [[Arduino:Примеры/Tone3|Simple keyboard]]
# [[Arduino:Примеры/Tone4|Tone4]]
# [[Arduino:Примеры/Tone4|Tone4]]
{{ads}}


=Внешние ссылки=
=Внешние ссылки=
Строка 92: Строка 90:
<references />
<references />


{{Навигационная таблица/Справочник языка Arduino}}
{{Навигационная таблица/Портал/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

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