У цьому проекті ми збираємося створити розвагу за допомогою Arduino. Ми всі маємо звичку натискати на стіл чи ручку, щоб створити будь-яку довільну музику. Звичайно, це не може розглядатися як хороший манер, але нам усім приємно це робити хоча б раз. Тому я думав підняти його на наступний рівень, використовуючи здатність Arduino відтворювати тони. Після того, як ви побудуєте цей проект, ви зможете генерувати тони, натискаючи пальцями на що-небудь провідне і створювати власні ритми, подібні до гри на фортепіано на долоні. Звучить круто, так що, давайте побудуємо його.
Необхідні компоненти:
Матеріали, необхідні для цього проекту, перелічені нижче, не обов’язково дотримуватися їх. Після того, як ви захопите концепцію, ви можете використовувати свій власний спосіб її побудови.
- Arduini Pro Mini
- Спікер Peizo
- Датчик гнучкості
- Пальчикові рукавички
- 10K резистори
- BC547 Транзистори
- 9 В акумулятор
Електрична схема та пояснення:
Принципова схема даного пальмового піаніно Arduino показана нижче.
Проект використовує в цілому чотири датчика, тобто два датчики гнучкості та дві пари Дарлінгтона, які діють як сенсорний датчик. Ми також використали два резистори R1 та R2, що мають значення 10k, кожен, який буде діяти як резистор, що падає, для датчика Flex. Тут датчик Flex використовується для генерування трьох різних тонів одним пальцем залежно від того, наскільки він зігнувся. Тож ми можемо видавати 6 звуків двома пальцями. Дізнайтеся тут про датчик Flex.
Пара Дарлінгтон:
Перш ніж продовжувати, важливо знати, що таке Дарлінгтон і як саме він працює у нашому проекті. Пару Дарлінгтона можна визначити як два біполярні транзистори, з'єднані таким чином, що струм, посилений першим, додатково посилюється другим транзистором. Пара Дарлінгтон зображена на зображенні нижче:
Як показано вище, ми використовували два транзистори BC547, колектори яких зв’язані для збору, а випромінювач першого транзистора пов’язаний з базою другого транзистора. Ця схема діє як підсилювач з коефіцієнтом підсилення, тобто будь-якого малого сигналу, поданого на базу першого транзистора, достатньо, щоб змістити базу другого транзистора. Наше тіло діє тут як земля, тому кожен раз, коли ми торкаємось основи транзистора, другий транзистор стає упередженим. Використовуючи це на свою користь, ми створили сенсорний датчик для цього проекту.
Виводи No 2 і 3 - це виводи переривання на Arduino, які будуть витягуватися високо за допомогою внутрішніх підтягуючих резисторів, а потім ці висновки будуть утримуватися на землі, коли перемикач Дарлінгтона закриється. Таким чином, кожного разу, коли ми торкаємося дроту (від основи 1- го транзистора), переривання буде спрацьовувати з Arduino.
За допомогою двох пальців можна створити лише два типи тонів, отже, я також додав датчик гнучкості, який змінить тон залежно від того, наскільки він зігнутий. Я запрограмував створювати три різних тони на палець залежно від того, наскільки палець (датчик згинання) зігнутий. Ви можете збільшити число, якщо хочете, щоб більше кінчиків пальців було більше.
Я зробив повну дошку на дошці, щоб вона легко лягала мені на долоні, але ви можете використовувати і макет. Просто переконайтеся, що ваше тіло в якийсь момент торкається землі схеми. Як тільки ви припаяєте все, це повинно виглядати приблизно так
Я використовував дві пальчикові рукавички, щоб закріпити дроти від пари Дарлінгтона та датчика гнучкості в такому положенні, як показано вище. Ви можете придумати власну (краще, якщо це можливо) ідею, щоб закріпити їх на місці, поки ви граєте свої тони.
Програмування Arduino:
Програма для цього Arduino Tap Tone Generator є досить прямою. Нам просто потрібно звернути увагу на переривання проводів Дарлінгтона, і якщо вони знайдені, ми повинні відтворити тон, який залежить від того, наскільки гнучкий датчик гнут. Повний код наведено в кінці цього допису, але я пояснив кілька важливих фрагментів нижче.
Примітка: Ця програма працює за допомогою бібліотеки “pitches.h”. Тож переконайтеся, що ви додали заголовочний файл до своєї програми перед тим, як скомпілювати його. Завантажити файл заголовка pitches.h можна тут.
У функції налаштування ми ініціалізуємо висновки 2 і 3 як вхідні з підтягуючими резисторами. Ми також оголошуємо їх як виводи переривання і виконуємо tone1 (), коли є переривання на виводі 2, і функцію tone2 (), коли є переривання на 3 -му виводі. Ці переривання будуть спрацьовувати, коли ці шпильки стануть НИЗКИМИ із свого витягнутого стану.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Усередині функції петлі ми постійно перевіряємо, наскільки згинається датчик гнучкості. Наприклад, мій FlexSensor 1 давав значення близько 200, коли залишався рівним, і опускався аж до 130, коли я згинав його до максимуму, тому я відобразив значення від 200 до 130 як 1 до 3, оскільки мені доведеться грати в 3 різних типи тонів. Вам потрібно налаштувати ці два рядки на основі значень датчика Flex і кількості тонів.
недійсний цикл () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Складіть карту зі своїми власними значеннями на основі вашого датчика гнучкості flexSensor2 = map (analogRead (A1), 170,185,1,3); // Складіть карту зі своїми власними значеннями на основі датчика гнучкості}
Як ми вже бачили раніше, функція tone1 () буде виконана, коли на контакті 2 буде виявлено переривання. Що відбувається всередині функції tone1 () , показано вище. Ми розглядаємо значення FlexSensor1 і відтворюємо тон на основі значення flexSesnor. Сигнали будуть відтворюватися за допомогою функції Arduino Tone. Ми пояснили функцію tone () у нашому попередньому проекті.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); інакше якщо (flexSensor1 == 2) тон (8, ПРИМІТКА_A3,50); інакше if (flexSensor1 == 3) tone (8, NOTE_G4,50); інший тон (8, ПРИМІТКА_D4,50); }
Нижній рядок використовується для відтворення тону. Ви можете відтворити будь-який тон, який доступний у файлі заголовка “pitches.h”. Наприклад, у наведеному вище рядку відтворюється NOTE_A3 на штифті протягом 50 мілі секунд.
тон (8, ПРИМІТКА_A3,50); // тон (PinNum, ім'я ноти, тривалість);
Робоча:
Коли ваше обладнання буде готове, завантажте код і закріпіть його на пальцях. Переконайтеся, що ваше тіло в якийсь момент торкається землі ланцюга. Тепер просто торкніться будь-якого провідного матеріалу або свого тіла, і ви зможете почути відповідний тон. Ви можете відтворювати власну мелодію або музику, натискаючи з різними інтервалами та різними позиціями.
Відео нижче показує повний робочі Кі проекту. Сподіваюся, вам сподобалось будувати проект, будь-які пропозиції чи запитання можна розмістити у розділі коментарів нижче. Також перевірте наш проект Arduino Audio Player та Arduino Tone Generator Project.