Satura rādītājs:

Dziesmu veidošana ar Arduino un līdzstrāvas motoru: 6 soļi
Dziesmu veidošana ar Arduino un līdzstrāvas motoru: 6 soļi

Video: Dziesmu veidošana ar Arduino un līdzstrāvas motoru: 6 soļi

Video: Dziesmu veidošana ar Arduino un līdzstrāvas motoru: 6 soļi
Video: Armands Rasa skaidro savu tikšanos ar 'Vienotības' deputātu Intu Dālderi 2024, Novembris
Anonim
Dziesmu veidošana ar Arduino un līdzstrāvas motoru
Dziesmu veidošana ar Arduino un līdzstrāvas motoru

Citu dienu, ritinot dažus rakstus par Arduino, es pamanīju interesantu projektu, kurā īsu melodiju radīšanai tika izmantoti Arduino kontrolēti soļu motori. Arduino izmantoja PWM (impulsa platuma modulācijas) tapu, lai darbinātu soļu motoru noteiktās frekvencēs, kas atbilst mūzikas notīm. Nosakot, kuras frekvences tiek atskaņotas, no pakāpju motora varēja dzirdēt skaidru melodiju.

Tomēr, kad es pats to izmēģināju, es atklāju, ka mans pakāpju motors nevar griezties pietiekami ātri, lai radītu signālu. Tā vietā es izmantoju līdzstrāvas motoru, kuru ir salīdzinoši vienkārši programmēt un izveidot savienojumu ar Arduino. Lai viegli vadītu motoru no Arduino PWM tapas, var izmantot parasto L293D IC, un vietējā toņa () funkcija Arduino var ģenerēt nepieciešamo frekvenci. Man par pārsteigumu, tiešsaistē neatradu nevienu piemēru vai projektu, izmantojot līdzstrāvas motoru, un tāpēc šī instrukcija ir mana atbilde, lai to novērstu. Sāksim!

P. S. Es pieņemu, ka jums jau ir zināma pieredze ar Arduino un esat iepazinies ar tā programmēšanas valodu un aparatūru. Jums vajadzētu zināt, kas ir masīvi, kas ir PWM un kā to izmantot, kā darbojas spriegums un strāva. Ja jūs vēl neesat tur vai tikko sākāt lietot Arduino, neuztraucieties: izmēģiniet šo darba sākšanas lapu no oficiālās Arduino vietnes un atgriezieties, kad esat gatavs.:)

Piegādes

  • Arduino (es izmantoju UNO, bet, ja vēlaties, varat izmantot citu Arduino)
  • Standarta 5V līdzstrāvas motors, vēlams tāds, kuram var pievienot ventilatoru (skat. Attēlu sadaļā "Ķēdes montāža")
  • L293D IC
  • Tik daudz spiedpogu, cik piezīmes dziesmā, kuru vēlaties atskaņot
  • Maizes dēlis
  • Jumper vadi

1. darbība. Pārskats

Projekts darbojas šādi: Arduino noteiktā frekvencē ģenerēs kvadrātveida vilni, ko tas izvada uz L293D. L293D ir pievienots ārējam barošanas avotam, ko tas izmanto, lai darbinātu motoru tādā frekvencē, kādu to nodrošina Arduino. Novēršot līdzstrāvas motora vārpstas rotāciju, var dzirdēt, ka motors izslēdzas un ieslēdzas tādā frekvencē, kas rada signālu vai piezīmi. Mēs varam ieprogrammēt Arduino atskaņot piezīmes, nospiežot pogas, vai automātiski tās atskaņot.

2. solis: shēmas montāža

Ķēdes montāža
Ķēdes montāža
Ķēdes montāža
Ķēdes montāža

Lai saliktu ķēdi, vienkārši izpildiet iepriekš norādīto Fritzing diagrammu.

Padoms. Motora piezīmi vislabāk var dzirdēt, kad vārpsta negriežas. Es uzliku motora vārpstai ventilatoru un izmantoju kādu līmlenti, lai nekustīgi turētu ventilatoru, kamēr motors darbojās (skat. Attēlu). Tas neļāva vārpstai griezties un radīja skaidru, dzirdamu signālu. Jums, iespējams, būs jāpielāgo, lai no motora iegūtu tīru signālu.

3. darbība. Kā darbojas ķēde

Kā darbojas ķēde
Kā darbojas ķēde

L293D ir IC, ko izmanto salīdzinoši augsta sprieguma, lielas strāvas ierīču, piemēram, releju un motoru, vadīšanai. Arduino nevar vadīt lielāko daļu motoru tieši no izejas (un motora aizmugures EMF var sabojāt Arduino jutīgo digitālo shēmu), tāpēc tādu IC kā L293D var izmantot ar ārēju barošanas avotu, lai viegli darbinātu līdzstrāvas motoru. Ievadot signālu L293D, tas pats signāls tiks izvadīts līdzstrāvas motoram, neriskējot sabojāt Arduino.

Augšpusē ir L293D pinout/funkcionālā shēma no tās datu lapas. Tā kā mēs braucam tikai ar 1 motoru (L293D var vadīt 2), mums ir nepieciešama tikai viena IC puse. 8. tapa ir jauda, 4. un 5. tapas ir GND, 1. tapa ir PWM izeja no Arduino, un 2. un 7. tapas kontrolē motora virzienu. Ja tapas 2 ir HIGH un 7. tapas ir LOW, motors griežas vienā virzienā, un, ja 2. tapa ir LOW un 7. tapa ir HIGH, motors griežas citā virzienā. Tā kā mums ir vienalga, kādā virzienā motors griežas, nav nozīmes tam, vai 2. un 7. tapa ir ZEMA vai AUGTA, ja vien tie atšķiras viens no otra. 3. un 6. tapas savienojas ar motoru. Ja vēlaties, varat visu savienot ar otru pusi (tapas 9-16), taču ņemiet vērā, ka strāvas un PWM tapas pārslēdzas uz vietām.

