В этом эксперименте мы имитируем действие музыкального инструмента терменвокс: изменяем высоту звучания бесконтактным путем, больше или меньше закрывая от света фоторезистор.
Оригинальный инструмент был изобретён ещё в 1920 году, Львом Сергеевичем Терменом, человеком с непростой и насыщенной судьбой. А сейчас мы имеем возможность воспроизвести изобретение с помощью нехитрой электроники.
// даём имена для пинов с пьезопищалкой (англ. 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 ) ;
}
wiki.amperka.ru