Цель работы:
Дальнейшее ознакомление с работой пьезопищалки и кнопки, а так- же и использование полученных знаний и навыков для создания программы по управлению тональностью звучания пьезопищалки с помощью кнопок.
Теоретическая часть
Звук — физическое явление, представляющее собой распространение в виде упругих волн механических колебаний в твёрдой, жидкой или газообразной среде. В узком смысле, под звуком имеют в виду эти механические колебания, рассматриваемые с точки зрения их восприятия органами чувств животных и человека.
Как и любая волна, звук обычно описывается двумя основными характеристиками: амплитудой и частотой. Амплитуда характеризует громкость звука, а частота определяет тон, высоту. Обычный человек способен слышать звуковые колебания в диапазоне частот от 16—20 Гц до 15—20 кГц. Звук ниже диапазона слышимости человека называют инфразвуком; а выше: до 1 ГГц, — ультразвуком, от 1 ГГц — гиперзвуком.
Звук характеризуется множеством параметров, такими как частота, амплитуда, коэффициент затухания, характеризующий быстроту убывания амплитуды со временем, и громкость, зависящая от звукового давления.
Скорость звука — скорость распространения звуковых волн в среде. Как правило, скорость звука в газах меньше, чем в жидкостях. Скорость звука в воздухе составляет 340—344 м/с.
Громкость звука — субъективное восприятие силы звука. Громкость звука сложным образом зависит от эффективного звукового давления, частоты и формы колебаний, а высота звука — не только от частоты, но и от величины звукового давления.
Характеристики звука:
- Частота, T [Гц]
- Амплитуда, А [м]
- Коэффициент затухания, S [1/c]
- Громкость, [дБ]
Практическая часть
В данной лабораторной работе необходимо разработать программу, которая будет управлять тональностью звучания пьезопищалки с помощью кнопок. Для этого необходимо необходимо работать с цифровыми сигналами.
Схема подключения:
К данной рабочей программе используется следующая схема подключения (Рисунок 8.1). Для реализации проекта потребуются следующие компоненты: макетная плата, резистор на 10 кОм (3 шт), тактовая кнопка (3 шт), пьезопищалка (1 шт) и провода.
Рисунок 8.1. Схема подключения
После сборки схема имеет следующий вид (Рисунок 8.2):
Рисунок 8.2. Внешний вид схемы после сборки
Рабочая программа:
// пин с пьезопищалкой
#define buz_pin 13
// первый пин с клавишей
#define first_pin 8
// общее количество клавиш
#define button_count 3
void setup()
{
pinMode(buz_pin, OUTPUT);
}
void loop()
{
// Создание цикла для того, чтобы управлять кнопками
for (int i = 0; i < button_count; ++i)
{
// Вычисление кнопки, которая была нажата
int buttonPin = i + first_pin;
// Считывание значения с кнопки.
boolean buttonUp = digitalRead(buttonPin);
// Проверка условия нажатия кнопки.
if (!buttonUp) {
// Расчет высоты ноты в герцах
// в зависимости от нажатой клавиши.
// Получение значения 3500, 4000 или 4500
int frequency = 3500 + i * 500;
// Пьезопищалка будет звучать в течение
// 50 миллисекунд. Если клавиша зажата,
// то издаётся непрерывный звук
tone(buz_pin, frequency, 50);
}
}
}
Помимо этого, микроконтроллер позволяет воспользоваться уже встроенными в плату кнопками. Всего на плате имеется шесть кнопок. В коде программы идёт обращение к первой встроенной кнопке, подключенной к 35 пину.
Схема подключения:
К данной рабочей программе используется следующая схема подключения (Рисунок 8.3). Для реализации проекта потребуются следующие компоненты: макетная плата, пьезопищалка (1 шт) и провода.
Рисунок 8.3. Схема подключения
После сборки схема имеет следующий вид (Рисунок 8.4):
Рисунок 8.4. Внешний вид схемы после сборки
Рабочая программа:
// пин с пьезопищалкой
#define buz_pin 12
// первый пин с клавишей
#define first_pin 30
// общее количество клавиш
#define button_count 3
void setup()
{
pinMode(buz_pin, OUTPUT);
}
void loop()
{
// Создание цикла для того, чтобы управлять кнопками.
for (int i = 0; i < button_count; ++i)
{
// Вычисление кнопки, которая была нажата.
int buttonPin = i + first_pin;
// Считывание значения с кнопки.
boolean buttonUp = digitalRead(buttonPin);
// Проверка условия нажатия кнопки.
if (!buttonUp) {
// Расчет высоты ноты в герцах,
// в зависимости от нажатой клавиши.
// Получение значения 3500, 4000 или 4500
int frequency = 3500 + i * 500;
// Пьезопищалка будет звучать в течение
// 50 миллисекунд. Если клавиша зажата,
// то издаётся непрерывный звук
tone(buz_pin, frequency, 50);
}
}
}
Список контрольных вопросов:
- Что такое звук?
- Какой тип звука человек может слышать?
- С какой скоростью распространяется звук в воздухе?
- Что такое громкость?
- От чего зависит громкость звука?
- Чем характеризуется звук?
- Что такое коэффициент затухания?
- В чём измеряется частота?
- В чём измеряется громкость?
- Как работает функция digitalRead?
- Какие параметры она имеет?
- Что возвращает функция digitalRead?
Список дополнительных задач:
- Изменить частоту выдаваемого звука.
- Подключить большее количество кнопок.
- Подключить светодиоды и изменить программу так, чтобы вместе со звуком определенной тональности загорался один из светодиодов.
Center-nav