Агуулгын хүснэгт:

Arduino Doorbell: 4 алхам
Arduino Doorbell: 4 алхам

Видео: Arduino Doorbell: 4 алхам

Видео: Arduino Doorbell: 4 алхам
Видео: Amazing arduino project 2024, Арваннэгдүгээр
Anonim
Ардуино хаалганы хонх
Ардуино хаалганы хонх

Өнөөдөр би танд Arduino ашиглан хаалганы хонх хэрхэн хийхийг үзүүлэх болно. Энэ хаалганы хонх нь дууны номын сангаас санамсаргүй байдлаар тоглодог. Та хаалганыхаа хонхыг өөрчилж, бүр илүү олон дуу нэмж болно. Унтлагын өрөө, анги, оффис, тэр ч байтугай үүднийхээ гадаа суулгаарай!

Хангамж:

  • Arduino Uno (бусад ихэнх төрлүүд хийх болно)
  • Програмчлалын зориулалттай Arduino IDE бүхий компьютер
  • Arduino програмчлахад зориулагдсан USB-A-USB-B кабель
  • Талхны самбар
  • 4х холбогч утас
  • Товчлуур эсвэл бусад унтраалга
  • 10 кОм эсэргүүцэл
  • Идэвхгүй дуугаралт (жишээ нь пьезоэлектрик чанга яригч)
  • Байнгын суулгахын тулд:

    • 9V DC тэжээлийн хангамж эсвэл 9V батерей нь Arduino -ийг тэжээдэг
    • Хаалганы гадна талын товчлуурыг холбох 2х урт утас

Алхам 1: Тоног төхөөрөмжийн тохиргоо

Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо

Нэгдүгээрт, бид тоног төхөөрөмжийг тохируулах болно. Бид идэвхгүй дуугаруулагч (өөрөөр хэлбэл чанга яригч) -аас эхлэх болно. Бид идэвхгүй дохионы эерэг үзүүрийг ("+" тэмдгээр тэмдэглэсэн) Arduino дээрх дижитал зүү 8 -тай холбохыг хүсч байна. Бид passize дуугаралтын нөгөө үзүүрийг газартай холбоно.

Дараа нь бид хаалганы хонхны товчлуурыг суулгана. Шилжүүлэгчийн хувьд бид 10 кОм -ийн хүчин чадалтай гадаад эсэргүүцэгчийг ашиглах тул Arduino -ийн оролт дээр хөвөгч хүчдэл, тогтворгүй төлөв байхгүй байна. Татах эсэргүүцэл ашиглан Arduino нь товчлуур дарагдаагүй үед хүчдэлийг 0В, товчлуурыг дарахад 5V гэж уншдаг. Татах эсвэл татах эсэргүүцлийн талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл энэ нийтлэлийг уншиж болно:

Бид товчлуурын нэг талыг 5V -т холбоно. Түлхүүр товчлуурын нөгөө тал нь 10 кОм эсэргүүцэлтэй эсэргүүцэгчээр дамжин газардуулагдах болно. Санаж байна уу: товчлуурууд нь хэвтээ байдлаар дотооддоо холбогддог. Тэд дарагдсан үед зөвхөн босоо байдлаар холбогддог. Дэлгэрэнгүй мэдээллийг энэ нийтлэлд өгсөн болно:

Алхам 2: Програм хангамжийн тохиргоо

Бүх кодыг хавсаргасан болно. Доорх кодын хормын хувилбар бүхий функц бүрийн тайлбарыг энд оруулав.

тохируулах:

Setup () функц дээр бид товчлуур болон чанга яригчийнхаа дижитал тээглүүрийг тохируулахыг хүсч байна. Бид 2 -р зүүг товчлуурын оролт болгон, 8 -р зүүг чанга яригчийн гаралт болгон тохируулахыг хүсч байна.

