Керування звуком з допомогою датчика освітленості

Сенсори освітленості та наявності світла аналогові та з цифровим виходом, фотоелектричні елементи. Інфрачервоні давачі та світлодіоди
Відповісти
Аватар користувача
Arduino
Site Admin
Повідомлень: 98
З нами з: 16 травня 2017 18:18

Керування звуком з допомогою датчика освітленості

Повідомлення Arduino » 25 травня 2017 14:11

Суть прикладу в використанні фотоелектричного детектора світла, що змінює свої параметри під дією світла (зміна освітленості). Дані зчитуються з аналогового входу і перетворюються на сигнал що керує звуковою частотою п'єзодинаміка.
l4-termenvox1.jpg
Пристрій для керування звуковою частотою зовнішнім сенсором - терменвокс (змінюємо висоту звучання безконтактним шляхом)

Зверніть увагу що в даній схемі ми використовуємо резистор нового номіналу, подивіться таблицю маркування, щоб знайти резистор на 10 кОм або скористайтеся мультиметром.
Полярність фоторезистора, як і звичайного резистора, не грає ролі. Його можна встановлювати будь-якою стороною.
У даном збираєму прикладі простий варіант схеми включення пьезодінаміка Полярність пьезопіщалкі ролі не грає: ви можете підключати будь-яку з її ніжок до землі, будь-яку до порту мікроконтролера На Arduino Uno використання функції tone заважає використанню ШІМ на 3-му і 11 -м портах. Зате можна підключити її до одного з них Згадайте як влаштований дільник напруги: фоторезистор поміщається в позицію R2 - між аналоговим входом і землею. Так ми отримуємо резистивний фотосенсор.

// даємо імена для пінів з пєзопіщалки (англ. Buzzer) і фото-
// резистором (англ. Light Dependent Resistor або просто LDR)
#define BUZZER_PIN 3
#define LDR_PIN A0

void setup ( )
{
// пін з пєзопіщалки - вихід ...
pinMode ( BUZZER_PIN, OUTPUT ) ;

// ... а все решта Піни є входами спочатку,
// щоразу при подачі живлення або скиданні мікроконтролера.
// Тому, насправді, нам зовсім необов'язково
// налаштовувати LDR_PIN в режим входу: він і так їм є
}

недійсним цикл ( )
{
Int VAL, частоту ;

// зчитуємо рівень освітленості так само, як для
// потенціометра: у вигляді значення від 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 ) ;
}
Функція map(value, fromLow, fromHigh, toLow, toHigh) повертає цілочисельне значення з інтервалу [ toLow, toHigh], яке є пропорційним відображенням вмісту value з інтервалу [ fromLow, fromHigh]
Верхні межі map не обов'язково повинні бути більше нижніх і можуть бути негативними. Наприклад, значення з інтервалу [1, 10] можна відобразити в інтервал [10, -5]
Якщо при обчисленні значення map утворюється дробове значення, воно буде відкинуте, а не округлено
Функція map НЕ буде відкидати значення за межами зазначених діапазонів, а також встановлює масштаб їх по заданому правилу.
Якщо вам потрібно обмежити безліч допустимих значень, використовуйте функцію constrain(value, from, to), яка поверне:
value, Якщо це значення потрапляє в діапазон [ from, to]
from, Якщо value менше нього
to, Якщо value більше нього
Функція tone(pin, frequency, duration) змушує пєзопіщалку, підключену до порту pin, видавати звук висотою frequency герц протягом duration мілісекунд
Параметр durationне є обов'язковим. Якщо його не передати, звук включиться назавжди. Щоб його вимкнути, вам знадобиться функція noTone(pin). Їй потрібно передати номер порту з пищалки, яку потрібно вимкнути
Одночасно можна управляти тільки однієї пищалкою. Якщо під час звучання викликати tone для іншого порту, нічого не відбудеться.
Виклик tone для вже працюючого порту оновить частоту і тривалість звучання

Відповісти

Повернутись до “Датчики світла та освітленості”