Автоматизированная система подачи звонков для образовательных учреждений (АСПЗОУ)

XVI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке. Летняя площадка 2022

Автоматизированная система подачи звонков для образовательных учреждений (АСПЗОУ)

Граматинский С.С. 1Бакута И.С. 1
1МОУ СШ №3 Тутаевского МР
Белова Н.Л. 1
1МОУ СШ №3 Тутаевского МР
Автор работы награжден дипломом победителя I степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Школьный звонок — устройство, используемое в школах для подачи сигнала о начале и конце урока. В современных школах используются электрические музыкальные звонки. Однако не во всех школах система подачи звонков автоматизирована.

Актуальность. За окном XXI век – век инновационных технологий, полностью автоматизированных технологических процессов на базе IT-технологий.[1] Большинство систем работает самостоятельно, без помощи человека.

Зачастую персонал школы (или вахтеры) не успевает вовремя подать звонок, вследствие чего ученики и учителя часто бывают «дезориентированы во времени».

Учащиеся школы и персонал неоднократно жаловались администрации, тем не менее проблема не решалась. Автоматизированная система подачи звонков – идеальная возможность облегчить работу вахтерам и наладить процесс подачи звонков.

Обзор литературы. В современном мире уже придуманы автоматизированные устройства подачи звонков для образовательных учреждений.

Например, устройство-автомат Звонок-5М предназначено для автоматической подачи звонков по расписанию в институтах, колледжах, школах и других учебных заведениях, является специализированным автоматическим таймером, работающим по заданному расписанию.[2] Однако данное устройство достаточно дорогое.

Таймер школьного звонка 69 МР3/WAV предназначен для обеспечения поддержки расписания занятий в учебном заведении, начало и окончания рабочего дня на предприятиях.[3] Однако для полной работы устройства необходимо приобрести дополнительное устройство - Тромбон МУ-480, усилитель музыкальный. Кроме высокой цены, дополнительное устройство довольно массивное, что также является негативным признаком.

Устройство АСПЗОУ подразумевает в себе компактное недорогое устройство, быстрое в настройке и легкое в освоении, которое бы модернизировало школьную систему подачи звонков и освободило вахтеров от постоянного отслеживания времени.

Цель:

На основе программируемой платы Arduino создать компактное и недорогое, быстрое в настройке и легкое в освоении устройство «АСПЗОУ».

Задачи:

Изучить язык программирования и принцип работы Arduino.

Подобрать и приобрести компоненты, необходимые для создания АСПЗОУ.

Спроектировать схему подключения компонентов.

Включить АСПЗОУ в школьную систему.

Провести тестирование созданного устройства.

2. Основная часть

Основные компоненты АСПЗОУ

Создание любого устройства начинается с изучения теории. Были изучены материалы, связанные с системой Arduino. В изучении помогали интернет-источники: было найдено очень много полезных видеороликов[4], статей[5] и фотографий. Потребовалось около месяца, чтобы понять язык программирования и принцип работы Arduino.

Необходимые компоненты для создания АСПЗОУ:

Arduino UNO.

Клавиатура.

LCD дисплей.

Реле.

Провода типа «Папа-мама».

Датчик реального времени.

Второстепенные компоненты, помогающие создать устройство:

Паяльник.

Корпус.

Без этих компонентов устройство будет работать некорректно или не будет работать вовсе. Система АСПЗОУ также может содержать в себе иные комплектующие для стабильной работы, например, светодиоды, Buzzer (генератор звука, необходимый для регистрации какой-либо ошибки) или RFID считыватель (для организации контроля пользователей, взаимодействующих с устройством).

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

Ниже представлены основные версии плат Arduino[6]:

Due — новая плата на базе ARM микропроцессора 32bit Cortex-M3 ARM SAM3U4E.

Nano — это компактная платформа, используемая как макет. Nano подключается к компьютеру при помощи кабеля USB Mini-B.

Mini – самая маленькая платформа Arduino. Прекрасно работает как макетная модель, или, в проектах, где пространство является критическим параметром.

Pro – платформа, разработанная для опытных пользователей, может являться частью большего проекта.

Была выбрана версия ArduinoUno, так как это самая популярная версия базовой платформы Arduino USB. Arduino Uno имеет новый чип ATMega8U2 для последовательного подключения по USB и новую, более удобную маркировку входов/выходов. Платформа может быть дополнена платами расширения, например, пользовательскими платами с различными функциями.

Клавиатура - важное составляющее АСПЗОУ, с помощью которого будет происходить управление системой: выбор режима, экстренная подача звонка и т.д.

LCD дисплейэкран, на котором будет выводится вся необходимая информация.

Реле – с помощью реле будет происходить замыкание проводов для подачи сигнала на второстепенное устройство.

Провода типа «Папа-мама»- с помощью них все компоненты будут соединены.

Датчик реального времени – с помощью него будет соотноситься расписание, заданное в программу ранее, с настоящем временем.

Сборка

Сборка началась с создания схемы подключения (Приложение №1. Фото 1).
Данный этап не занял много времени, так как на изученных ранее видео уже было продемонстрировано то, как нужно создавать схемы и то, в какой последовательности подключать компоненты.

Сборка продолжилась с присоединения проводов и написания кода. Потребовалось около 3 дней, чтобы на экране отобразились какие-либо значения (Приложение №1. Фото 2). Далее началось постепенное подключение остальных компонентов.

Следующее, что было подключено, – клавиатура. Данный процесс тоже занял продолжительное время, так как библиотека для этой клавиатуры работала некорректно, а схема подключения была сделана для работы с другой библиотекой. После подключения клавиатуры нужно было проверить ее на работоспособность. Для этого была создана функция, которая в консоль «Монитор порта» выводила значения, принимаемые с клавиатуры.

Немаловажным компонентом в системе является датчик реального времени. Без него система была бы бесполезна. Подключение и настройка не заняли много времени.

Последним компонентом, который нужно подключить, – было реле. Оно было подключено в последнюю очередь, так как оно не играло большой роли в написании кода и дальнейшем тестировании. Подключив все компоненты, были сверены макет со схемой подключения (Приложение №1. Фото 1).

Самые необходимые компоненты установлены, а значит можно приступать к написанию кода.

Написание кода

Для написания программного кода была использована среда Arduino IDE - интегрированная среда разработки для Windows, MacOS и Linux, предназначенная для создания и загрузки программ на Arduino-совместимые платы.

Ниже описаны основные моменты работы с кодом (Приложение №2. Блоки кода 1, 2).

Добавление необходимых библиотек и описание переменных.

Подключение всех компонентов с помощью функции “setup()”.

Написание основной части кода в функции “loop()”.

Добавление других функций («bellChanger()», «mainBellMenu()», «BellMode1»).

Добавление расписания звонков на урок/перемену.

Написание основной части кода заняло чуть больше двух дней, после чего были произведены первые тесты. После нескольких удачных тестов была начата работа над интерфейсом программы (того, что будет отображаться на экране устройства). Было принято решение сделать простой и интуитивно понятный для персонала школы интерфейс.

На этапе написания кода несколько раз приходилось переделывать расписание. Вся проблема заключалась в нехватки памяти самого устройства, так как расписание, состоящее из 8 кортежей с числами, занимало очень много места. Был придуман способ, который оптимизировал память устройства и сделал возможным дальнейшее написание кода: значения, получаемые с датчика реального времени, представлялись в формате int() – такой вид записи строки занимал много памяти устройства. Было принято решение конвертировать формат int() в формат string() – именно это помогло уменьшить количество занимаемой памяти.