Piezīme. Ja jūs izmantojat Arduino, kuram nav pietiekami daudz tapu katrai pogai, varat izmantot rezistoru tīklu, lai visus slēdžus savienotu ar vienu analogo tapu, piemēram, šajā instrukcijā. Kā tas darbojas, šis projekts neietilpst, bet, ja kādreiz esat izmantojis R-2R DAC, jums tas ir jāatzīst. Ņemiet vērā, ka, izmantojot analogo tapu, būs jāpārraksta liela koda daļa, jo pogu bibliotēku nevar izmantot ar analogām tapām.

4. darbība. Kā darbojas kods

Lai būtu vieglāk rīkoties ar visām pogām, es izmantoju bibliotēku ar nosaukumu madleech “Poga”. Es vispirms iekļāvu bibliotēku. Tālāk 8-22 rindās es definēju frekvences piezīmēm, kas vajadzīgas, lai atskaņotu Twinkle, Twinkle, Little Star (piemēra dziesma), tapu, ko izmantošu, lai vadītu L293D, un pogas.

Iestatīšanas funkcijā es inicializēju sēriju, pogas un iestatīju L293D draivera tapu izvades režīmā.

Visbeidzot, galvenajā cilpā es pārbaudīju, vai nav nospiesta poga. Ja tā ir, Arduino atskaņo atbilstošo piezīmi un izdrukā piezīmes nosaukumu seriālajā monitorā (noder, lai zinātu, kuras piezīmes atrodas jūsu maizē). Ja piezīme tiek atbrīvota, arduino pārtrauc jebkuru skaņu ar noTone ().

Diemžēl bibliotēkas struktūras dēļ es nevarēju atrast veidu, kā pārbaudīt, vai poga ir nospiesta vai atbrīvota mazāk detalizēti, nekā izmantojot 2 nosacījumus uz piezīmi. Vēl viens šī koda trūkums ir tāds, ka, nospiežot divas pogas vienlaikus un pēc tam atlaižot vienu no tām, abas piezīmes tiks apturētas, jo noTone () pārtrauc visu piezīmju ģenerēšanu neatkarīgi no tā, kura piezīme to aktivizēja.

5. solis: dziesmas programmēšana

Tā vietā, lai izmantotu pogas piezīmju atskaņošanai, varat arī ieprogrammēt Arduino, lai tā automātiski atskaņotu melodiju. Šeit ir pirmās skices modificēta versija, kurā uz motora tiek atskaņota Twinkle, Twinkle, Little Star. Skices pirmā daļa ir vienāda - nosaka notu frekvences un toniPin. Mēs nonākam pie jaunās daļas pie bpm = "100". Es iestatīju sitienus minūtē (sitieni minūtē) un pēc tam izmantoju kādu matemātiku, lai noskaidrotu milisekundes skaitu uz sitienu, kuram bpm atbilst. Lai to izdarītu, es izmantoju paņēmienu, ko sauc par dimensiju analīzi (neuztraucieties - tas nav tik grūti, kā izklausās). Ja esat kādreiz apmeklējis vidusskolas ķīmijas kursu, jūs noteikti izmantojāt dimensiju analīzi, lai konvertētu starp vienībām. Pludiņi () ir paredzēti, lai nodrošinātu, ka nekas vienādojumā nav noapaļots līdz pašām beigām, lai iegūtu precizitāti.

Kad esam saņēmuši ms/sitienu skaitu, es to attiecīgi sadalīju vai reizināju, lai atrastu dažādu mūzikā atrasto notu ilguma milisekundes vērtības. Pēc tam es izveidoju masīvu no katras piezīmes hronoloģiskā secībā un vēl vienu ar katras piezīmes ilgumu. Ir ļoti svarīgi, lai katras nots indekss atbilstu tās ilguma indeksam, pretējā gadījumā jūsu melodija atskanēs. Šeit es ievietoju piezīmes par Twinkle, Twinkle, Little Star, bet jūs varat izmēģināt jebkuru dziesmu vai piezīmju secību, kādu vēlaties.

Īstā maģija notiek cilpas funkcijā. Katrai piezīmei es atskaņoju signālu kādu laiku, ko norādīju masīvā beat_values. Tā vietā, lai šeit izmantotu aizkavi, kas izraisītu toņa atskaņošanu, es ierakstīju laiku kopš programmas sākuma ar funkciju millis () un atņemu to no pašreizējā laika. Kad laiks pārsniedz laiku, kurā norādīju noti, lai tā paliktu beat_values masīvā, es pārtraucu piezīmi. Aizkave pēc for cikla ir paredzēta, lai pievienotu atstarpi starp piezīmēm, nodrošinot, ka nākamās piezīmes ar tādu pašu frekvenci nesajaucas kopā.

6. darbība. Atsauksmes

Tas ir šim projektam. Ja kaut ko nesaprotat vai jums ir kādi ieteikumi, lūdzu, nevilcinieties sazināties ar mani. Tā kā šī ir mana pirmā pamācība, es ļoti priecātos par komentāriem un ieteikumiem par šī satura uzlabošanu. Tiksimies nākamreiz!

Ieteicams: