- Nepieciešamā aparatūra:
- Arduino funkcijas Tone () izpratne :
- Pitches.h header fails:
- Mūzikas piezīmju atskaņošana vietnē Arduino:
- Shēma un aparatūra:
- Arduino programmas skaidrojums:
- Šīs melodijas atskaņotāja Arduino shēmas darbība:
Arduino ir lielisks veids, kā vienkāršot un paātrināt mikrokontrolleru projektus, pateicoties tās izstrādātāju kopienai, kuras gandrīz viss ir izskatījies vienkārši. Šeit ir daudz Arduino projektu, lai jūs varētu izmēģināt un izklaidēties. Dažiem jūsu projektiem var būt nepieciešama skaņu darbība, lai paziņotu par kaut ko vai vienkārši atstātu iespaidu uz skatītājiem. Ko darīt, ja es jums teiktu, ka gandrīz visas tematiskās dziesmas, kuras var atskaņot uz klavierēm, var atdarināt uz jūsu Arduino ar vienkāršas programmas un lēta Pjezo skaļruņa palīdzību?
Šajā apmācībā mēs uzzināsim, cik vienkārši un viegli ir atskaņot melodiju pjezo skaļrunī vai skaļrunī, izmantojot funkciju Arduino tone (). Šīs apmācības beigās jūs varēsiet atskaņot dažus slavenus Karību jūras pirātu, Crazy Frog, Super Mario un Titanic toņus. Jūs arī uzzināsiet, kā spēlēt jebkuru klaviermūzikas gabalu ar Arduino. Pārbaudiet videoklipu beigās.
Nepieciešamā aparatūra:
- Arduino (jebkura versija - šeit tiek izmantota UNO)
- Pjezo skaļrunis / skaņas signāls vai jebkurš cits 8 omu skaļrunis.
- Maizes dēlis
- Vadu savienošana
- Spiediet pogas
- 1k rezistors (pēc izvēles)
Arduino funkcijas Tone () izpratne:
Pirms mēs varam saprast, kā darbojas tonis (), mums jāzina, kā darbojas Pjezo skaņas signāls. Mēs, iespējams, esam mācījušies par Pjezo kristāliem savā skolā, tas ir nekas cits kā kristāls, kas pārveido mehāniskās vibrācijas elektrībā vai otrādi. Šeit mēs izmantojam mainīgu strāvu (frekvenci), kurai kristāls vibrē, tādējādi radot skaņu. Tādēļ, lai pieskaņotu pjezo skaņas signālu, mums jāpadara Pjezo elektriskais kristāls vibrējošs, trokšņa augstums un tonis ir atkarīgs no tā, cik ātri kristāls vibrē. Tādējādi toņu un augstumu var kontrolēt, mainot strāvas frekvenci.
Labi, tad kā mēs iegūstam mainīgu frekvenci no Arduino ? Šeit parādās funkcija tone (). Tonis () var ģenerēt noteiktu frekvenci uz konkrētas tapas. Vajadzības gadījumā var minēt arī laika ilgumu. Signāla () sintakse ir
Sintakses signāla (piespraudes, frekvences) signāls (piespraudes, frekvence, ilgums) Parametri pin: tapa, uz kuras ģenerēt signāla frekvenci: signāla frekvence hercos - neparakstīts int ilgums: signāla ilgums milisekundēs (pēc izvēles) - neparakstīts garš
Piespraudes vērtības var būt jebkuras jūsu digitālās tapas. Es šeit esmu izmantojis tapu numuru 8. Ģenerējamā frekvence ir atkarīga no taimera lieluma jūsu Arduino dēlī. UNO un lielākajai daļai citu parasto dēļu minimālā frekvence, ko var ražot, ir 31Hz, bet maksimālā - 65535Hz. Tomēr mēs, cilvēki, dzirdam tikai frekvences no 2000Hz līdz 5000 Hz.
Pitches.h header fails:
Tagad mēs zinām, kā radīt nelielu troksni, izmantojot funkciju arduino tone () . Bet kā mēs zinām, kāds signāls tiks ģenerēts katrai frekvencei?
Arduino ir devis mums piezīmju tabulu, kurā katra frekvence tiek pielīdzināta noteiktam mūzikas notis tipam. Šo piezīmju tabulu sākotnēji rakstīja Brets Hagmans, uz kura darbu balstījās komanda tone () . Mēs izmantosim šo piezīmju tabulu, lai atskaņotu mūsu tēmas. Ja esat kāds, kurš pārzina notis, jums vajadzētu būt iespējai saprast šo tabulu, citiem, piemēram, man, tas ir tikai vēl viens koda bloks.
#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE1 NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_Definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē_definē #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define Note__define_define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349#define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE5_Definēt NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_Define 13_File #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NoteDefine #Define NOTE_E7 NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS73729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
Šajā ZIP failā augšējais kods ir norādīts pitches.h galvenes failā , jums vienkārši jālejupielādē un jāiekļauj šis fails mūsu Arduino kodā, kā norādīts šīs apmācības beigās, vai izmantojiet zip failā norādīto kodu.
Mūzikas piezīmju atskaņošana vietnē Arduino:
Lai atskaņotu pienācīgu melodiju, izmantojot Arduino, mums jāzina, kas veido šīs melodijas. Trīs galvenie faktori, kas nepieciešami, lai spēlētu tēmu, ir
- Piezīmes vērtība
- Piezīme Ilgums
- Tempo
Mums ir galvenes fails pitches.h, lai atskaņotu jebkuru piezīmes vērtību, tagad mums vajadzētu uzzināt tā īpašo piezīmes ilgumu, lai to atskaņotu. Tempo nav nekas cits kā tas, cik ātri jāskaņo melodija. Kad esat uzzinājis piezīmes vērtību un piezīmes ilgumu, varat tos izmantot ar toni (), piemēram,
tonis (pinName, Piezīmes vērtība, Piezīmes ilgums);
Par šajā apmācībā atskaņotajiem toņiem es jums devu piezīmi Vērtība un Piezīmes ilgums galvenes failā “themes.h”, izmantojot kuru jūs varat tos atskaņot savos projektos. Bet, ja raktuvēs jums ir kāds īpašs tonis un vēlaties to atskaņot, lasiet tālāk…. Cits izlaidiet šo tēmu un nokritieties pie nākamās.
Lai atskaņotu kādu noteiktu signālu, jums jāiegūst konkrētās mūzikas notis un jāpārvērš notis uz Arduino skici, nolasot no tās piezīmes vērtību un piezīmes ilgumu. Ja esat mūzikas students, tas jums būtu kūkas gabals, ja jūs pavadījāt kādu laiku un salauzāt galvu tāpat kā es. Bet dienas beigās, kad jūsu signāls skan pie Pjezo skaņas signāla, jūs atradīsit savas pūles tā vērts.
Kad esat ieguvis piezīmes vērtību un piezīmes ilgumu, ielādējiet tos galvenes failā “themes.h”, kā parādīts zemāk
// ############## ** "HE IS A PIRATE" Karību jūras pirātu tematiskā dziesma ** ############### // int Pirates_note = {NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, Note_D4, Note4_D4, Note_D4, Note_D4, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_C4, NOTE_D4, 0, NOTE_A3, NOTE_C4, NOTE4_,4_,4 NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_D4, 0, 0, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE_A4, NOTE4 0, NOTE_D4, NOTE_E3, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_D4, 0, NOTE_D4, NOTE_F4,NOTE_E4, NOTE_E4, NOTE_F4, NOTE_D4}; int Pirātu ilgums = {4,8,4,8,4,8,8,8,8,4,8,4,8,4,8,4,8,8,8,4,8,4,8, 4, 8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,8,8, 4,4,8,8,4,4,8,4, 4,8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,4,8,4,8,8,8,4,4,8,8}; // ########### Viņš ir Pirātu dziesma ############## //
Iepriekš minētais koda bloks parāda filmas Karību jūras pirāti tēmas “Viņš ir pirāts” piezīmes vērtību un piezīmes ilgumu. Jūs varat pievienot savu motīvu līdzīgi kā šis.
Shēma un aparatūra:
Šī Arduino toņu ģeneratora projekta shēma ir parādīta zemāk redzamajā attēlā:
Savienojums ir diezgan vienkāršs, un mums ir Pjezo skaļrunis, kas ir savienots ar Arduino 8. kontaktu un Ground caur 1K rezistoru. Šis 1k rezistors ir strāvu ierobežojošs rezistors, ko izmanto, lai strāvu uzturētu drošās robežās. Mums ir arī četri slēdži, lai izvēlētos nepieciešamo melodiju. Viens slēdža gals ir savienots ar zemi, bet otrs gals ir savienots attiecīgi ar tapām 2, 3, 4 un 5. Slēdžiem būs iekšēji iespējoti pievilkšanas rezistori, izmantojot programmatūru. Tā kā ķēde ir diezgan vienkārša, to var savienot, izmantojot maizes dēli, kā parādīts zemāk:
Arduino programmas skaidrojums:
Kad esat sapratis jēdzienu, Arduino programma ir diezgan vienkārša. Pilns kods ir norādīts apmācības beigās. Ja neesat pazīstams ar galvenes failu pievienošanu, šeit varat lejupielādēt kodu kā ZIP failu un tieši augšupielādēt to savā Arduino.
Iepriekš minētie divi ir galvenes faili, kas jāpievieno. “Pitches.h” tiek izmantots, lai katru mūzikas noti pielīdzinātu noteiktai frekvencei, un “tēmas.h” satur visu četru toņu notis vērtību un ilgumu.
#include "pitches.h" #include "themes.h"
Tiek izveidota funkcija katra signāla atskaņošanai pēc nepieciešamības. Šeit, atskaņojot funkciju Play_Pirates (), tiks atskaņots signāls “Viņš ir pirāts”. Šī funkcija sastāv no toņa funkcijas, kas rada frekvenci ar piespraudes numuru 8. NoTone (8) tiek aicināts pārtraukt mūziku, kad tā tiek atskaņota. Ja vēlaties atskaņot pats savu signālu, nomainiet Pirates_note un Pirates_duration uz jaunajām piezīmju un ilguma vērtībām, kuras esat saglabājis vērtībā “themes.h”.
void Play_Pirates () {for (int thisNote = 0; thisNote <(sizeof (Pirates_note) / sizeof (int)); thisNote ++) {int noteDuration = 1000 / Pirates_duration; // ilguma konvertēšana laika aizkaves signālā (8, Pirates_note, noteDuration); int pauseBetweenNotes = noteDuration * 1,05; // Šeit 1,05 ir temps, palieliniet, lai atskaņotu to lēnāka kavēšanās (pauseBetweenNotes); noTone (8); }}
Spraudni 2, 3, 4 un 5 izmanto, lai izvēlētos konkrēto atskaņojamo signālu. Šīs tapas pēc noklusējuma tiek turētas augstu, izmantojot iekšējos pievilkšanas rezistorus, izmantojot iepriekš minēto koda rindu. Nospiežot pogu, tā tiek nocelta līdz zemei.
pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); pinMode (4, INPUT_PULLUP); pinMode (5, INPUT_PULLUP);
Zem koda bloka tiek izmantota dziesmas atskaņošana, nospiežot pogu. Tas nolasa katras pogas digitālo vērtību un, kad tā kļūst zema (nulle), tā pieņem, ka poga ir nospiesta, un atskaņo attiecīgo signālu, izsaucot nepieciešamo funkciju.
if (digitalRead (2) == 0) {Serial.println ("Atlasīts -> 'Viņš ir pirāts" "); Play_Pirates (); } if (digitalRead (3) == 0) {Serial.println ("Atlasīts -> 'Crazy Frog'"); Play_CrazyFrog (); } if (digitalRead (4) == 0) {Serial.println ("Atlasīts -> 'Mario UnderWorld'"); Play_MarioUW (); } if (digitalRead (5) == 0) {Serial.println ("Atlasīts -> 'Viņš ir pirāts" "); Play_Pirates (); }
Šīs melodijas atskaņotāja Arduino shēmas darbība:
Kad kods un aparatūra ir gatava, vienkārši ierakstiet programmu savā Arduino, un jums vajadzētu būt iespējai atskaņot signālu, vienkārši nospiežot pogas. Ja jums ir kādas problēmas, apskatiet savu sērijveida monitoru atkļūdošanai vai izmantojiet komentāru sadaļu, lai ziņotu par problēmu, un es ar prieku jums palīdzēsim.
Pilnīga projekta darbība ir parādīta zemāk esošajā video. Ceru, ka jums patika projekts un jūs to izmantosiet kādā no jūsu projektiem vai izveidosiet jaunu toni savam projektam. Ja jā, dalieties savā darbā komentāru sadaļā.