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

 
» » » Дверной звонок на 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




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

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

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