В този проект ще изградим забавление с помощта на Arduino. Всички имаме този навик да докосваме маса или писалка за създаване на произволна музика. Разбира се, това може да не се счита за добър маниер, но на всички ни е приятно да го правим поне веднъж. Затова си помислих да го пренеса на следващото ниво, като използвам способността на Arduino да възпроизвежда тонове. След като изградите този проект, ще можете да генерирате тонове, като потупвате пръстите си по нещо проводящо и създавате свои собствени ритми, като да свирите на пиано на дланта си. Звучи готино, така че, нека го изградим.
Необходими компоненти:
Материалите, необходими за този проект, са изброени по-долу, не е задължително да се придържате към тях. След като грабнете концепцията, можете да използвате собствения си начин да я изградите.
- Arduini Pro Mini
- Високоговорител Peizo
- Flex сензор
- Ръкавици за пръсти
- 10K резистори
- BC547 транзистори
- 9V батерия
Електрическа схема и обяснение:
Схемата на това пиано Arduino Palm е показана по-долу.
Проектът използва общо четири сензора, тоест два гъвкави сензора и две двойки Дарлингтън, действащи като сензорен сензор. Също така използвахме два падащи резистора R1 и R2 на стойност 10k всеки, които ще действат като падащ резистор за Flex сензора. Тук Flex сензорът се използва за генериране на три различни тона с помощта на един пръст, въз основа на това колко е огънат. Така че можем да произведем 6 звука с помощта на два пръста. Научете тук за Flex Sensor.
Двойка Дарлингтън:
Преди да продължим е важно да знаем какво е Дарлингтън и как точно работи в нашия проект. Двойката на Дарлингтън може да бъде дефинирана като два биполярни транзистора, свързани по такъв начин, че токът, усилен от първия, да бъде допълнително усилен от втория транзистор. Двойка Дарлингтън е показана на изображението по-долу:
Както е показано по-горе, ние използвахме два транзистора BC547, чиито колектори са свързани, за да се съберат и емитерът на първия транзистор е свързан с основата на втория транзистор. Тази схема действа като усилвател с усилване, което означава, че всеки малък сигнал, подаден към основата на първия транзистор, е достатъчен, за да отклони основата на втория транзистор. Нашето тяло действа като земя тук, така че всеки път, когато докоснем основата на транзистора, вторият транзистор се отклонява. Използвайки това в наша полза, ние създадохме сензорния сензор за този проект.
Пин номер 2 и 3 са прекъсващите щифтове на Arduino, които ще бъдат изтеглени високо с помощта на вътрешни издърпващи резистори и след това тези щифтове ще бъдат задържани на земята, когато превключвателят на Дарлингтън се затвори. По този начин всеки път, когато докоснем проводника (от основата на 1- ви транзистор), прекъсването ще се задейства от Arduino.
Използването на два пръста може да произведе само два вида тонове, поради което добавих и гъвкав сензор, който ще промени тона въз основа на това колко е огънат. Програмирал съм да произвежда три различни тона на пръст въз основа на това колко е огънат пръстът (гъвкав сензор). Можете да увеличите броя, ако искате да имате повече тонове на върха на пръстите си.
Направих пълната дъска на перфектна дъска, така че да се побира лесно в дланите ми, но можете да използвате и макет. Просто се уверете, че тялото ви в един момент докосва земята на веригата. След като запоите всичко, то трябва да изглежда така
Използвал съм ръкавици с два пръста, за да закрепя проводниците от двойката Дарлингтън и гъвкавия сензор в положението, както е показано по-горе. Можете да измислите своя собствена (по-добре, ако е възможно) идея, за да ги закрепите на място, докато играете вашите тонове.
Програмиране на Arduino:
Програмата за този генератор на Arduino Tap Tone е доста права. Просто трябва да внимаваме за прекъсвания от проводниците на Дарлингтън и ако се намери такъв, трябва да пуснем тон, който зависи от това колко гъвкав сензор е огънат. Пълният код е даден в края на тази публикация, но по-долу обясних няколко важни парчета.
Забележка: Тази програма работи с помощта на библиотеката “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 сензор и броя тонове.
цикъл void () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Съставяне на собствени стойности на базата на вашия flex сензор flexSensor2 = map (analogRead (A1), 170,185,1,3); // Съставяне на собствени стойности въз основа на вашия сензор за гъвкавост}
Както видяхме по-рано, функцията tone1 () ще бъде изпълнена, когато бъде открито прекъсване на щифт 2. Какво се случва вътре в функцията tone1 () е показано по-горе. Разглеждаме стойностите на FlexSensor1 и възпроизвеждаме тон въз основа на стойността на flexSesnor. Тоновете ще се възпроизвеждат с помощта на функцията Tone на Arduino. Обяснихме функцията tone () в предишния ни проект.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); иначе ако (flexSensor1 == 2) тон (8, ЗАБЕЛЕЖКА_A3,50); иначе ако (flexSensor1 == 3) тон (8, NOTE_G4,50); звук else (8, NOTE_D4,50); }
Долният ред се използва за възпроизвеждане на тона. Можете да възпроизвеждате всеки тон, който е наличен в заглавния файл “pitches.h”. Горният ред например възпроизвежда NOTE_A3 на пин за продължителност от 50 мили секунди.
тон (8, ЗАБЕЛЕЖКА_A3,50); // тон (PinNum, име на бележка, продължителност);
Работа:
След като хардуерът ви е готов, качете кода и ги монтирайте на пръсти. Уверете се, че тялото ви докосва земята на веригата в даден момент. Сега просто докоснете който и да е проводящ материал или тялото си и ще можете да чуете съответния тон. Можете да възпроизвеждате своя собствена мелодия или музика, като докосвате през различни интервали и различни позиции.
На видеото по-долу показва пълното функциониране на ия проект. Надявам се, че ви е харесало изграждането на проекта, всички предложения или въпроси могат да бъдат публикувани в раздела за коментари по-долу. Също така проверете нашия Arduino Audio Player и Arduino Tone Generator Project.