Перейти к содержанию

Цель работы:

Дальнейшее ознакомление с работой пьезопищалки и кнопки, а так- же и использование полученных знаний и навыков для создания программы по управлению тональностью звучания пьезопищалки с помощью кнопок.

Теоретическая часть

Звук — физическое явление, представляющее собой распространение в виде упругих волн механических колебаний в твёрдой, жидкой или газообразной среде. В узком смысле, под звуком имеют в виду эти механические колебания, рассматриваемые с точки зрения их восприятия органами чувств животных и человека.

Как и любая волна, звук обычно описывается двумя основными характеристиками: амплитудой и частотой. Амплитуда характеризует громкость звука, а частота определяет тон, высоту. Обычный человек способен слышать звуковые колебания в диапазоне частот от 16—20 Гц до 15—20 кГц. Звук ниже диапазона слышимости человека называют инфразвуком; а выше: до 1 ГГц, — ультразвуком, от 1 ГГц — гиперзвуком.

Звук характеризуется множеством параметров, такими как частота, амплитуда, коэффициент затухания, характеризующий быстроту убывания амплитуды со временем, и громкость, зависящая от звукового давления.

Скорость звука — скорость распространения звуковых волн в среде. Как правило, скорость звука в газах меньше, чем в жидкостях. Скорость звука в воздухе составляет 340—344 м/с.

Громкость звука — субъективное восприятие силы звука. Громкость звука сложным образом зависит от эффективного звукового давления, частоты и формы колебаний, а высота звука — не только от частоты, но и от величины звукового давления.

Характеристики звука:

  1. Частота, T [Гц]
  2. Амплитуда, А [м]
  3. Коэффициент затухания, S [1/c]
  4. Громкость, [дБ]

Практическая часть

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

Схема подключения:

К данной рабочей программе используется следующая схема подключения (Рисунок 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);

}

}

}

Список контрольных вопросов:

  1. Что такое звук?
  2. Какой тип звука человек может слышать?
  3. С какой скоростью распространяется звук в воздухе?
  4. Что такое громкость?
  5. От чего зависит громкость звука?
  6. Чем характеризуется звук?
  7. Что такое коэффициент затухания?
  8. В чём измеряется частота?
  9. В чём измеряется громкость?
  10. Как работает функция digitalRead?
  11. Какие параметры она имеет?
  12. Что возвращает функция digitalRead?

Список дополнительных задач:

  1. Изменить частоту выдаваемого звука.
  2. Подключить большее количество кнопок.
  3. Подключить светодиоды и изменить программу так, чтобы вместе со звуком определенной тональности загорался один из светодиодов.

Center-nav

← Назад | Оглавление | Вперёд →