Пианино на Ардуино. Проекты. Ардуино.

Ардуино лего пианино
Пианино на Аруино и лего
Пианино на Аруино и лего

Привет! В предыдущих уроках мы рассмотрели возможности Ардуино по воспроизведению звука. Поэтому, сегодня используем эти возможности, чтобы создать проект настоящего пианино на Ардуино.

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

Звук в ардуино. Урок 7. Ардуино

Для выполнения этого урока нам понадобятся

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • 7 кнопки
  • 8 резисторов номиналом 10 кОм
  • 1 резистор номиналом 150 Ом
  • Динамик 8 Ом
  • Лего
  • Кабель USB

Корпус из Лего

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

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

Соберем принципиальную схему, до того как прятать все в корпус, чтобы убедиться, что программа и компоненты работают.

Готовое лего пианино
Готовое лего пианино

Программа и схема пианино

Принципиальная схема подключения пианино
Принципиальная схема подключения пианино

Прежде всего, подключим динамик через сопротивление к 9 контакту ардуино. Все кнопки соответственно подключим к контактам со 2 по 8. Второй контакт кнопки подключим к шине 5 вольт. И еще один контакт подключим к земле последовательно с сопротивлением.

Внесем небольшие изменения в программу по сравнению с предыдущим уроком так, чтобы на функцию tone() передавалась определенная частота, если нажата соответствующая кнопка.

while (digitalRead(BUTTON_A))
tone(SPEAKER, NOTE_A);

Кроме того, не забудем объявить все необходимые константы и переменные.

#define NOTE_C 262 //Hz
#define NOTE_D 294 //Hz
#define NOTE_E 330 //Hz
#define NOTE_F 349 //Hz
#define NOTE_G 392 //Hz
#define NOTE_A 440 //Hz
#define NOTE_B 493 //Hz

const int SPEAKER=9; //Динамик на 9 пине

const int BUTTON_C=8;
const int BUTTON_D=7;
const int BUTTON_E=6;
const int BUTTON_F=5;
const int BUTTON_G=4;
const int BUTTON_A=3;
const int BUTTON_B=2;

Полный текст программы

// Набор нот для имперского марша
#define NOTE_C 392 //Hz
#define NOTE_D 311 //Hz
#define NOTE_E 466 //Hz
#define NOTE_F 587 //Hz
#define NOTE_G 622 //Hz
#define NOTE_A 369 //Hz
#define NOTE_B 493 //Hz

const int SPEAKER=9; //Динамик на 9 пине

const int BUTTON_C=8;
const int BUTTON_D=7;
const int BUTTON_E=6;
const int BUTTON_F=5;
const int BUTTON_G=4;
const int BUTTON_A=3;
const int BUTTON_B=2;

void setup(){
}

void loop(){
while (digitalRead(BUTTON_C))
tone(SPEAKER, NOTE_C);
while(digitalRead(BUTTON_D))
tone(SPEAKER, NOTE_D);
while(digitalRead(BUTTON_E))
tone(SPEAKER, NOTE_E);
while(digitalRead(BUTTON_G))
tone(SPEAKER, NOTE_G);
while(digitalRead(BUTTON_A))
tone(SPEAKER, NOTE_A);
while(digitalRead(BUTTON_B))
tone(SPEAKER, NOTE_B);
while(digitalRead(BUTTON_F))
tone(SPEAKER, NOTE_F);

noTone(SPEAKER); //Если ни одна кнопка не нажата
}

Пианино на Ардуино

Теперь постараемся сделать корпус для нашей схемы. В результате, получим нечто похожее на настоящее пианино. На макетной плате у нас получилось большое количество проводов, которые нужно спрятать. Кроме того, необходимо убрать плату Ардуино внутрь корпуса. Но, с другой стороны, оставить место для динамика.

Безусловно, мы не сможем получить звук как у настоящего пианино, но результат все равно завораживающий.

Добавить комментарий

Ваш адрес email не будет опубликован.