Таймер для подачи школьных звонков (Arduino UNO)
Это очень простое устройство предназначено для автоматической подачи школьных звонков В аппаратной части оно состоит только из микроконтроллерной платы ARDUINO UNO и выходного электромагнитного реле.
Принципиальная схема
Схема предназначена для управления одной нагрузкой, которой служит школьный звонок. Контакты выходного реле подключают параллельно звонковой кнопке. Для управления выбран порт D10.
Логический уровень с порта D10 поступает на транзисторный ключ на VT1, в коллекторной цепи которого включено реле К1, управляющее звонком.
Программа предельно проста. Она написана на языке C++. Если все перемены и уроки одинаковые, например, все перемены по 10 минут, все уроки по 45 минут, то для управления используется программа, приведенная в таблице 1.
Рис. 1. Таймер для подачи школьных звонков, схема на Arduino UNO.
Эта программа отрабатывает один повторяющийся цикл, состоящей из звонка на урок, звучащего 3 секунды, урока, длительностью 45 минут, звонка на перемену, звучащего 3 секунды, и перемены длительностью 10 минут. Цикл повторяется пока питание включено и может отработать любое количество уроков и перемен.
В начале учебного дня ответственный сотрудник школы включает питание выключателем S1 в тот момент, когда нужно подать звонок на первый урок. Далее все происходит автоматически. А по завершении занятий этот же ответственный сотрудник питание выключает выключателем S1, и уходит домой.
Обратите внимание, что все временные интервалы задаются в миллисекундах. То есть, 45 минут на урок и 10 минут на перемену нужно перевести в миллисекунды и вписать в программу именно в таком виде. Для этого нужно значение в минутах умножить на 60000.
Программа
Программа, показанная в таблице 1 годится только в том случае, если все уроки одинаковые и все перемены тоже одинаковые. Но бывает и иначе, например, может быть большая перемена на обед и какая-то промежуточная большая перемена. В этом случае, нужно подробно расписать всю смену.
Таблица 1.
/*
Zvonok
'/
// задание выхода
void setup () {
pinMode(10. OUTPUT);
}
//рабочий цикл
void loop() {
digitalWrite(10, HIGH); // звонок на урок delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); //урок
delay(2700000); //длительность урока 45 мин (2700 сек).
digitalWrite(10. HIGH); // звонок на перемену delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // перемена
delay(600000); // длительность перемены 10 мин (600 сек).
}
Таблица 2
/•
Zvonok
'/
// задание выхода
void setup () {
pinMode(10, OUTPUT);
}
// рабочий цикл
void loop() {
digitalWrite(10, HIGH); // 1-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 1-й урок
delay(2700000); //длительность урока 45 мин (2700 сек)
digitalWrite(10, HIGH); // 2-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 1-я перемена
delay(600000); //длительность перемены 10 мин (600 сек).
digitalWrite(10, HIGH); // 3-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 2-й урок
delay(2700000); //длительность урока 45 мин (2700 сек)
digitalWrite(10, HIGH); // 4-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 2-я перемена
delay(600000); //длительность перемены 10 мин (600 сек).
digitalWrite(10, HIGH); // 5-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWritef 10, LOW); // 3-й урок
delay(2700000); //длительность урока 45 мин (2700 сек).
digitalWriteflO, HIGH); // 6-й звонок
delay(3000); // длительность звонка 3 сек.
digitalWritef 10, LOW); //3-я перемена
delay(1200000); //длительность перемены 20 мин (1200 сек).
digitalWritefl0, HIGH); // 7-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite( 10, LOW); // 4-й урок
delay(2700000); //длительность урока 45 мин (2700 сек).
digitalWritef 10, HIGH); // 8-й звонок
delay(3000); // длительность звонка 3 сек.
digitalWrite(10, LOW); // 4-я перемена
delay(600000); // длительность перемены 10 мин (600 сек).
digitalWritef 10, HIGH); // 9-й звонок
delay (3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 5-й урок
delay(2700000); //длительность урока 45 мин (2700 сек).
digitalWrite(10, HIGH); // 10-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 5-я перемена
delay(600000); //длительность перемены 10 мин (600 сек).
digitalWrite(10, HIGH); // 11-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 6-й урок
delay(2700000); //длительность урока 45 мин (2700 сек).
digitalWrite(10, HIGH):// 12-й звонок
delay(3000); //длительность звонка 3 сек.
digitalWrite(10, LOW); // 6-я перемена
delay(900000); //длительность перемены 15 мин (900 сек).
Или даже весь учебный день. Для примера в таблице 2 приводится программа на шесть уроков, в которой длительность 3-й перемены задана в 20 минут, а длительность 6-й перемены в 15 минут.
Все значения времени, конечно же могут быть другими. Количество шагов программы тоже может быть другим. Все зависит от расписания работы конкретного учебного заведения.
Но принцип составления программы должен быть понятен.
Никаких органов управления аппарат не имеет, кроме выключателя питания и кнопки сброса, которая есть на плате ARDUINO UNO. Для изменения расписания уроков его нужно подключить через USB-порт к персональному компьютеру. Для работы с ARDUINO UNO нужен компьютер с установленной программой ARDUINO.