Бид мөн хэн нэгэн бидний хаалганы хонхыг дарахад аяыг санамсаргүй байдлаар сонгох санамсаргүй тооны генераторыг "үржүүлэхийг" хүсч байна. Манай санамсаргүй тооны генераторыг тарина гэдэг нь түүнд санамсаргүй оролт өгөхийг хэлнэ. Бид санамсаргүй тооны үүсгүүрээ 0 аналог оролт дээр хүчдэлийн утгаар суулгана. Энэ оролтонд юу ч холбогдоогүй тул энэ санамсаргүй тооны генераторыг олон янзын утгаар хангах "санамсаргүй", хэлбэлзэлтэй хүчдэл байх болно. Энэ нь бид хаалганы хонхны дуу сонгох өөр дараалалтай байх болно. Arduino random () функцын талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл эндээс үзнэ үү:

#"давирхай.h" оруулах

#include "songs.h" #BUTTON_PIN 2 -ийг тодорхойлох #SPEAKER_PIN 8/ * функцийг тохируулах */void setup () {// оролт/гаралтын тээглүүрийг идэвхжүүлэх pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () функц, ингэснээр бид өөр захиалга авах болно randomSeed (analogRead (0)); }

гогцоо:

Бидний loop () функц дээр бид товчлуур дарагдсан эсэхийг шалгах болно (дижитал зүү 2 өндөр). Хэрэв зүү өндөр байвал бид 50 ms хүлээгээд өндөр хэвээр байгаа эсэхийг дахин шалгана уу. Энэ нь товчлуур дээр дарагдсан бөгөөд дижитал оролтын зүү дээр дуу чимээ гараагүй бөгөөд энэ нь хуурамч эерэг зүйл үүсгэсэн болно.

Товчлуур дарагдсан болохыг баталгаажуулсны дараа бид санамсаргүй тооны үүсгүүрээ ашиглан 5 дууны аль нэгийг нь сольж өгөх командыг ашиглан сонгож авдаг. Эдгээр дуунуудын өгөгдлийг "songs.h" -д, давтамжийн мэдээллийг "pitches.h" -д хадгалдаг. Дуу сонгосны дараа бид энэ мэдээллийг play_song () функцэд дамжуулдаг.

/ * main while loop функц */

void loop () {// (digitalRead (BUTTON_PIN) == HIGH) {// товчлуур дарагдсан эсэхийг шалгахын тулд дарагдсан хэвээр байгаа эсэхийг шалгахын тулд 50 ms -ийг хойшлуулна уу. if (digitalRead (BUTTON_PIN) == HIGH) {// санамсаргүй байдлаар сонгоно уу int song_choice = random (5); // аль дууг тоглуулахыг сонгоно уу (дууны сонголт) {тохиолдол 0: тоглох_ дуу завсарлага; тохиолдол 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 () нь 4 аргументыг авдаг: дууны бүхэл тооны тэмдэглэл, аялгууны давтамжийн бүхэл тоо, үргэлжлэх хугацааны бүхэл тоо, тухайн дууны бүхэл тооны хэмнэл. Та тоглохыг хүссэн дуу бүрийн хувьд эдгээрийг тус бүрээр нь зааж өгөх ёстой. Arduino -ийн аяны функцийг ашиглах талаар нэмэлт мэдээлэл авахыг хүсвэл энэ хичээлийг үзнэ үү: https://www.arduino.cc/en/Tutorial/ToneMelody. Би энэ гарын авлага дээр тасархай тэмдэглэл хийх зарим функцийг нэмсэн. Хэрэв тэмдэглэлийн үргэлжлэх массивын утга сөрөг байвал энэ нь тасархай тэмдэглэл гэсэн үг (урт нь 1.5 дахин их).

/ * дууг тоглодог */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// (int i = 0; i 0) {duration = 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. Таны оруулсан шинэ дуу бүрийн хувьд шилжүүлэгчийн мэдэгдэлд шинэ тохиолдол нэмж, random () функцээр үүсгэж болох хамгийн их тоог нэмэгдүүлэхээ мартуузай. Аз жаргалтай кодчилол!

Алхам 4: Бусад төслүүд

Бусад төслүүдийн талаар миний хуудсуудаас үзээрэй.

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

Зөвлөмж болгож буй: