Sisukord:
- Samm: riistvara seadistamine
- Samm 2: Tarkvara seadistamine
- 3. samm: näpistused
- Samm: rohkem projekte
Video: Arduino uksekell: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
Täna näitan teile, kuidas Arduino abil uksekella teha. See uksekell mängib laulude raamatukogust juhuslikku viisi. Saate kohandada oma uksekella ja lisada veelgi rohkem laule. Paigaldage see oma magamistoast, klassiruumist, kontorist või isegi välisuksest väljapoole!
Tarvikud:
- Arduino Uno (enamik teisi tüüpe teeb)
- Programmeerimiseks Arduino IDE -ga arvuti
- USB-A kuni USB-B kaabel Arduino programmeerimiseks
- Leivalaud
- 4x hüppaja juhtmed
- Nupp või muu lüliti
- 10 kOhm takisti
- Passiivne helisignaal (st piesoelektriline kõlar)
-
Püsivaks paigaldamiseks:
- 9 V alalisvoolu toiteallikas või 9 V aku Arduino toiteks
- 2x pikad juhtmed välisukse juhtmestiku jaoks
Samm: riistvara seadistamine
Esiteks seadistame riistvara. Alustame passiivse helisignaaliga (st kõlariga). Me tahame ühendada passiivse sumina positiivse otsa (tähistatud "+" märgiga) Arduino digitaalse tihvtiga 8. Me ühendame passize summeri teise otsa maapinnaga.
Järgmisena paigaldame uksekella nupu. Me kasutame lüliti jaoks 10 kOhm välist väljatõmmatavat takistit, nii et Arduino sisendil pole ujuvpinget ega ebastabiilset olekut. Kasutades väljatõmmatavat takistit, loeb Arduino pingeks 0 V, kui nuppu ei vajutata, ja 5 V, kui nuppu vajutatakse. Tõmbamis- või väljatõmmatavate takistite kohta lisateabe saamiseks lugege seda artiklit:
Ühendame nupu ühe külje 5V -ga. Surunupu teine pool ühendatakse maandusega 10 kOhm väljatõmmatava takisti kaudu. Pidage meeles: nupud on sisemiselt horisontaalselt ühendatud. Vajutades on need vertikaalselt ühendatud. Lisateavet leiate sellest artiklist:
Samm 2: Tarkvara seadistamine
Kogu kood on lisatud. Allpool on toodud kõigi funktsioonide kirjeldused koos koodipiltidega.
seadistus:
Funktsioonis setup () tahame konfigureerida oma nupu ja kõlari digitaalsed tihvtid. Tahame seadistada tihvti 2 oma nupu sisendiks ja tihvti 8 oma kõlari väljundiks.
Samuti tahame "külvata" oma juhuslike numbrite generaatorit, et valida juhuslikult viis, kui keegi meie uksekella helistab. Meie juhuslike arvude generaatori külvamine tähendab juhusliku sisendi sisestamist. Me külvame oma juhuslike numbrite generaatori analoogsisendile 0 antud pinge väärtusega. Kuna selle sisendiga pole midagi ühendatud, on sellel tihvtil juhuslik kõikuv pinge, mis annab meie juhuslike arvude generaatorile palju erinevaid väärtusi. See tagab, et meil on uksekella lauluvalikute järjekord erinev. Funktsiooni Arduino random () kohta lisateabe saamiseks külastage siin:
#include "pitchid.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * häälestusfunktsioon */void setup () {// lubage sisend-/väljundnõelad pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seemne juhuslik () funktsioon, nii et saame erineva järjekorra randomSeed (analogRead (0)); }
silmus:
Funktsioonis loop () kontrollime pidevalt, kas nuppu on vajutatud (digitaalne tihvt 2 on kõrge). Kui tihvt on kõrge, ootame 50 ms ja kontrollime uuesti, kas see on endiselt kõrge. See tagab, et nuppu vajutatakse ja digitaalsisendi tihvtil ei olnud hulkuvat müra, mis põhjustas valepositiivse tulemuse.
Kui oleme kinnitanud, et nuppu vajutati, kasutame juhusliku arvu generaatorit, et valida lülitite abil üks viiest loost. Nende lugude andmed salvestatakse kausta "songs.h" ja helikõrguse teave on salvestatud "pitches.h". Kui oleme loo valinud, edastame selle teabe funktsiooni play_song ().
/ * põhiline silmusfunktsioon */
void loop () {// kontrollige, kas nuppu on vajutatud, kui (digitalRead (BUTTON_PIN) == HIGH) {// viivitab 50 ms, veendumaks, et see on ikka veel vajutatud // väldib igasuguseid eksitavaid lugemisviivitusi (50); if (digitalRead (BUTTON_PIN) == HIGH) {// vali juhuslikult lugu int song_choice = random (5); // valige, millist laulu mängida, lüliti (laulu_valik) {juhtum 0: esituslaul (juukselõikusPikkus, soeng, soengKestused, juukselõikusTempo); murda; juhtum 1: play_song (marioLength, mario, marioDurations, marioTempo); murda; juhtum 2: esituslaul (miiPikkus, mii, miiKestused, miiTempo); murda; juhtum 3: play_song (hpPikkus, hp, hpDurations, hpTempo); murda; juhtum 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); murda; vaikimisi: play_song (miiLength, mii, miiDurations, miiTempo); murda; }}}}
play_song:
play_song () võtab 4 argumenti: täisarv noote noodis, meloodia helikõrguste täisarvuline massiiv, kestuse täisarvuline massiiv ja konkreetse laulu täisarv. Peate need esitama iga laulu jaoks, mida soovite esitada. Arduino toonifunktsioonide kasutamise kohta lisateabe saamiseks vaadake seda õpetust: https://www.arduino.cc/en/Tutorial/ToneMelody. Lisasin selle õpetuse peale punktfunktsioonide jaoks mõned funktsioonid. Kui nootide kestuse massiivi väärtus on negatiivne, tähendab see, et see on punktiirmärk (pikkus on 1,5 korda suurem).
/ * mängib laulu */
void play_song (int num_notes, int melody , int noteDurations , int tempo) {// astuge läbi ja esitage kõik noodid (int i = 0; i 0) {duration = tempo / noteDurations ; } // kui see on negatiivne arv, tähendab punktiirmärk // pikendab punktiga nootide puhul kestust poole võrra, kui if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } toon (SPEAKER_PIN, meloodia , kestus); // märkmete eristamiseks määrake nende vahel minimaalne aeg. // noodi kestus + 30% tundub hästi toimivat: int pauseBetweenNotes = kestus * 1,30; delay (pauseBetweenNotes); // lõpetage tooni mängimine: noTone (SPEAKER_PIN); }}
Näide lauludest.h:
Allpool on näidis ühest laulust jaotises "songs.h". Märkmed on makrod, mis on määratletud jaotises "pitch". Numbrid vastavad nootide sagedustele hertsides (Hz). Nootide kestus on määratletud järgmiselt: 1 = terve noot, 2 = poolnoot, 4 = veerandnoot, 8 = kaheksas noot, -4 = punktiirveerand jne. Pikkus on laulu nootide koguarv. Tempo on jagaja laulu kiirusele (suurem number tähendab aeglasemat tempot). Selle numbriga peate mängima, kuni saate endale meelepärase tempo.
/ * 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, -4, 8, 4, 2, 4, 1}; int hpPikkus = 14; int hpTempo = 1050;
3. samm: näpistused
Lisage veel laule! Järgige jaotises "songs.h" näidatud vormingut ja kasutage abi saamiseks õpetust: https://www.arduino.cc/en/Tutorial/ToneMelody. Ärge unustage lisada iga uue loo puhul lüliti avaldusele uut tähestikku ja suurendada maksimaalset arvu, mida teie juhuslik () funktsioon saab genereerida. Head kodeerimist!
Samm: rohkem projekte
Rohkemate projektide jaoks külastage minu lehti:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Soovitan:
Kahetooniline uksekell, kasutades IC 555: 6 sammu
Kahetooniline uksekell, kasutades IC 555: nägin, kuidas keegi müüs Aliexpressis kahe tooni suminit 10 dollari eest. Mu aju ütles kohe, kas sa räägid tõsiselt? Lihtsalt investeerides natuke oma aega ja entusiasmi, saate selle vooluringi teha alla 3 dollari eest
DIY puutevaba uksekell ilma Arduino-ta!: 7 sammu
DIY puutevaba uksekell ilma Arduino !: Uksekella lülitid on üks asi, mida võõrad inimesed kõige rohkem puudutavad. Ja kuna Covid 19 pandeemiast on saanud tõsine probleem, on hea hügieeni säilitamine muutunud tänapäeval esmatähtsaks. Nii et selles õpetlikus näitan teile lihtsat viisi
Arduino koroonaviiruse uksekell: 6 sammu
Arduino koroonaviiruse uksekell: Ülemaailmse koroonaviiruse puhangu tõttu tahan teha uksekella, et te ei pea sees olevatele inimestele signaale vajutama, et olete siin ja nad peavad ukse avama. See asi võib panna teid viiruse saama, puudutades teiste inimeste uksekella
Arduino uksekell: 5 sammu
Arduino uksekell: TARVIKUD-2 leivalauda-sumin-hüppaja juhtmed-2 arduino/Genino koos toitekaablitega-RF saatja ja vastuvõtja-nupp-100 oomi takisti
Arduino uksekell VU -arvestiga: 4 sammu (piltidega)
Arduino uksekell koos VU -arvestiga: Põhiidee on - uksekella vajutamise nupule vajutades hakkavad LED -id koos helisignaaliga rütmiliselt helendama, mõne aja pärast kaks sündmust automaatselt peatuvad. Valgusdioodid võivad olla ukse taga külastaja lõbustamiseks või sees. Selles ma