Tässä projektissa kehitämme äänigeneraattorin Arduino Unon avulla. Meillä on painikkeet, jotka ovat liitettyinä UNO: han, ja kukin niistä tuottaa eri voimakkuuden. UNO: n tuottama äänen taajuus on sama kaikilla sisäisillä. Se on äänen voimakkuus, joka muuttuu jokaisella painalluksella. Tämä on helpoin tapa tehdä piano Arduino Unon kanssa. Tarkista myös tämä Piano-piiri.
Sävyjä voidaan nostaa 20: een. Tämä antaa parhaan sävyvaihtelun ja paljon pehmeämmät muutokset. PWM (Pulse Width Modulation) muuttaa äänen voimakkuutta. Esimerkki PWM: stä on esitetty alla olevassa kaaviossa.
PWM: ssä signaalin taajuus tai signaalin ajanjakso (Ton + Toff) on aina vakio. Vain PÄÄLLE- ja POIS-ajan suhde muuttuu. Esimerkiksi yllä olevan kuvan toisessa kaaviossa PÄÄLLE-aika on 80% ja PÄÄLLE-aika on 20% kokonaiskestosta.
Kolmannessa kaaviossa PÄÄLLE-aika on 50% ja PÄÄLLE-aika on 50% kokonaiskestosta. Joten ensimmäisessä tapauksessa tulli on 80% ja toisessa tapauksessa 20%.
Tämän muutoksen myötä meillä on muutos Vrms: ssä (Jännitteen keskimääräinen neliöarvo), kun tämä jännite annetaan summerille, se aiheuttaa erilaista melua aina, kun käyttöaste muuttuu.
Aiomme ohjelmoida UNO: n tarjoamaan PWM-signaalin, jolla on erilainen käyttöaste jokaiselle painikkeelle. Joten meillä on käsillä äänigeneraattori, joka tuottaa eri äänen jokaisella painalluksella.
Tarvittavat komponentit
Laitteisto: Arduino Uno, virtalähde (5v), 1000 uF kondensaattori, 100 nF kondensaattori, summeri, painikkeet (8 kpl).
Ohjelmisto: AURDINO nightly tai Atmel studio 6.2
Piirikaavio ja selitys työstä
Äänigeneraattorin piiri on esitetty alla olevassa kaaviossa.
Syöttöjännitekondensaattoreiden melun suodattamiseksi sijoitetaan liittimien yli kaavion mukaisesti.
Arduino Unon PWM voidaan saavuttaa millä tahansa nastalla, jota PCB-piirilevyssä symboloi "~". UNO: ssa on kuusi PWM-kanavaa. Emme kuitenkaan voi käyttää PWM-nastoja, jotka on muodostettu PINS 0-7: n yli, koska PINS on suositeltava painikkeiden käyttöliittymälle.
On syytä valita PINS 0-7 tuloiksi, koska PINS 0-7 edustavat mikro-ohjaimen PORTD-arvoa. Joten jälkimmäisessä tapauksessa voimme ottaa koko PORTD: n BYTE: n.
Nyt saadaksemme toisen käyttöaste PWM: n, käytämme seuraavaa komentoa.
analogWrite (9, ARVO); |
Yllä olevasta ehdosta voimme saada PWM-signaalin suoraan vastaavaan tapiin. Suluissa ensimmäinen parametri on PWM-signaalin pin-numeron valitseminen. Toinen parametri on kirjoitussuhde.
Arduino Unon PWM-arvo voidaan muuttaa arvosta 0 arvoon 255. Kun “0” on pienin ja ”255” on korkein. Kun käyttösuhde on 255, saamme 5 V PIN9: llä. Jos käyttöaste on 125, saamme 2,5 V PIN9: llä. Aiomme jakaa käyttösuhteen 0-250 UNO: n PORTDissa liitetyn 8 painikkeen kesken. Täällä valitsen 25 lisäystä jokaiselle painikkeelle, mutta se on valinta.
Sen avulla meillä on PWM-signaali, jonka käyttöaste muuttuu jokaisen painikkeen kanssa. Tämä annetaan summerille, meillä on äänigeneraattori. Tämän Arduino-pohjaisen äänigeneraattorin toiminta selitetään vaihe vaiheelta alla olevassa C-koodissa.