Главная » Arduino
Призовой фонд
на август 2019 г.
1. 1000 руб
Паяльник
2. Тестер компонентов MG328
Паяльник
3. 200 руб.
От пользователей

Простейший звонок с двумя мелодиями

Звонок состоит собственно из Ардуино(в моём случае Nano, пойдёт любая), двух тактовых кнопок и динамика.

Одна кнопка меняет мелодию(4 пин), другая проигрывает её(5 пин). Кнопки имеют четыре ноги - по две с каждой стороны. Они соединены с землёй на Ардуино через резистор на 10кОм. С другой стороны любая из ног соединяется с 4 или 5 пином, соответственно с назначением данной кнопки.  Всего мелодий две  - главная тема Звёздных войн и тема Вейдера, т.е. Имперский марш. При желании можно самому внести изменения в код и добавить любую другую мелодию. Для воспроизведения звука используется стандартная ардуиновская функция tone(), которая принимает три параметра - номер пина динамика, частоту ноты, длительность ноты. Номер пина  - 3.

Номер выбранной мелодии записывается в EEPROM, так что отключение питания не представляет собой никакой угрозы для звонка.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Nano 3.0
1 Поиск в Utsource В блокнот
Резистор
10 кОм
2 Можно обойтись однимПоиск в Utsource В блокнот
Тактовая кнопка2 Поиск в Utsource В блокнот
Динамик1 Поиск в Utsource В блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 1
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 3.6 Проголосовало: 2 чел.

Комментарии (4) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
дмитрий #
Тема звёздных войн фальшивит.
Ответить
0
Ramil48 #
Не открывается скетч скинь пожалуйста сам код
Ответить
0

[Автор]
Andii5 #

#define c3 7634
#define d3 6803
#define e3 6061
#define f3 5714
#define g3 5102
#define a3 4545
#define b3 4049
#define c4 3816
#define d4 3401
#define e4 3030
#define f4 2865
#define g4 2551
#define a4 2272
#define a4s 2146
#define b4 2028
#define c5 1912
#define d5 1706
#define d5s 1608
#define e5 1517
#define f5 1433
#define g5 1276
#define a5 1136
#define a5s 1073
#define b5 1012
#define c6 955
#define R 0
#include <EEPROM.h>
int speakerOut = 3;
int melody1[] = {a4, R, a4, R, a4, R, f4, R, c5, R, a4, R, f4, R, c5, R, a4, R, e5, R, e5, R, e5, R, f5, R, c5, R, g5, R, f5, R, c5, R, a4, R};
int beats1[] = {50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 80, 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 40};
int melody2[] = {f4, f4, f4, a4s, f5, d5s, d5, c5, a5s, f5, d5s, d5, c5, a5s, f5, d5s, d5, d5s, c5};
int beats2[] = {21, 21, 21, 128, 128, 21, 21, 21, 128, 64, 21, 21, 21, 128, 64, 21, 21, 21, 128};
long tempo = 10000;
int pause = 1000;
int rest_count = 50;
int toneM = 0;
int beat = 0;
long duration = 0;
boolean buttonmelody = 0;
boolean buzzer = 0;
int cv = 1;
int MAX_COUNT1 = sizeof(melody1) / 2;
int MAX_COUNT2 = sizeof(melody2) / 2;
const int buttonPin = 4;
const int buzzerInput = 5;
void setup() {
pinMode(speakerOut, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(buzzerInput, INPUT_PULLUP);
}

void playTone() {
long elapsed_time = 0;
if (toneM > 0) {
while (elapsed_time < duration) {
digitalWrite(speakerOut,HIGH);
delayMicroseconds(toneM / 2);
digitalWrite(speakerOut, LOW);
delayMicroseconds(toneM / 2);
elapsed_time += (toneM);
}
}
else {
for (int j = 0; j < rest_count; j++) {
delayMicroseconds(duration);
}
}
}

void loop() {
buttonmelody = digitalRead(buttonPin);
if (!buttonmelody)
{if (cv == 0)
{EEPROM.write(189, 1);}
if (cv == 1)
{EEPROM.write(189, 0);}}
cv = EEPROM.read(189);
buzzer = digitalRead(buzzerInput);
if (!buzzer && cv == 1) {
for (int i=0; i<MAX_COUNT1; i++) {
toneM = melody1[i];
beat = beats1[i];
duration = beat * tempo;
playTone();
delayMicroseconds(pause);}
}
if (!buzzer && cv == 0) {
for (int i=0; i<MAX_COUNT2; i++) {
toneM = melody2[i];
beat = beats2[i];
duration = beat * tempo;
playTone();
delayMicroseconds(pause);}
}
delay(100);

}

Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Макетная плата для пайки (10 шт) Мультиметр DT9205A
вверх