Sa proyektong ito magtatayo kami ng isang piraso ng aliwan gamit ang Arduino. Lahat tayo ay may kaugaliang i-tap ang Talahanayan o Panulat para sa paglikha ng anumang random na musika. Siyempre maaaring hindi ito maituring bilang isang mabuting pag-uugali, ngunit lahat ay nasisiyahan kaming gawin ito kahit isang beses lang. Samakatuwid naisip kong dalhin ito sa susunod na antas sa pamamagitan ng paggamit ng kakayahan ni Arduino na maglaro ng mga tono. Kapag nabuo mo ang proyektong ito maaari kang makabuo ng mga tono sa pamamagitan ng pag-tap sa iyong mga daliri sa anumang kondaktibo at lumikha ng iyong sariling mga ritmo, tulad ng paglalaro ng Piano sa iyong palad. Ang tunog ay cool kaya, ipaalam sa amin na bumuo ng ito.
Mga sangkap na kinakailangan:
Ang mga materyales na kinakailangan para sa proyektong ito ay nakalista sa ibaba, hindi sapilitan na manatili sa pareho. Kapag nakuha mo na ang konsepto maaari mong gamitin ang iyong sariling paraan ng pagbuo nito.
- Arduini Pro Mini
- Peizo Speaker
- Flex Sensor
- Mga guwantes sa daliri
- 10K Resistors
- BC547 Transistors
- 9V Baterya
Circuit Diagram at Paliwanag:
Ang circuit diagram para sa Arduino Palm Piano na ito ay ipinapakita sa ibaba.
Gumagamit ang proyekto ng isang kabuuang apat na sensor, iyon ay dalawang flex sensor at dalawang pares ng Darlington na kumikilos bilang isang touch sensor. Gumamit din kami ng dalawang pull down resistors na R1 at R2 na nagkakahalaga ng 10k bawat isa, na kikilos bilang isang pull down resistor para sa Flex sensor. Dito ginagamit ang Flex sensor upang makabuo ng Tatlong magkakaibang tono sa pamamagitan ng paggamit ng isang daliri, batay sa kung gaano ito nabaluktot. Kaya maaari kaming makagawa ng 6 na tunog gamit ang dalawang daliri. Alamin dito ang tungkol sa Flex Sensor.
Darlington Pair:
Bago kami magpatuloy mahalagang malaman kung ano ang isang Darlington at kung paano ito eksaktong gumagana sa aming proyekto. Ang pares ng Darlington ay maaaring tukuyin bilang dalawang bipolar transistors na konektado sa isang paraan na ang kasalukuyang pinalakas ng una ay karagdagang pinalakas ng pangalawang transistor. Ang isang pares ng Darlington ay ipinapakita sa imahe sa ibaba:
Tulad ng ipinakita sa itaas nagamit namin ang dalawang BC547 transistors na ang mga kolektor ay nakatali upang magtipon at ang emitter ng unang transistor ay konektado sa Base ng pangalawang transistor. Ang circuit na ito ay gumaganap bilang isang amplifier na may isang pakinabang, nangangahulugang ang anumang maliit na signal na ibinigay sa base ng unang transistor ay sapat na upang bias ang base ng pangalawang transistor. Ang aming katawan ay kumikilos bilang isang lupa dito kaya tuwing hinahawakan namin ang base ng transistor ang pangalawang transistor ay nakakiling. Gamit ito sa pabor namin na binuo namin ang touch sensor para sa proyektong ito.
Ang pin number 2 at 3 ang mga nakakagambala na mga pin sa Arduino na mahahatak nang mataas gamit ang mga panloob na resistor na pull-up at pagkatapos ay ang mga pin na ito ay ididikit sa lupa tuwing magsasara ang switch ng Darlington. Sa ganitong paraan sa tuwing hinahawakan namin ang kawad (mula sa base ng 1 st transistor) isang nakakagambala ay mai-trigger mula sa Arduino.
Ang paggamit ng dalawang daliri ay makakagawa lamang ng dalawang uri ng mga tono kaya't nagdagdag din ako ng isang sensor ng flex na magbabago ng tono batay sa kung gaano ito baluktot. Nag-program ako upang makabuo ng tatlong magkakaibang mga tono bawat daliri batay sa kung gaano baluktot ang daliri (flex sensor). Maaari mong dagdagan ang bilang kung nais mong magkaroon ng higit pang mga tono sa iyong mga tip sa daliri.
Ginawa ko ang kumpletong board sa isang perf board upang madali itong magkasya sa aking mga palad, ngunit maaari mo ring gamitin ang isang pisara. Siguraduhin lamang na ang iyong katawan ay hawakan ang lupa ng circuit sa ilang mga punto. Kapag nahinang mo na ang lahat dapat magmukhang ganito
Gumamit ako ng dalawang guwantes na daliri upang ma-secure ang mga wire mula sa pares ng Darlington at ang flex sensor sa posisyon tulad ng ipinakita sa itaas. Maaari kang magkaroon ng iyong sariling (mas mabuti kung posible) na ideya upang ma-secure ang mga ito sa lugar habang pinapatugtog mo ang iyong mga tono.
Programming ng Arduino:
Ang programa para sa Arduino Tap Tone Generator na ito ay medyo tuwid. Kailangan lang naming maghanap para sa mga nakakagambala mula sa mga wire ng Darlington at kung nahanap ang isa kailangan naming maglaro ng tono na nakasalalay sa kung gaano ang baluktot ng sensor ng flex. Ang kumpletong code ay ibinibigay sa pagtatapos ng post na ito ngunit ipinaliwanag ko ang ilang mahahalagang tipak sa ibaba.
Tandaan: Gumagana ang program na ito sa tulong ng library na "pitches.h". Kaya siguraduhing naidagdag mo ang header file sa iyong programa bago mo ito isulat. Maaari mong i-download ang pitches.h header file mula rito.
Sa pag- andar ng pag- setup , pinasimulan namin ang pin 2 at 3 bilang Input na may mga resistors na pull-up. Idineklara din namin ang mga ito bilang nakakagambala na mga pin at isinasagawa ang tone1 () kapag mayroong isang nakakagambala sa pin 2 at ang tone2 () na pag-andar kapag mayroong isang nakakagambala sa 3 rd pin. Ang mga pagkagambala na ito ay mai-trigger tuwing mababa ang mga pin na ito mula sa kanilang estado na hinila.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Sa loob ng pag- andar ng loop , patuloy naming suriin kung gaano ang baluktot ng sensor ng flex. Ang aking FlexSensor 1 halimbawa ay nagbigay ng mga halaga sa paligid ng 200 kapag iniwan na patag at bumaba hanggang sa 130 nang baluktot ko ito sa maximum nito, kaya nai-mapa ko ang halaga mula 200 hanggang 130 bilang 1 hanggang 3 dahil kailangan kong maglaro ng 3 magkakaibang uri ng mga tono. Kailangan mong sabunutan ang dalawang linya na ito batay sa iyong mga halaga ng Flex sensor at bilang ng mga tono.
void loop () {flexSensor1 = mapa (analogRead (A0), 200,130,1,3); // Map up gamit ang iyong sariling mga halaga batay sa iyong flex sensor flexSensor2 = mapa (analogRead (A1), 170,185,1,3); // Map up gamit ang iyong sariling mga halaga batay sa iyong flex sensor}
Tulad ng nakita natin nang mas maaga ang function tone1 () ay papatayin kapag ang isang nakakagambala ay napansin sa pin 2. Ano ang nangyayari sa loob ng tone1 () na pagpapaandar ay ipinakita sa itaas. Tinitingnan namin ang mga halaga ng FlexSensor1 at nagpe-play ng isang tono batay sa Halaga ng flexSesnor. Patugtugin ang mga tone gamit ang Tono function ng Arduino. Ipinaliwanag namin ang tono ng () paggana sa aming nakaraang proyekto.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); iba pa kung (flexSensor1 == 2) tone (8, NOTE_A3,50); iba pa kung (flexSensor1 == 3) tone (8, NOTE_G4,50); ibang tono (8, NOTE_D4,50); }
Ginagamit ang linya sa ibaba upang i-play ang tono. Maaari mong i-play ang anumang tono na magagamit sa header file na "pitches.h". Ang linya sa itaas para sa halimbawa ay nagpe-play ng NOTE_A3 sa pin para sa tagal ng 50 milli segundo.
tono (8, TANDAAN_A3,50); // tone (PinNum, Tandaan pangalan, Tagal);
Nagtatrabaho:
Kapag handa na ang iyong hardware, i-upload ang code at i-mount ang mga ito sa iyong mga daliri. Siguraduhin na ang iyong katawan ay hawakan ang lupa ng circuit sa ilang mga punto. Ngayon ay hawakan lamang ang anumang kondaktibong materyal o iyong katawan at dapat mong marinig ang kani-kanilang tono. Maaari mong i-play ang iyong sariling himig o musika sa pamamagitan ng pag-tap sa iba't ibang mga agwat at iba't ibang mga posisyon.
Ipinapakita ng video sa ibaba ang kumpletong pagtatrabaho ng proyekto. Inaasahan kong nasiyahan ka sa pagbuo ng proyekto, ang anumang mga mungkahi o katanungan ay maaaring mai-post sa seksyon ng komento sa ibaba. Suriin din ang aming Arduino Audio Player at Arduino Tone Generator Project.