После написания всей программы нужно было найти корпус, в который можно было бы убрать созданное устройство. Сначала возникла мысль напечатать корпус на 3D-принтере, но такой вид изготовления занял бы очень много времени и был бы дороже аналогов из магазина. Поэтому было принято решение сделать корпус при помощи распределительной коробки для кабелей. Данный корпус почти полностью соответствовал ожиданиям, но пришлось самостоятельно вырезать отверстие для экрана при помощи паяльника и скальпельной насадки.

Устройство было помещено в корпус и прикреплено хомутами и черной изолентой (Приложение №3. Фото 1). Так как распределительная коробка имеет несколько отверстий по бокам, не пришлось вырезать их паяльником, чтобы открыть доступ к разъёму питания и реле.

Тестирование

Этот этап был для нас самым волнительным, но в то же время самым ожидаемым. Тестирование проводилось в школе на протяжении нескольких дней. За своевременной подачей звонков следили вахтеры и завуч по АХЧ. Установка АСПЗОУ проводилась под руководством школьного электрика, который следил за тем, чтобы соблюдались правила техники безопасности, и помогал в поиске провода, отвечающего за подачу звонка. Также была протестирована система ручной подачи звонка и перезагрузка устройства на случай какого-либо сбоя. За все время тестирования АСПЗОУ ошибок в работе устройства обнаружено не было. Тестирование можно было считать успешным.

Для персонала школы была создана понятная инструкция, которая позволяет без каких-либо проблем настраивать устройство. (Приложение №4)

3. Заключение

В результате работы над проектом было создано недорогое устройство, которое предназначено для автоматической подачи звонков по расписанию в школе, является автоматическим таймером, работающим по заданному расписанию. Устройство способно работать по нескольким заданным расписаниям звонков. Расписания могут легко настраиваться пользователем самостоятельно. Его подключение не требует изменений в существующей в школе системе подачи звонков.

Устройство было внедрено в школьную систему подачи звонков, протестировано и работает без нареканий. (Приложение 3, фото 1, 2)

4. Список информационных источников

http://www.zaoumka.ru/content/id7/ [10.09.2021]

http://oftsist.ru/product/5568 [10.09.2021]

https://www.trombon.org/catalog/ip/1207/ [10.09.2021]

https://youtu.be/ZbAqbnkv8WM [26.08.2021]

https://arduinomaster.ru/datchiki-arduino/lcd-i2c-arduino-displey-ekran/ [23.09.2021]

http://arduino.ru/Hardware [14.10.2021]

Приложения

Приложение №1

Фото 1. Схема подключения

Фото 2. Подключенный экран

Приложение №2

Блок кода 1. Описание переменных

Блок кода 2. Функция «setup()».

Приложение №3

Ф ото 1. Готовое изделие

Фото 2. Готовое изделие

Приложение №4

И нструкция по использованию автоматизированной системы подачи звонков для образовательных учреждений (АСПЗОУ)

При включении системы вы попадаете в главное меню. Есть 4 режима работы:
1) Буква А-M(Manage) – режим управления.
2) Буква В-B(Back) – возврат\возвращение
3) Буква C-T(Test) – Тест(тестовая\экстренная подача звонка)
4) Буква D-R(Reset) – перезагрузка системы\выход в начальное меню

П ри выборе режима А (режим управления) вы попадаете в меню выбора режимов подачи звонков. Всего 4 режима:

Информация о режиме

1

Уроки по 45 минут(1-3 урок перемены по 10 минут, 4-6 урок перемены по 15 минут, 7 урок перемены по 10 минут)

2

Уроки по 40 минут(перемены по 10)

3

Уроки по 30 минут(2 перемены по 15 минут)

4

Уроки по 30 минут(все перемены по 10 минут)

Для выбора режима нажмите на необходимую цифру, а затем на решетку (#). Если же вы хотите отменить действие, то нажмите на букву В (возврат).

К огда режим утвердился, на экране появится информация. Рисунок один – табло во время перемены, рисунок два – табло во время урока.

З вонок на перемену и звонок на урок одинаковы. Во время подачи звонка(16 секунд) на табло будет выведено следующее:

Для того чтобы перезагрузить АСПЗОУ, достаточно удерживать букву D(R/перезагрузка) 2 секунды. Далее на табло появится надпись AnimalTamersMOUSH 3, затем – главное меню.

Приложение №5

Программный код

c har scanner = ' ';

char AS = ' ';

int changer;

int selectMenu;

int bellChanger;

int bellStage;

int counter;

char modeScanner = ' ';

char approveChoose = ' ';

#include <iarduino_RTC.h>

iarduino_RTC timers(RTC_DS3231);

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Keypad.h>

#include <avr/pgmspace.h>

#define Relay 10

#define Relay2 13

byte Pins_Rows[]={9,8,7,6};

byte Pins_Columns[]={5,4,3,2};

char keys[4][4]={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};

Keypad Keyboard= Keypad(makeKeymap(keys),Pins_Rows,Pins_Columns,4,4);

LiquidCrystal_I2C lcd(0x27,16,2);

void setup(){

Serial.begin(9600);

//timers.begin();

//timers.settime(0,43,16,17,8,21,2);

lcd.init();

lcd.backlight();

changer =1;// запускглавногоменю

selectMenu =0;

bellChanger =0;

bellStage =0;

counter =0;//счетчикуроков

lcd.setCursor(2,0);

lcd.print("AnimalTamers");

lcd.setCursor(4,1);

lcd.print("MOU SH 3");

pinMode(Relay, OUTPUT);

pinMode(Relay2, OUTPUT);

delay(3000);

lcd.clear();

Serial.begin(9600);

}

void loop(){

scanner = Keyboard.getKey();

s witch(changer){

case 1:

mainMenu();

break;

case 2:

manageMenu();

break;

case 3:

infoMenu();

break;

case 4:

manageMenuChoice1();

break;

case 5:

manageMenuChoice2();

break;

case 6:

mainBellMenu();

break;

case 7:

manageMenuChoice3();

break;

case 8:

manageMenuChoice4();

break;

}

i f(scanner =='A'){

lcd.clear();

changer =2;

}

if(scanner =='B'){

resetMenu();

}

if(scanner =='C'){

systemTesting();

}

if(scanner =='0'){

Warn();

}

if(scanner =='8'){

Warn2();

}

if(scanner =='D'){

void(* resetFunc)(void)=0;

resetFunc();

}

if(bellChanger ==1){

bellMode1();

}

if(bellChanger ==2){

bellMode2();

}

if(bellChanger ==3){

bellMode3();

}

if(bellChanger ==4){

bellMode4();

}

//if (String(timers.gettime("H:i:s")) == "11:58:00") {

// void(* resetFunc) (void) = 0;

// resetFunc();

// }

}

void mainMenu(){

lcd.setCursor(0,0);

lcd.print("ASPZOU:");

lcd.setCursor(8,0);

lcd.print("MENU");

lcd.setCursor(0,1);

lcd.print("A-M");

lcd.setCursor(4,1);

lcd.print("B-B");

lcd.setCursor(9,1);

lcd.print("C-T");

lcd.setCursor(13,1);

lcd.print("D-R");

//t=rtc.now();

scanner = Keyboard.getKey();

}

v oid manageMenu(){

lcd.setCursor(0,0);

lcd.print("Choose mode:");

lcd.setCursor(0,1);

lcd.print("[1]");

lcd.setCursor(3,1);

lcd.print("[2]");

lcd.setCursor(6,1);

lcd.print("[3]");

lcd.setCursor(9,1);

lcd.print("[4]");

modeScanner = Keyboard.getKey();

switch(modeScanner){

case '1':

lcd.clear();

changer =4;

break;

case '2':

lcd.clear();

changer =5;

break;

case '3':

lcd.clear();

changer =7;

break;

case '4':

lcd.clear();

changer =8;

break;

}

}

void resetMenu(){

lcd.clear();

changer =1;

}

void manageMenuChoice1(){

approveChoose = Keyboard.getKey();

lcd.setCursor(0,0);

lcd.print("Chosen mode:");

lcd.setCursor(6,1);

lcd.print("[1]");

switch(approveChoose){

case '#':

selectMenu =1;

bellMenu();

break;

}

}

void manageMenuChoice2(){

approveChoose = Keyboard.getKey();

// selectMenu = 1;

lcd.setCursor(0,0);

lcd.print("Chosen mode:");

lcd.setCursor(6,1);

lcd.print("[2]");

switch(approveChoose){

case '#':

selectMenu =2;

bellMenu();

break;

}

}

void manageMenuChoice3(){

approveChoose = Keyboard.getKey();

lcd.setCursor(0,0);

lcd.print("Chosen mode:");

lcd.setCursor(6,1);

lcd.print("[3]");

switch(approveChoose){

case '#':

selectMenu =3;

bellMenu();

break;

}

}

void manageMenuChoice4(){

approveChoose = Keyboard.getKey();

lcd.setCursor(0,0);

lcd.print("Chosen mode:");

lcd.setCursor(6,1);

lcd.print("[4]");

switch(approveChoose){

case '#':

selectMenu =4;

bellMenu();

break;

}

}

void bellMenu(){

lcd.clear();

lcd.setCursor(4,1);

lcd.print("Approved!");

delay(1000);

if(selectMenu ==1){

bellChanger =1;

lcd.clear();

}

if(selectMenu ==2){

bellChanger =2;

lcd.clear();

}

if(selectMenu ==3){

bellChanger =3;

lcd.clear();

}

if(selectMenu ==4){

bellChanger =4;

lcd.clear();

}

}

void bellMode1(){

changer =6;

if(String(timers.gettime("H:i:s"))== F("08:00:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =1;

}

if(String(timers.gettime("H:i:s"))== F("08:55:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =2;

}

if(String(timers.gettime("H:i:s"))== F("09:50:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =3;

}

if(String(timers.gettime("H:i:s"))== F("10:50:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =4;

}

if(String(timers.gettime("H:i:s"))== F("11:50:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =5;

}

if(String(timers.gettime("H:i:s"))== F("12:45:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =6;

}

if(String(timers.gettime("H:i:s"))== F("13:40:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =7;

}

if(String(timers.gettime("H:i:s"))== F("08:45:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("09:40:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("10:35:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("11:35:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("12:35:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("13:30:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("14:25:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

}

void bellMode2(){

changer =6;

if(String(timers.gettime("H:i:s"))== F("08:00:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =1;

}

if(String(timers.gettime("H:i:s"))== F("08:50:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =2;

}

if(String(timers.gettime("H:i:s"))== F("09:40:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =3;

}

if(String(timers.gettime("H:i:s"))== F("10:30:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =4;

}

if(String(timers.gettime("H:i:s"))== F("11:20:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =5;

}

if(String(timers.gettime("H:i:s"))== F("12:10:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =6;

}

if(String(timers.gettime("H:i:s"))== F("13:00:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =7;

}

if(String(timers.gettime("H:i:s"))== F("13:50:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =8;

}

if(String(timers.gettime("H:i:s"))== F("08:40:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("09:30:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("10:20:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("11:10:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("12:00:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("12:50:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("13:40:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("14:30:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

}

void bellMode3(){

changer =6;

if(String(timers.gettime("H:i:s"))== F("08:00:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =1;

}

if(String(timers.gettime("H:i:s"))== F("08:40:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =2;

}

if(String(timers.gettime("H:i:s"))== F("09:20:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =3;

}

if(String(timers.gettime("H:i:s"))== F("10:05:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =4;

}

if(String(timers.gettime("H:i:s"))== F("10:50:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =5;

}

if(String(timers.gettime("H:i:s"))== F("11:30:10")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =6;

}

if(String(timers.gettime("H:i:s"))== F("12:10:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =7;

}

if(String(timers.gettime("H:i:s"))== F("08:30:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("09:10:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("09:50:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("10:35:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("11:20:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("12:00:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("12:40:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

}

void bellMode4(){

changer =6;

if(String(timers.gettime("H:i:s"))== F("08:00:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =1;

}

if(String(timers.gettime("H:i:s"))== F("08:40:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =2;

}

if(String(timers.gettime("H:i:s"))== F("09:20:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =3;

}

if(String(timers.gettime("H:i:s"))== F("10:00:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =4;

}

if(String(timers.gettime("H:i:s"))== F("10:40:00")&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =5;

}

if(String(timers.gettime("H:i:s"))== F("11:20:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =6;

}

if(String(timers.gettime("H:i:s"))== F("12:00:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedL();

bellStage =1;

counter =7;

}

if(String(timers.gettime("H:i:s"))== F("08:30:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("09:10:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("09:50:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("11:10:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("11:50:00")&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

if(String(timers.gettime("H:i:s"))== F("12:30:00")&&(timers.weekday !=6)&&(timers.weekday !=0)){

bellActivatedB();

bellStage =0;

}

// if (String(timers.gettime("H:i:s")) == F("08:00:00") && (timers.weekday != 6) && (timers.weekday != 0)){

// bellActivatedB();

// bellStage = 0;

// }

}

void mainBellMenu(){

if(bellStage ==0){

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Stage:");

lcd.setCursor(7,0);

lcd.print("break");

lcd.setCursor(14,0);

if(selectMenu ==1){

lcd.print("M"+String(selectMenu));

}

if(selectMenu ==2){

lcd.print("M"+String(selectMenu));

}

if(selectMenu ==3){

lcd.print("M"+String(selectMenu));

}

if(selectMenu ==4){

lcd.print("M"+String(selectMenu));

}

lcd.setCursor(0,1);

lcd.print(timers.Hours);

lcd.print(":");

lcd.print(timers.minutes);

lcd.print(":");

lcd.print(timers.seconds);

delay(250);

}

if(bellStage ==1){

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Stage:");

lcd.setCursor(7,0);

lcd.print("lesson");

lcd.setCursor(14,0);

if(selectMenu ==1){

lcd.print("M"+String(selectMenu));

}

if(selectMenu ==2){

lcd.print("M"+String(selectMenu));

}

if(selectMenu ==3){

lcd.print("M"+String(selectMenu));

}

if(selectMenu ==4){

lcd.print("M"+String(selectMenu));

}

lcd.setCursor(13,1);

lcd.print("["+String(counter)+"]");

lcd.setCursor(0,1);

lcd.print(timers.Hours);

lcd.print(":");

lcd.print(timers.minutes);

lcd.print(":");

lcd.print(timers.seconds);

delay(250);

}

}

void bellActivatedL(){

lcd.clear();

lcd.setCursor(1,1);

lcd.print("Bell activated");

digitalWrite(Relay, HIGH);

delay(2000);

digitalWrite(Relay, LOW);

lcd.clear();

lcd.setCursor(1,1);

lcd.print("In process..");

delay(16000);

digitalWrite(Relay, HIGH);

lcd.clear();

lcd.setCursor(0,1);

lcd.print("Bell activated");

delay(2000);

digitalWrite(Relay, LOW);

lcd.clear();

}

void bellActivatedB(){

lcd.clear();

lcd.setCursor(0,1);

lcd.print("Bell activated");

digitalWrite(Relay, HIGH);

delay(5000);

digitalWrite(Relay, LOW);

lcd.clear();

}

void systemTesting(){

lcd.clear();

lcd.setCursor(1,0);

lcd.print("Bell activated!");

digitalWrite(Relay, HIGH);

delay(2000);

digitalWrite(Relay, LOW);

delay(1000);

lcd.clear();

// digitalWrite(Relay, 1);

}

Просмотров работы: 546