Мазмуну:
- 1 -кадам: Аппараттык орнотуу
- 2 -кадам: Программаны орнотуу
- 3 -кадам: Tweaks
- 4 -кадам: Дагы долбоорлор
Video: Arduino Doorbell: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Бүгүн мен сизге Arduino аркылуу эшиктин коңгуроосун кантип жасоону көрсөтөм. Бул эшик коңгуроосу ырлар китепканасынан туш келди обонду ойнойт. Сиз коңгуроону ыңгайлаштырып, андан да көп ырларды кошо аласыз. Аны уктоочу бөлмөнүн, класстын, офистин, ал тургай алдыңкы эшигиңиздин сыртына орнотуңуз!
Берилиштер:
- Arduino Uno (башка түрлөрүнүн көбү жасайт)
- Программалоо үчүн Arduino IDE менен компьютер
- USB-Aдан USB-B кабелине Arduino программалоо
- Breadboard
- 4x секирүүчү зымдар
- Баскыч же башка которгуч
- 10 кОм резистор
- Пассивдүү сигнал (б.а. пьезоэлектрик)
-
Туруктуу орнотуу үчүн:
- 9V DC Power Supply же 9V батарея Arduino кубаттоо үчүн
- Эшиктин сыртындагы зымдын баскычы үчүн 2х узун зымдар
1 -кадам: Аппараттык орнотуу
Биринчиден, биз аппараттык орнотобуз. Биз пассивдүү сигналдан баштайбыз (б.а. спикер). Биз пассивдүү сигналдын оң жагын ("+" белгиси менен белгиленет) Arduinoдогу санарип пинге 8 туташтыргыбыз келет. Биз passize ызылчасынын экинчи башын жерге туташтырабыз.
Андан кийин, биз эшиктин коңгуроосун орнотобуз. Биз которуштуруу үчүн 10 kOhm тышкы ачылуучу резисторду колдонобуз, андыктан Arduino кирүүсүндө калкып турган чыңалуу же туруксуз абал жок. Пайда болгон резисторду колдонуу менен, Arduino баскыч басылбаган кезде чыңалууну 0В жана баскыч басылганда 5В деп окуйт. Тартуу же түшүү каршылыгы жөнүндө көбүрөөк маалымат алуу үчүн, бул макаланы окуй аласыз:
Биз баскычтын бир тарабын 5Вга туташтырабыз. Баскычтын экинчи тарабы жерге 10 кОм түшүүчү резистор аркылуу туташат. Эсиңизде болсун: баскычтар ички горизонталдуу туташтырылган. Алар басылганда гана тигинен туташат. Көбүрөөк маалымат бул макалада келтирилген:
2 -кадам: Программаны орнотуу
Бардык код тиркелет. Төмөндө коддун сүрөттөрү менен ар бир функциянын сүрөттөмөсү келтирилген.
жайгашуу:
Setup () функциясында биз баскыч менен динамигибиз үчүн санарип казыктарды конфигурация кылгыбыз келет. Биз 2 -пинди баскычыбыздын кириши катары конфигурациялоону каалайбыз жана 8 -пинди спикерибиздин чыгышы катары конфигурациялоону каалайбыз.
Биз ошондой эле кимдир бирөө биздин коңгурообузду чалганда, обонду туш келди тандоо үчүн кокус сандар генераторун "уруктандыргыбыз" келет. Биздин кокус сандардын генераторун себүү, аны кокусунан киргизүү дегенди билдирет. Биз кокустук сан генераторубузду аналогдук киришке 0 чыңалуусу менен себебиз. Бул кирүүгө эч нерсе туташпагандыктан, бул пинде ар кандай мааниге ээ болгон кокустук сандар генераторун камсыз кылган "кокус", өзгөрмөлүү чыңалуу болот. Бул биздин коңгурообуз үчүн ыр тандоонун башка тартибине ээ болууну камсыз кылат. Arduino random () функциясы жөнүндө көбүрөөк маалымат алуу үчүн бул жерге өтүңүз:
#"кадамдарды.h" кошуу
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * орнотуу функциясы */void setup () {// pinMode (BUTTON_PIN, INPUT) киргизүү/чыгаруу түйрөгүчтөрүн иштетүү; pinMode (SPEAKER_PIN, OUTPUT); // seed random () функциясы, ошондуктан башка заказды алабыз randomSeed (analogRead (0)); }
цикл:
Биздин loop () функциясында, биз баскычтын басылганын текшерип турабыз (санарип пин 2 бийик). Эгерде пин жогору болсо, биз 50 мс күтөбүз жана дагы эле жогору экенине ынануу үчүн кайра текшеребиз. Бул баскычтын басылышын камсыздайт жана ал санарип кирүү пининде жалган позитивди жараткан ызы -чуу эмес.
Кнопка басылганын ырастагандан кийин, биз туш келди сандын генераторун колдонуп, 5 ырдын бирөөсүн которуу операторунун жардамы менен тандап алабыз. Бул ырлардын маалыматтары "songs.h" де сакталат жана "pitch.h" де сакталат. Ырды тандап алгандан кийин, бул маалыматты play_song () функциясына өткөрүп беребиз.
/ * main while while функциясы */
void loop () {// баскычынын басылганын текшериңиз, эгерде (digitalRead (BUTTON_PIN) == HIGH) {// 50 мс кечиктирилсе дагы эле басылганына ынануу үчүн // эч кандай адашып кетүү кечигүүсүнөн сактайт (50); if (digitalRead (BUTTON_PIN) == HIGH) {// туш келди ырды танда int int_choice = random (5); // кайсы ырды ойнотууну тандаңыз (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); тыныгуу; 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 tempo) {// (int i = 0; i 0) {Duration = temp / noteDurations үчүн бардык ноталарды басып өтүңүз. } // эгерде бул терс сан болсо, чекитти билдирет // чекит ноталардын узактыгын эки эсе көбөйтөт, эгерде (noteDurations <0) {Duration = tempo / abs (noteDurations ) * 1.5; } обон (SPEAKER_PIN, обон , узактыгы); // ноталарды айырмалоо үчүн, алардын ортосундагы минималдуу убакытты белгилөө. // нотанын узактыгы + 30% жакшы иштейт окшойт: int pauseBetweenNotes = Duration * 1.30; кечигүү (pauseBetweenNotes); // обон ойнотууну токтотуу: noTone (SPEAKER_PIN); }}
Ырлардын үлгүсү.h:
Төмөндө "songs.h" ырларынын биринин үлгүсү келтирилген. Эскертүүлөр "pitches.h" менен аныкталган макростар. Сандар герцтеги (Hz) ноталардын жыштыгына туура келет. Ноталардын узактыгы төмөнкүчө аныкталат: 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 -кадам: Tweaks
Дагы ырларды кошуңуз! "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/
Сунушталууда:
UK Ring Video Doorbell Pro механикалык коңгуроо менен иштөө: 6 кадам (сүрөттөр менен)
Улуу Британиянын Ring Video Doorbell Pro механикалык коңгуроо менен иштөө: ************************************** *************** Бул ыкма азыр AC кубаты менен гана иштээрине көңүл буруңуз, эгерде мен DC кубатын колдонуп эшиктин коңгуроосуна чечим тапканымда, эгерде сизде DC кубаты болсо камсыздоо, сизге керек болот
Raspberry Pi DIY Smart Doorbell, бул адамдарды, унааларды жана башкаларды аныктай алат: 5 кадам
Raspberry Pi DIY Smart Doorbell, бул адамдарды, унааларды жана башкаларды аныктай алат: Бул steampunk-тематикалык дизайн үйдүн жардамчысы жана биздин көп бөлмөлүү аудио тутумубуз менен интеграцияланып, биздин DIY акылдуу үйүбүздүн калган бөлүгү менен байланышат. Nest же башка атаандаштардын бири) Мен өзүбүздүн акылдуу эшигибизди жасадык
Doorbell Assistive Switch: 21 кадам
Doorbell Assistive Switch: Doorbell Assistive Switch - күнүмдүк материалдарды колдонгон жардамчы технологиянын мисалы. Бул кадимки эшиктин коңгуроосун өзгөртүп, өзгөчө муктаждыктары бар балдарга күнүмдүк буюмдарды колдонууга мүмкүнчүлүк берет
Hands-free Doorbell: 5 кадам
Колдонуусуз эшиктин коңгуроосу: Карантин учурунда эшиктин коңгуроосу микробдорду жайылтуунун чоң жолу болуп саналат, анткени көптөгөн адамдар аларга тийишет. Ошентип, биз телефонуңузга электрондук кат жөнөтүүчү, сыртта жүргөн адамдардын кыймылын аныктоочу, коңгуроону ойлоп таптык. Электрондук почтада ал кимдин жүзүн көрсөтөт
Arduino Doorbell: 5 кадам
Arduino Doorbell: SUPPLIES-2 нан такталары-ызылдатуу-зымдары-2 arduino/genuino электр кабелдери менен-rf өткөргүч жана ресивер-баскыч баскычы-100 ом каршылыгы