Мазмұны:

Ардуино есік қоңырауы: 4 қадам
Ардуино есік қоңырауы: 4 қадам

Бейне: Ардуино есік қоңырауы: 4 қадам

Бейне: Ардуино есік қоңырауы: 4 қадам
Бейне: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Қараша
Anonim
Ардуино есік қоңырауы
Ардуино есік қоңырауы

Бүгін мен сізге Arduino көмегімен есік қоңырауын қалай жасау керектігін көрсетемін. Бұл қоңырау әндер кітапханасынан кездейсоқ әуенді ойнайды. Сіз қоңырауды реттей аласыз және одан да көп әндерді қоса аласыз. Оны жатын бөлмеден, сыныптан, кеңседен немесе тіпті есіктің сыртына орнатыңыз!

Жабдықтар:

  • Arduino Uno (басқа түрлердің көпшілігі жасайды)
  • Бағдарламалауға арналған Arduino IDE бар компьютер
  • Arduino бағдарламалауға арналған USB-A-USB-B кабелі
  • Нан тақтасы
  • 4x өтпелі сымдар
  • Түйме немесе басқа қосқыш
  • 10 кОм резистор
  • Пассивті дыбыстық сигнал (мысалы, пьезоэлектрлік динамик)
  • Тұрақты орнату үшін:

    • 9V тұрақты ток көзі немесе 9V батареясы Arduino -ны қуаттандырады
    • Есіктің сыртындағы түймені қосуға арналған 2х ұзын сымдар

1 -қадам: Жабдықты орнату

Жабдықты орнату
Жабдықты орнату
Жабдықты орнату
Жабдықты орнату
Жабдықты орнату
Жабдықты орнату

Алдымен біз жабдықты орнатамыз. Біз пассивті дыбыстық сигналдан (яғни динамиктен) бастаймыз. Біз пассивті дыбыстық сигналдың оң жағын («+» белгісімен белгіленеді) Arduino цифрлық түйреуіш 8 -ге қосқымыз келеді. Біз дыбыстық сигналдың екінші ұшын жерге қосамыз.

Содан кейін біз есік қоңырауының түймесін орнатамыз. Біз коммутатор үшін 10 кОм сыртқы тартылатын резисторды қолданамыз, сондықтан Arduino кірісіне өзгермелі кернеу немесе тұрақсыз күй жоқ. Ажыратылатын резисторды қолдана отырып, Arduino түйме басылмаған кезде кернеуді 0В және түйме басылған кезде 5В деп оқиды. Резисторлар туралы қосымша ақпарат алу үшін мына мақаланы оқи аласыз:

Біз түйменің бір жағын 5В қосамыз. Түйменің екінші жағы жерге 10 кОм тартылатын резистор арқылы қосылады. Есіңізде болсын: түймелер ішкі жағынан көлденеңінен қосылған. Олар басылған кезде ғана тігінен қосылады. Қосымша ақпарат осы мақалада берілген:

2 -қадам: Бағдарламалық қамтамасыз етуді орнату

Барлық код қосылады. Төменде кодтың суреттері бар әр функцияның сипаттамасы берілген.

орнату:

Setup () функциясында біз түймеге және динамикке арналған цифрлық түйреуіштерді конфигурациялағымыз келеді. Біз 2 түйреуішті түйменің кірісі ретінде, ал 8 істікшені динамик үшін шығыс ретінде конфигурациялағымыз келеді.

Біз сондай -ақ кездейсоқ сандар генераторын біреу біздің қоңырауды шырылдағанда кездейсоқ таңдауға арналған «ұрпақ» алғымыз келеді. Біздің кездейсоқ сандар генераторын себу оны кездейсоқ енгізуді білдіреді. Біз кездейсоқ сандар генераторын 0 аналогтық кірістегі кернеу мәніне отырғызамыз. Бұл кіріске ештеңе қосылмағандықтан, бұл кездейсоқ сандар генераторын әр түрлі мәндермен қамтамасыз ететін «кездейсоқ» өзгеретін кернеу болады. Бұл біздің есік қоңырауына ән таңдаудың басқа тәртібіне ие болуды қамтамасыз етеді. Arduino random () функциясы туралы қосымша ақпарат алу үшін мына жерге өтіңіз:

#«қадамдар.h» қосыңыз

#include «songs.h» #deveine BUTTON_PIN 2 #defeine SPEAKER_PIN 8/ * функцияны реттеу */void setup () {// pinMode (BUTTON_PIN, INPUT) кіріс/шығыс түйреуіштерін қосу; pinMode (SPEAKER_PIN, OUTPUT); // seed random () функциясы, осылайша біз басқа тапсырысты аламыз randomSeed (analogRead (0)); }

цикл:

Біздің цикл () функциясында біз түйменің басылғанын тексереміз (сандық түйреуіш 2 жоғары). Егер түйреуіш жоғары болса, біз 50 мс күтеміз және оның әлі де жоғары екеніне көз жеткізу үшін қайтадан тексереміз. Бұл батырманың басылуын және сандық кіріс түйреуішінде жалған позитивті тудыратын шуыл болмауын қамтамасыз етеді.

Түйменің басылғанын растағаннан кейін біз кездейсоқ сандар генераторын пайдаланып коммутатор арқылы 5 әннің бірін таңдаймыз. Бұл әндердің деректері «songs.h» -те сақталады, ал дыбыс туралы ақпарат «pitches.h» -те сақталады. Әнді таңдағаннан кейін біз бұл ақпаратты play_song () функциясына береміз.

/ * main while цикл функциясы */

void loop () {// (digitalRead (BUTTON_PIN) == HIGH) {// түймесінің басылғанын тексеріңіз, егер ол әлі басылғанына көз жеткізу үшін 50 мс кешіктірілсе // кез келген адасып оқуды кешіктіруден сақтайды (50); if (digitalRead (BUTTON_PIN) == HIGH) {// кездейсоқ әнді таңдаңыз int song_choice = random (5); // қай әнді ойнату керектігін таңдаңыз (song_choice) {0 жағдай: play_song (haircutLength, haircut, haircutDurations, haircutTTempo); үзіліс; 1 -жағдай: play_song (marioLength, mario, marioDurations, marioTempo); үзіліс; 2 -жағдай: play_song (miiLength, mii, miiDurations, miiTempo); үзіліс; 3 -жағдай: play_song (hpLength, hp, hpDurations, hpTempo); үзіліс; 4 -жағдай: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); үзіліс; әдепкі: play_song (miiLength, mii, miiDurations, miiTempo); үзіліс; }}}}

play_song:

play_song () 4 аргументті алады: әндегі ноталардың бүтін саны, әуендегі дыбыстардың бүтін саны, ұзақтығының бүтін массиві және сол әннің бүтін санының темпі. Сіз ойнағыңыз келетін әр ән үшін олардың әрқайсысын көрсетуіңіз керек. Arduino тон функцияларын пайдалану туралы қосымша ақпарат алу үшін мына оқулықты қараңыз: https://www.arduino.cc/en/Tutorial/ToneMelody. Мен осы оқулықтың үстіне нүктелі жазбалар үшін кейбір мүмкіндіктерді қостым. Егер нотаның ұзақтығы массивіндегі мән теріс болса, бұл нүктелі нота екенін білдіреді (ұзындығы 1,5 есе үлкен).

/ * әнді ойнайды */

void play_song (int num_notes, int melody , int noteDurations , int temp) {// (int i = 0; i 0) {ұзақтығы = tempo / noteDurations ; } // егер бұл теріс сан болса, ол нүктелі жазбаны білдіреді // басқа нүктелі жазбалардың ұзақтығын екі есеге арттырады, егер (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } тон (SPEAKER_PIN, әуен , ұзақтығы); // жазбаларды ажырату үшін олардың арасындағы ең аз уақытты белгілеңіз. // жазбаның ұзақтығы + 30% жақсы жұмыс істейтін сияқты: int pauseBetweenNotes = ұзақтығы * 1.30; кідіріс (pauseBetweenNotes); // тонды ойнатуды тоқтатыңыз: noTone (SPEAKER_PIN); }}

Әндер үлгісі: h:

Төменде «songs.h» ішіндегі әндердің бірінің үлгісі берілген. Ескертулер «pitches.h» ішінде анықталған макростар болып табылады. Сандар герц (Гц) ноталарының жиілігіне сәйкес келеді. Жазбалардың ұзақтығы келесідей анықталады: 1 = толық нота, 2 = жартылай нота, 4 = тоқсандық ноталар, 8 = сегізінші ноталар, -4 = нүктелі тоқсандық ноталар және т.б. Ұзындығы -бұл әндегі жазбалардың жалпы саны. Қарқын - бұл әннің жылдамдығына арналған бөлгіш (жоғары сан баяу темпті білдіреді). Сізге ұнайтын қарқын алғанша осы нөмірмен ойнауға тура келеді.

/ * Гарри Поттер */

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 hpLength = 14; int hpTempo = 1050;

3 -қадам: Түзеу

Басқа әндер қосыңыз! «Songs.h» -те көрсетілген форматты орындаңыз және көмек алу үшін оқулықты пайдаланыңыз: https://www.arduino.cc/en/Tutorial/ToneMelody. Сіз қосқан әрбір жаңа ән үшін switch операторына жаңа регистр қосуды және random () функциясы арқылы жасалатын максималды санды көбейтуді ұмытпаңыз. Бақытты кодтау!

4 -қадам: Басқа жобалар

Қосымша жобалар үшін менің беттеріме кіріңіз:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

Ұсынылған: