- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
#include "Budilnic.h" //описание библиотеки Будильник
#define Bud_out 4 //на пин d4 выводится 1 если сработал любой будильник
#define Vibro_gen 9 //на пин d9 выводятся импульсы для подключения вибромотора
#define Buz 5 //на пин d5 подключена Пищалка с генератором
#define Stop_button 8 //на пин d8 подключена кнопка,подтянута на +5
Budilnic:: Budilnic()
{ //описываем пустой конструктор, он всегда вызывается при создании экземпляра класса
}
void Budilnic:: initialReading () //говорим что эта функция пренадлежит классу Budilnic
{ //при включении из EEPROM зачитываются сохраненные значения
SuH=Eprom_read(20,0); SuM=Eprom_read(21,0); SuF=Eprom_read(22,0);
MoH=Eprom_read(23,0); MoM=Eprom_read(24,0); MoF=Eprom_read(25,0);
TuH=Eprom_read(26,0); TuM=Eprom_read(27,0); TuF=Eprom_read(28,0);
WeH=Eprom_read(29,0); WeM=Eprom_read(30,0); WeF=Eprom_read(31,0);
ThH=Eprom_read(32,0); ThM=Eprom_read(33,0); ThF=Eprom_read(34,0);
FrH=Eprom_read(35,0); FrM=Eprom_read(36,0); FrF=Eprom_read(37,0);
SaH=Eprom_read(38,0); SaM=Eprom_read(39,0); SaF=Eprom_read(40,0);
//зачитываем пользовательскую настройку SetAlarmTimer
budilnic.SetAlarmTimer = EEPROM_uint_read(41,10); //читаем из EEPROM 2 бита адр.41 и адр.42. Начальная установка 10
pinMode(Bud_out, OUTPUT);//Сигнальный пин будильника на выход
pinMode(Stop_button, INPUT);//Кнопка Stop работает на вход
pinMode(Buz, OUTPUT); //Пишалка на выход
pinMode(Vibro_gen, OUTPUT); //Пин вибромотора на выход
}
void Budilnic:: check_Data () // передаем значения на проверку
{
check_Parametrs(SuF,SuH,SuM,0); //проверить флаг,часы,минуты Восскресенье
check_Parametrs(MoF,MoH,MoM,1); //проверить флаг,часы,минуты Понедельник
check_Parametrs(TuF,TuH,TuM,2); //проверить флаг,часы,минуты Вторник
check_Parametrs(WeF,WeH,WeM,3); //проверить флаг,часы,минуты Среда
check_Parametrs(ThF,ThH,ThM,4); //проверить флаг,часы,минуты Четверг
check_Parametrs(FrF,FrH,FrM,5); //проверить флаг,часы,минуты Пятница
check_Parametrs(SaF,SaH,SaM,6); //проверить флаг,часы,минуты Суббота
}
void Budilnic:: check_Parametrs (unsigned char F,unsigned char H,unsigned char M,unsigned char DAY)
{
if(F==1)
{ //если будильник включен
if(DAY==time.weekday)
{ //если совпал день недели
if(H==time.hours)
{ //если часы совпали
if(M==time.minutes)
{ //если минуты совпали
if(time.seconds==0)
{//если секунды по нулям
AlarmTimer=0; //обнуляем таймер
AlarmFlag=1; //поднимаем флаг, есть срабатывание
}}}}}
}//конец функции проверки будильников
void Budilnic :: LetsGo()
{//функция постоянно вызывается из майна
if(AlarmFlag==1)
{ //если зарегистрированно срабатывание
digitalWrite(Bud_out, HIGH); // зажигаем светодиод
Misic=1; //включаем воспроизведение мелодии
if( (AlarmTimer/2)==SetAlarmTimer ) //если таймер досчитал до заданного времени
{ //выключаем будильник
digitalWrite(Bud_out, LOW); // гасим светодиод
Misic=0; //отключить музыку
AlarmFlag=0; // и опускаем флаг
}
if(digitalRead(Stop_button)==LOW) //если нажата кнопка STOP
{
digitalWrite(Bud_out, LOW); // гасим светодиод
Misic=0; //отключить музыку
AlarmFlag=0; // и опускаем флаг
} //конец проверки кнопки STOP
}//конец проверки флага срабатывания
if(Misic)
{
//------------управляем импульсами на d9------------------------------
if(VibroTimer<10) digitalWrite(Vibro_gen, LOW); // Снять импульс d9
else digitalWrite(Vibro_gen, HIGH); //Подать импульс на d9
//-------------------сдесь проиррываем мелодию------------------------
if((BuzTimer>=0) & (BuzTimer<2)) Buzer=1; // пик 0.1
if((BuzTimer>=2) & (BuzTimer<4)) Buzer=0; // пауза 2.3
if((BuzTimer>=4) & (BuzTimer<6)) Buzer=1; // пик
if((BuzTimer>=6) & (BuzTimer<8)) Buzer=0; // пауза
if((BuzTimer>=8) & (BuzTimer<10)) Buzer=1; // пик
if((BuzTimer>=10) & (BuzTimer<20)) Buzer=0; // пауза
//--------второй куплет
я в детсве лет тоже на бейсике такие штуки делал
заказчик как только это увидел, сразу уволил его к хуям
Но, в общем, на Цэ Перемога Перемога ему ещё рановато, сначала за Букварь.
https://ru.wikipedia.org/wiki/Грамотное_программирование
Это вибратор с функцией будильника?
Зсовывать в жопу бритву, произведенную в СССР, было бы как минимум, кощунством. На такое только Сёма горазд.