Автоматическая подача звонков в учебном заведении

Skillet666
Offline
Зарегистрирован: 28.03.2018

Здравствуйте, в последнее время заинтересован такой темой, как автоматическая подача звонков в учебных заведениях на Arduino, т.к. в программировании на ардуинке я 0, хотел бы у вас узнать, как проще всего реализовать данный проект. 

b707
Offline
Зарегистрирован: 26.05.2017

Для того, кто в программировании "полный ноль" - "проще всего" заказать проект платному программисту.

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Skillet666 пишет:

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

Купить готовое.

А вообще, такая тема недавно была. Всем форумом мужику помогали. "Поиск" в правом верхнем углу.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015
Skillet666
Offline
Зарегистрирован: 28.03.2018

Нашел я нужную прошивку, на днях протестирую, а как бы в эту прошивку добавить вывод времени на lcd 2004, ибо моих микрознаний на это не хватает

Вот эта прошивка:


#include <Wire.h>
#include <DS3231.h>

#define Relay (7)
#define Green (5)  // пин зеленый светодиод
#define Blue  (9)  // пин синий светодиод
#define Red   (11) // пин красный светодиод

DS3231 Clock;
bool h12 = false;
bool PM;
bool Century;
bool preventflag=0;
unsigned long preventtime=millis(),
              ringtime=millis();

void setup(){
  Wire.begin();
  pinMode(Relay, OUTPUT);
  digitalWrite(Relay, HIGH);
  pinMode(Green, OUTPUT);
  pinMode(Blue, OUTPUT);
  pinMode(Red, OUTPUT);
}

void loop(){
  int second, minute, hour, day;
  day    = Clock.getDoW();
  hour   = Clock.getHour(h12, PM);
  minute = Clock.getMinute();
  second = Clock.getSecond();
  digitalWrite(Green, HIGH);

  #define modemon (day >= 1 && day <= 5 && second >= 0)
  #define modesat (day == 6             && second >= 0)

  if (modemon && !preventflag && hour == 8  && minute == 30) relayfunc();
  if (modemon && !preventflag && hour == 9  && minute == 15) relayfunc();
  if (modemon && !preventflag && hour == 9  && minute == 25) relayfunc();
  if (modemon && !preventflag && hour == 10 && minute == 10) relayfunc();
  if (modemon && !preventflag && hour == 10 && minute == 25) relayfunc();
  if (modemon && !preventflag && hour == 11 && minute == 10) relayfunc();
  if (modemon && !preventflag && hour == 11 && minute == 30) relayfunc();
  if (modemon && !preventflag && hour == 12 && minute == 15) relayfunc();
  if (modemon && !preventflag && hour == 12 && minute == 30) relayfunc();
  if (modemon && !preventflag && hour == 13 && minute == 15) relayfunc();
  if (modemon && !preventflag && hour == 13 && minute == 25) relayfunc();
  if (modemon && !preventflag && hour == 14 && minute == 10) relayfunc();
  if (modemon && !preventflag && hour == 14 && minute == 20) relayfunc();
  if (modemon && !preventflag && hour == 15 && minute == 5 ) relayfunc();
  if (modemon && !preventflag && hour == 15 && minute == 25) relayfunc();
  if (modemon && !preventflag && hour == 16 && minute == 10) relayfunc();
  if (modemon && !preventflag && hour == 16 && minute == 30) relayfunc();
  if (modemon && !preventflag && hour == 17 && minute == 15) relayfunc();
  if (modemon && !preventflag && hour == 17 && minute == 25) relayfunc();
  if (modemon && !preventflag && hour == 18 && minute == 10) relayfunc();
  if (modemon && !preventflag && hour == 18 && minute == 20) relayfunc();
  if (modemon && !preventflag && hour == 19 && minute == 05) relayfunc();
  if (modesat && !preventflag && hour == 8  && minute == 30) relayfunc();
  if (modesat && !preventflag && hour == 9  && minute == 15) relayfunc();
  if (modesat && !preventflag && hour == 9  && minute == 50) relayfunc();
  if (modesat && !preventflag && hour == 10 && minute == 10) relayfunc();
  if (modesat && !preventflag && hour == 10 && minute == 20) relayfunc();
  if (modesat && !preventflag && hour == 11 && minute == 05) relayfunc();
  if (modesat && !preventflag && hour == 11 && minute == 15) relayfunc();
  if (modesat && !preventflag && hour == 12 && minute == 0 ) relayfunc();
  if (modesat && !preventflag && hour == 12 && minute == 10) relayfunc();
  if (modesat && !preventflag && hour == 12 && minute == 55) relayfunc();
  if (modesat && !preventflag && hour == 13 && minute == 05) relayfunc();
  if (modesat && !preventflag && hour == 13 && minute == 50) relayfunc();
  if (modesat && !preventflag && hour == 14 && minute == 0 ) relayfunc();
  if (modesat && !preventflag && hour == 14 && minute == 45) relayfunc();
  if (modesat && !preventflag && hour == 14 && minute == 55) relayfunc();
  if (modesat && !preventflag && hour == 15 && minute == 40) relayfunc();
  if(millis()-ringtime<=8000){
    digitalWrite(Relay, LOW);
    digitalWrite(Blue,  HIGH);
  }else{
    digitalWrite(Blue,  LOW);
    digitalWrite(Relay, HIGH);
  }
  if(millis()-preventtime>=300000) preventflag=0;
}

void relayfunc(){
  ringtime=millis();
  preventtime=millis();
  preventflag=1;
}