цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Дверной звонок на Arduino своими руками: с музыкой и цветовой индикацией

Дверной звонок на Arduino своими руками: с музыкой и цветовой индикацией

Автор: Mike(admin) от 19-10-2017, 20:25

На сегодняшний день существует большое количество различных типов дверных звонков: от самых простых однотоновых до музыкальных. Иногда дверной звонок дает первое впечатление гостям о некоторых предпочтениях хозяина жилища.


Дверной звонок на Arduino своими руками

Какой-нибудь необычный дверной звонок можно купить в магазине, отдав за такой немало денег, а можно сделать самому с помощью популярной платы для прототипирования Arduino.


Данный проект на Arduino предполагает создание звукового многотонового дверного звонка с цветовой индикацией, выполненной на основе трех светодиодов. Принцип работы такого дверного звонка заключается в следующем: после нажатия кнопки мелодия запускается и затем через некоторое время автоматически останавливается, а светодиоды светятся ритмично во время звучания мелодии. Схема подключения элементов для создания дверного звонка на основе Arduino представлена ниже. Здесь пьезозуммер подключается к восьмому контакту Arduino, кнопка активации звонка через резистор 1 КОм подключается к двенадцатому контакту Arduino, а светодиоды подключаются через резисторы 221 Ом к контактам 3, 4 и 5 платы Arduino.


Дверной звонок на Arduino своими руками: схема подключения

Основной код программы (main code) приведен далее. Но здесь следует заметить, что данный скетч основан на официальном примере ToneMelody (arduino.cc/en/Tutorial/ToneMelody), а точнее на файле констант тонов под заголовком Public Constants. Для использования этих констант помимо вкладки с основным кодом откройте новую вкладку, назовите ее pitches.h и скопируйте в нее содержимое (все константы) из Public Constants примера ToneMelody, иначе при компиляции кода вы получите сообщение об ошибке, связанной с pitches.h. Основной скетч программы:



#include "pitches.h"  // добавление библиотеки констант тонов
//ноты в мелодии
int melody[]={NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};
// кнопка дверного звонка подключается к линии 12
int buttonPin= 12;
const int rPin = 5;  // красный светодиод
const int gPin = 4;  // зеленый светодиод
const int bPin = 3;  // синий светодиод
int ledState = 0;
int ledOn = false;
// продолжительность ноты, 4 = четверть ноты / 8 = одна восьмая ноты
int noteDurations[]={4, 8, 8, 4, 4, 4, 4, 4};
void setup(){
 // линия с подключенной кнопкой настраивается на вход
 pinMode(buttonPin, INPUT);
 pinMode(rPin, OUTPUT);
 pinMode(gPin, OUTPUT);
 pinMode(bPin, OUTPUT);
}
void loop(){
 // считываем вход
 int buttonState = digitalRead(buttonPin);
 // если кнопка нажата
 if (buttonState == 1){
   // перебираем ноты мелодии
   for (int thisNote=0; thisNote <8; thisNote++){
     // мигаем светодиодами с определенной последовательностью
     if (thisNote%3==0){    
       digitalWrite(rPin, HIGH);
       digitalWrite(gPin, LOW);
       digitalWrite(bPin, LOW);
     }
     else if (thisNote%3==1){    
       digitalWrite(rPin, LOW);
       digitalWrite(gPin, HIGH);
       digitalWrite(bPin, LOW);
     }
     else if (thisNote%3==2){    
       digitalWrite(rPin, LOW);
       digitalWrite(gPin, LOW);
       digitalWrite(bPin, HIGH);
     }
     // для вычисления длительности ноты потребуется одна секунда
     int noteDuration = 1000 / noteDurations [thisNote];
     tone(8, melody [thisNote], noteDuration);
     // чтобы различать ноты, установим минимальное время между ними
     // длительность ноты +30% звучит хорошо
     int pauseBetweenNotes = noteDuration * 1.30;
     delay(pauseBetweenNotes);
     // остановить воспроизведение нот
     noTone(8);
   }
 }
}



© digitrode.ru


Теги: Arduino



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий