Sisällysluettelo:
Video: Arduino -ovikello: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Tänään näytän sinulle, kuinka tehdä ovikello Arduinolla. Tämä ovikello soittaa satunnaisen sävelmän kappaleista. Voit muokata ovikelloa ja lisätä vielä enemmän kappaleita. Asenna se makuuhuoneesi, luokkahuoneesi, toimistosi tai jopa etuovesi ulkopuolelle!
Tarvikkeet:
- Arduino Uno (useimmat muut tyypit tekevät)
- Tietokone, jossa on Arduino IDE ohjelmointia varten
- USB-A-USB-B-kaapeli Arduinon ohjelmointiin
- Leipälauta
- 4x hyppyjohdot
- Painike tai muu kytkin
- 10 kOhm vastus
- Passiivinen summeri (eli pietsosähköinen kaiutin)
-
Kiinteä asennus:
- 9 V DC -virtalähde tai 9 V -akku Arduinon virransyöttöön
- 2x pitkät johdot johdotuspainikkeelle oven ulkopuolella
Vaihe 1: Laitteiston asennus
Ensinnäkin asennamme laitteiston. Aloitamme passiivisella summerilla (eli kaiuttimella). Haluamme liittää passiivisen summerin positiivisen pään (merkitty "+" -merkillä) Arduinon digitaaliseen nastaan 8. Yhdistämme passize -summerin toisen pään maahan.
Seuraavaksi asennamme ovikellon painikkeen. Käytämme kytkimelle 10 kOhm: n ulkoista ulosvedettävää vastusta, joten Arduinon tulossa ei ole kelluvaa jännitettä tai epävakaata tilaa. Käyttämällä alasvetovastusta Arduino lukee jännitteeksi 0 V, kun painiketta ei paineta, ja 5 V, kun painiketta painetaan. Lisätietoja pullup- tai pull-down-vastuksista voit lukea tästä artikkelista:
Yhdistämme painikkeen toisen puolen 5 volttiin. Painikkeen toinen puoli liitetään maahan 10 kOhm: n ulosvedettävän vastuksen kautta. Muista: painikkeet on liitetty vaakasuoraan sisäisesti. Ne on liitetty vain pystysuoraan, kun niitä painetaan. Lisätietoja on tässä artikkelissa:
Vaihe 2: Ohjelmiston asennus
Kaikki koodi on liitetty. Alla on kunkin toiminnon kuvaukset koodin tilannekuvilla.
perustaa:
Setup () -toiminnossa haluamme määrittää painikkeemme ja kaiuttimemme digitaaliset nastat. Haluamme määrittää nastan 2 painikkeemme tuloksi ja haluamme määrittää nastan 8 kaiuttimen ulostuloksi.
Haluamme myös "siementää" satunnaislukugeneraattorimme valitakseen sävelmän satunnaisesti, kun joku soittaa ovikellomme. Satunnaislukugeneraattorimme kylvö tarkoittaa sen syöttämistä satunnaiseen syötteeseen. Siemennemme satunnaislukugeneraattorimme jännitearvolla analogiatulossa 0. Koska tähän tuloon ei ole kytketty mitään, tässä tapissa on "satunnainen", vaihteleva jännite, joka tarjoaa satunnaislukugeneraattorillemme monia erilaisia arvoja. Näin varmistamme, että ovikellomme kappalevalinnat ovat eri järjestyksessä. Lisätietoja Arduino random () -toiminnosta on täällä:
#include "pitches.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * asetustoiminto */void setup () {// ota käyttöön tulo-/lähtönastat pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // siemenen satunnainen () -funktio niin, että saamme eri järjestyksen randomSeed (analogRead (0)); }
silmukka:
Silmukka () -toiminnossamme tarkistamme jatkuvasti, onko painiketta painettu (digitaalinen nasta 2 on korkea). Jos tappi on korkea, odotamme 50 ms ja tarkistamme uudelleen, että se on edelleen korkea. Tämä varmistaa, että painiketta painetaan, eikä digitaalitulonapissa ollut harhaääntä, joka aiheutti väärän positiivisen.
Kun olemme vahvistaneet, että painiketta painettiin, käytämme satunnaislukugeneraattoria valitaksemme yhden viidestä kappaleesta kytkinlausekkeen avulla. Näiden kappaleiden tiedot tallennetaan tiedostoon "songs.h" ja äänenkorkeustiedot "pitch". Kun olemme valinneet kappaleen, välitämme nämä tiedot toimintoon play_song ().
/ * tärkein kun silmukka -toiminto */
void loop () {// tarkista, painetaanko painiketta, jos (digitalRead (BUTTON_PIN) == HIGH) {// viivästyy 50 ms varmistaaksesi, että se on edelleen painettuna // välttää väärinkäsitysten viive (50); if (digitalRead (BUTTON_PIN) == HIGH) {// valitse kappale satunnaisesti int song_choice = random (5); // valitse toistettava kappale (kappaleen valinta) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); tauko; tapaus 1: play_song (marioLength, mario, marioDurations, marioTempo); tauko; tapaus 2: play_song (miiLength, mii, miiDurations, miiTempo); tauko; tapaus 3: play_song (hpLength, hp, hpDurations, hpTempo); tauko; tapaus 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); tauko; oletus: play_song (miiLength, mii, miiDurations, miiTempo); tauko; }}}}
play_song:
play_song () sisältää 4 argumenttia: kokonaisluku kappaleessa olevia nuotteja, kokonaisluku matriisin sävelkorkeuksista, kokonaisluku matriisi kestosta ja kokonaisluku tempo kyseiselle kappaleelle. Ne on määritettävä jokaiselle kappaleelle, jonka haluat toistaa. Lisätietoja Arduino -äänitoimintojen käyttämisestä on tässä opetusohjelmassa: https://www.arduino.cc/en/Tutorial/ToneMelody. Lisäsin joitain toimintoja tämän opetusohjelman päälle katkoviivoille. Jos nuotin kestotaulukon arvo on negatiivinen, se tarkoittaa, että se on pisteviiva (pituus on 1,5 kertaa suurempi).
/ * soittaa kappaleen */
void play_song (int num_notes, int melody , int noteDurations , int tempo) {// astu läpi ja toista kaikki nuotit (int i = 0; i 0) {duration = tempo / noteDurations ; } // jos se on negatiivinen luku, tarkoittaa pisteviivaa // lisää kestoa puoliksi muille pisteviivoille, jos (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } sävy (SPEAKER_PIN, melodia , kesto); // erottaaksesi muistiinpanot, aseta niiden välille vähimmäisaika. // nuotin kesto + 30% näyttää toimivan hyvin: int pauseBetweenNotes = kesto * 1,30; delay (pauseBetweenNotes); // lopeta äänen toisto: noTone (SPEAKER_PIN); }}
Esimerkki kappaleista. H:
Alla on näyte eräästä kappaleesta kappaleessa "songs.h". Muistiinpanot ovat makrot, jotka on määritetty "pitchissä. H". Numerot vastaavat nuotin taajuuksia hertseinä (Hz). Muistiinpanojen kesto määritellään seuraavasti: 1 = kokonainen nuotti, 2 = puolipainos, 4 = neljännesmuistio, 8 = kahdeksas nuotti, -4 = pisteviiva neljännes nuotti jne. Pituus on kappaleen nuottien kokonaismäärä. Tempo on jakaja kappaleen nopeudelle (suurempi luku tarkoittaa hitaampaa tempoa). Sinun täytyy leikkiä tällä numerolla, kunnes saat haluamasi tempoa.
/ * Harry Potter */
int hp = {NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4}; int hpDurations = {4, -4, 8, 4, 2, 4, -2, -2, -2, -4, 8, 4, 2, 4, 1}; int hpPituus = 14; int hpTempo = 1050;
Vaihe 3: Säädöt
Lisää kappaleita! Noudata kohdassa "songs.h" näytettyä muotoa ja käytä opetusohjelmaa: https://www.arduino.cc/en/Tutorial/ToneMelody. Muista lisätä jokaiselle lisäämällesi uudelle kappaleelle kytkinlauseeseen uusi kirjainkoko ja lisätä satunnaisfunktion () tuottamaa enimmäismäärää. Hyvää koodausta!
Vaihe 4: Lisää projekteja
Lisää projekteja löydät sivuiltani:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Halvin Arduino -- Pienin Arduino -- Arduino Pro Mini -- Ohjelmointi -- Arduino Neno: 6 vaihetta (kuvilla)
Halvin Arduino || Pienin Arduino || Arduino Pro Mini || Ohjelmointi || Arduino Neno: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita ……. Tässä projektissa keskitytään kaikkien aikojen pienimpään ja halvinan arduinoon. Pienin ja halvin arduino on arduino pro mini. Se muistuttaa arduinoa