Содержание

Эксперимент 4. Терменвокс

← Светильник с управляемой яркостью | Оглавление | Ночной светильник →

В этом эксперименте мы имитируем действие музыкального инструмента терменвокс: изменяем высоту звучания бесконтактным путем, больше или меньше закрывая от света фоторезистор.

Оригинальный инструмент был изобретён ещё в 1920 году, Львом Сергеевичем Терменом, человеком с непростой и насыщенной судьбой. А сейчас мы имеем возможность воспроизвести изобретение с помощью нехитрой электроники.

Прочтите перед выполнением

Список деталей для эксперимента

Принципиальная схема

Схема на макетке

Обратите внимание

Скетч

p040_thermenvox.ino
// даём имена для пинов с пьезопищалкой (англ. buzzer) и фото-
// резистором (англ. Light Dependent Resistor или просто LDR)
#define BUZZER_PIN  3
#define LDR_PIN     A0
 
void setup()
{
  // пин с пьезопищалкой — выход...
  pinMode(BUZZER_PIN, OUTPUT);
 
  // ...а все остальные пины являются входами изначально,
  // всякий раз при подаче питания или сбросе микроконтроллера.
  // Поэтому, на самом деле, нам совершенно необязательно
  // настраивать LDR_PIN в режим входа: он и так им является
}
 
void loop()
{
  int val, frequency;
 
  // считываем уровень освещённости так же, как для
  // потенциометра: в виде значения от 0 до 1023.
  val = analogRead(LDR_PIN);
 
  // рассчитываем частоту звучания пищалки в герцах (ноту),
  // используя функцию проекции (англ. map). Она отображает
  // значение из одного диапазона на другой, строя пропорцию.
  // В нашем случае [0; 1023] -> [3500; 4500]. Так мы получим
  // частоту от 3,5 до 4,5 кГц.
  frequency = map(val, 0, 1023, 3500, 4500);
 
  // заставляем пин с пищалкой «вибрировать», т.е. звучать
  // (англ. tone) на заданной частоте 20 миллисекунд. При
  // cледующих проходах loop, tone будет вызван снова и снова,
  // и на деле мы услышим непрерывный звук тональностью, которая
  // зависит от количества света, попадающего на фоторезистор
  tone(BUZZER_PIN, frequency, 20);
}

Пояснения к коду

Вопросы для проверки себя

  1. Каким сопротивлением должен обладать фоторезистор, чтобы на аналоговый вход было подано напряжение 1 В?
  2. Можем ли мы регулировать яркость светодиода, подключенного к 11-му порту, во время звучания пьезопищалки?
  3. Что изменится в работе терменвокса, если заменить резистор на 10 кОм резистором на 100 кОм? Попробуйте ответить без эксперимента. Затем отключите питание, замените резистор и проверьте.
  4. Каков будет результат вызова map(30,0,90,90,-90)?
  5. Как будет работать вызов tone без указания длительности звучания?
  6. Можно ли устроить полифоническое звучание с помощью функции tone?

Задания для самостоятельного решения

  1. Уберите из программы чтение датчика освещенности и пропищите азбукой Морзе позывной SOS: три точки, три тире, три точки
  2. Измените код программы так, чтобы с падением освещенности звук становился ниже (например, падал от 5 кГц до 2,5 кГц)
  3. Измените код программы так, чтобы звук терменвокса раздавался не непрерывно, а 10 раз в секунду с различимыми паузами

← Светильник с управляемой яркостью | Оглавление | Ночной светильник →