Оглавление:

Дверной звонок Arduino: 4 шага
Дверной звонок Arduino: 4 шага

Видео: Дверной звонок Arduino: 4 шага

Видео: Дверной звонок Arduino: 4 шага
Видео: Дверной звонок. Arduino и RF модули. RF433 сканер. Ремонт своими руками. 2024, Июль
Anonim
Ардуино дверной звонок
Ардуино дверной звонок

Сегодня я покажу вам, как сделать дверной звонок с помощью Arduino. Этот дверной звонок проигрывает случайную мелодию из библиотеки песен. Вы можете настроить свой дверной звонок и добавить еще больше песен. Установите его вне спальни, класса, офиса или даже у входной двери!

Запасы:

  • Arduino Uno (подойдет большинство других типов)
  • Компьютер с Arduino IDE для программирования
  • Кабель USB-A - USB-B для программирования Arduino
  • Макетная плата
  • 4x перемычки
  • Кнопка или другой переключатель
  • Резистор 10 кОм
  • Пассивный зуммер (например, пьезоэлектрический динамик)
  • Для постоянной установки:

    • Источник питания 9 В постоянного тока или батарея 9 В для питания Arduino
    • 2 длинных провода для проводки кнопки снаружи двери

Шаг 1. Настройка оборудования

Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования

Сначала мы настроим оборудование. Начнем с пассивного зуммера (т.е. динамика). Мы хотим подключить положительный конец пассивного зуммера (обозначенный знаком «+») к цифровому выводу 8 на Arduino. Мы подключим другой конец зуммера Passize к земле.

Далее мы установим кнопку дверного звонка. Мы будем использовать для переключателя внешний понижающий резистор 10 кОм, чтобы на входе Arduino не было плавающего напряжения или нестабильного состояния. Используя понижающий резистор, Arduino считывает напряжение как 0 В, когда кнопка не нажата, и как 5 В, когда кнопка нажата. Для получения дополнительной информации о подтягивающих или понижающих резисторах вы можете прочитать эту статью:

Мы подключим одну сторону кнопки к 5В. Другая сторона кнопки будет подключена к земле через понижающий резистор 10 кОм. Помните: кнопки подключаются внутри горизонтально. Они соединяются только вертикально при нажатии. Более подробная информация представлена в этой статье:

Шаг 2: установка программного обеспечения

Весь код прилагается. Ниже приведены описания каждой из функций со снимками кода.

настраивать:

В функции setup () мы хотим настроить цифровые контакты для нашей кнопки и нашего динамика. Мы хотим настроить контакт 2 как вход для нашей кнопки, и мы хотим настроить контакт 8 как выход для нашего динамика.

Мы также хотим «засеять» наш генератор случайных чисел для случайного выбора мелодии, когда кто-то звонит в наш дверной звонок. Заполнение нашего генератора случайных чисел означает подачу ему случайного ввода. Мы заполним наш генератор случайных чисел значением напряжения на аналоговом входе 0. Поскольку к этому входу ничего не подключено, на этом выводе будет «случайное» колеблющееся напряжение, обеспечивающее наш генератор случайных чисел множеством различных значений. Это гарантирует, что у нас будет другой порядок выбора песен для нашего дверного звонка. Для получения дополнительной информации о функции Arduino random () перейдите сюда:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * настройка функции * / void setup () {// включение контактов ввода / вывода pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, ВЫХОД); // заполняем функцию random (), чтобы получить другой порядок randomSeed (analogRead (0)); }

петля:

В нашей функции loop () мы будем постоянно проверять, нажата ли кнопка (цифровой вывод 2 высокий). Если на выводе высокий уровень, мы ждем 50 мс и снова проверяем, чтобы убедиться, что он все еще высокий. Это гарантирует, что кнопка нажата, и на контакте цифрового входа не будет посторонних шумов, вызывающих ложное срабатывание.

После того, как мы подтвердили, что кнопка была нажата, мы используем наш генератор случайных чисел, чтобы выбрать одну из 5 песен с помощью оператора switch. Данные для этих песен хранятся в «song.h», а информация о высоте - в «pitches.h». Выбрав песню, мы передаем эту информацию в функцию play_song ().

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

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

Образец song.h:

Ниже приведен образец одной из песен в "songs.h". Ноты - это макросы, определенные в «pitch.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/

Рекомендуемые: