Съдържание:

Звънец на вратата на Arduino: 4 стъпки
Звънец на вратата на Arduino: 4 стъпки

Видео: Звънец на вратата на Arduino: 4 стъпки

Видео: Звънец на вратата на Arduino: 4 стъпки
Видео: Свидание в 16 vs 26 лет 😨😳 2024, Ноември
Anonim
Ардуино звънец на вратата
Ардуино звънец на вратата

Днес ще ви покажа как да направите звънец на вратата с помощта на Arduino. Този звънец на вратата изпълнява произволна мелодия от библиотека с песни. Можете да персонализирате звънеца на вратата си и да добавите още повече песни. Инсталирайте го извън вашата спалня, класна стая, офис или дори входната врата!

Консумативи:

  • Arduino Uno (повечето други видове ще го направят)
  • Компютър с Arduino IDE за програмиране
  • USB-A към USB-B кабел за програмиране на Arduino
  • Платка
  • 4x джъмперни проводници
  • Бутон или друг ключ
  • 10 kOhm резистор
  • Пасивен зумер (т.е. пиезоелектрически високоговорител)
  • За постоянен монтаж:

    • 9V DC захранване или 9V батерия за захранване на Arduino
    • 2x дълги проводници за окабеляване на бутон извън вратата

Стъпка 1: Настройка на хардуера

Хардуерна настройка
Хардуерна настройка
Хардуерна настройка
Хардуерна настройка
Хардуерна настройка
Хардуерна настройка

Първо ще настроим хардуера. Ще започнем с пасивния зумер (т.е. говорител). Искаме да свържем положителния край на пасивния зумер (означен със знак "+") към цифров пин 8 на Arduino. Ще свържем другия край на пасивния зумер със земята.

След това ще инсталираме бутона за звънеца на вратата. Ще използваме 10 kOhm външен резистор за сваляне, така че няма плаващо напрежение или нестабилно състояние на входа на Arduino. Използвайки падащия резистор, Arduino отчита напрежението като 0V, когато бутонът не е натиснат, и 5V, когато бутонът е натиснат. За повече информация относно издърпващи или падащи резистори можете да прочетете тази статия:

Ще свържем едната страна на бутона с 5V. Другата страна на бутона ще бъде свързана към земята чрез 10 kOhm резистор. Запомнете: бутоните са свързани хоризонтално вътрешно. Те са свързани вертикално само при натискане. Повече информация е предоставена в тази статия:

Стъпка 2: Настройка на софтуера

Целият код е приложен. По -долу са описанията на всяка от функциите със снимки на кода.

настройвам:

Във функцията setup () искаме да конфигурираме цифровите щифтове за нашия бутон и нашия високоговорител. Искаме да конфигурираме щифт 2 като вход за нашия бутон и искаме да конфигурираме щифт 8 като изход за нашия говорител.

Искаме също така да "посеем" нашия генератор на произволни числа за произволен избор на мелодия, когато някой позвъни на вратата ни. Засяването на нашия генератор на случайни числа означава подаване на произволен вход. Ние ще засеем нашия генератор на случайни числа със стойността на напрежението на аналоговия вход 0. Тъй като нищо не е свързано към този вход, ще има "произволно", колебаещо се напрежение на този щифт, осигуряващо на нашия генератор на случайни числа много различни стойности. Това гарантира, че ще имаме различен ред на избор на песни за звънеца на вратата. За повече информация относно функцията Arduino random () отидете тук:

#include "pitches.h"

#include "songs.h" #deteine BUTTON_PIN 2 #define SPEAKER_PIN 8/ * set up function */void setup () {// активиране на входни/изходни щифтове pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // семена random () функция, така че да получим различен ред randomSeed (analogRead (0)); }

цикъл:

В нашата функция loop () ние непрекъснато ще проверяваме дали бутонът е натиснат (цифров щифт 2 е висок). Ако щифтът е висок, изчакваме 50 ms и проверяваме отново, за да се уверим, че все още е висок. Това гарантира, че бутонът е натиснат и че няма разсеяни шумове на цифровия входен щифт, причиняващи фалшиво положително.

След като потвърдим, че бутонът е натиснат, използваме генератора на случайни числа, за да изберем една от 5 -те песни, използвайки оператор switch. Данните за тези песни се съхраняват в „songs.h“, а информацията за височината се съхранява в „pitches.h“. След като изберем песен, ние предаваме тази информация във функцията play_song ().

/ * основна функция за цикъл */

void loop () {// проверете дали бутонът е натиснат if (digitalRead (BUTTON_PIN) == HIGH) {// забавяне 50 ms, за да се уверите, че е все още натиснато // избягва всякакви закъснения при неправилно четене (50); if (digitalRead (BUTTON_PIN) == HIGH) {// произволно изберете песен int song_choice = random (5); // изберете коя песен да пуснете превключвател (song_choice) {случай 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 = tempo / noteDurations ; } // ако е отрицателно число, означава бележка с точки // увеличава наполовина продължителността на точки с бележки иначе if (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } тон (SPEAKER_PIN, мелодия , продължителност); // за да разграничите бележките, задайте минимално време между тях. // продължителността на бележката + 30% изглежда работи добре: int pauseBetweenNotes = продължителност * 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: Променете

Добавете още песни! Следвайте формата, показан в „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/

Препоръчано: