Оглавление:

Arduino - пьезо-трехкнопочное фортепиано: 4 шага
Arduino - пьезо-трехкнопочное фортепиано: 4 шага

Видео: Arduino - пьезо-трехкнопочное фортепиано: 4 шага

Видео: Arduino - пьезо-трехкнопочное фортепиано: 4 шага
Видео: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Ноябрь
Anonim
Image
Image

Трехкнопочное пианино - это проект для начинающих, имеющих некоторый опыт использования Arduino.

Я был непреднамеренно захвачен попыткой создать это, когда впервые играл с пьезозуммером. Это было ТАК громко! Пытаясь придумать различные способы сделать зуммер тише и попробовать разные частоты с помощью функций tone () и noTone (), я понял, что было бы интересно попробовать смешать пьезозуммер с другими моими любимыми компонентами моего Arduino. комплект: кнопки и потенциометр.

Необходимые материалы включают:

  • 1 Ардуино
  • 1 макетная плата
  • 1 USB-кабель
  • Провода перемычки (разные цвета)
  • 1 резистор 330 кОм
  • 1 пьезо-зуммер
  • 3 кнопки
  • 1 потенциометр

Шаг 1: пьезо-зуммер

Пьезо-зуммер
Пьезо-зуммер

Для начала установите пьезо на макетной плате Arduino. Одна его сторона (сторона с более короткой ногой) должна доходить до земли. Другая сторона (сторона с более длинной ножкой) должна быть подключена к контакту цифрового входа. Я решил подключить его к 8.

Шаг 2: нажмите кнопки

Нажмите на кнопки
Нажмите на кнопки
Нажмите на кнопки
Нажмите на кнопки

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

Шаг 3: потенциометр

Потенциометр
Потенциометр
Потенциометр
Потенциометр

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

Правая нога: отрицательный стержень (земля)

Средняя нога: аналоговый вывод 0

Левая нога: положительная полоса

Шаг 4: Код

При написании кода для этого проекта я сослался на информацию о нескольких конкретных типах функций:

тон ()

noTone () (Я не стал использовать это. Вместо этого я установил частоту на "0".)

карта()

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

Функцию tone () можно разбить на три части:

  1. Штифт (штифт, к которому подключен пьезозуммер)
  2. Частота (частота звука в герцах)
  3. Продолжительность (продолжительность звука в миллисекундах)

В основном это выглядит так: тон (пин, частота, длительность). Третий компонент (продолжительность) является необязательным, а два других необходимы для работы зуммера. «Частотная» составляющая функции тона - это то, что можно представить как «звук», производимый зуммером.

Вы также заметите, что в коде есть еще два фрагмента кода. Есть некоторые операторы if / else, настроенные для того, чтобы сообщить Arduino, что делать, если были нажаты разные кнопки, а также настроить его на «frequency = 0» в ситуациях, когда ни одна из кнопок не нажата. В операторах if / else функции map () используются для отображения масштаба потенциометра на набор частот. Их можно изменить! Поиграйте с разными значениями частоты, чтобы увидеть, какие звуки можно получить от пьезо.

Ознакомьтесь с кодом, который я использовал для создания трехкнопочного пианино, здесь или ниже.

int piezoPin = 8; // Устанавливаем контакт, подключенный к Piezo.

int sensorPin = 0; // Устанавливаем контакт, подключенный к датчику (потенциометру). int sensorValue = 0;

int button1 = 5; // Устанавливаем входные контакты, подключенные к кнопкам.

int button2 = 4; int button3 = 3;

int частота = 0;

const int delayTime = 500; // Устанавливаем константу для переменной времени задержки в функции tone ().

void setup () {

pinMode (button1, INPUT_PULLUP); pinMode (button2, INPUT_PULLUP); pinMode (button3, INPUT_PULLUP); }

void loop () {

sensorValue = analogRead (sensorPin); // Считываем датчик. // Сопоставляем различные значения потенциометра с набором частот для каждой из трех кнопок. если (digitalRead (button1) == LOW) {частота = карта (sensorValue, 0, 1023, 400, 499); } иначе, если (digitalRead (button2) == LOW) {частота = карта (sensorValue, 0, 1023, 500, 599); } иначе, если (digitalRead (button3) == LOW) {частота = карта (sensorValue, 0, 1023, 600, 699); } else {частота = 0; } тон (пьезопин, частота, время задержки); // Настраиваем функции tone () с переменными. }

Рекомендуемые: