Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система сигнализации Arduino:SERENA

Компоненты и расходные материалы

Arduino Mega 2560
× 1
Сенсорный ЖК-экран TFT с диагональю 3,2 дюйма
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Я видел много систем сигнализации раньше, проверял их, видел, как они работают, и решил, что хочу сделать свою собственную. Я имею в виду, а почему бы и нет? Почему бы не взять что-нибудь и не сделать еще лучше? Я имею в виду, что я компьютерный инженер (студент, но это скоро изменится).

Так появился этот проект.

Я проверил множество систем и то, что они на самом деле могут предложить, и подумал, что было бы неплохо поместить все эти функции (и некоторые из них) на одной плате Arduino, которая будет служить панелью управления сигнализацией.

Ничего сложного здесь нет, просто купил саму плату вместе с 3,2-дюймовым сенсорным экраном. Чтобы экран работал, мне, конечно же, потребовались некоторые библиотеки. Большое спасибо Хеннингу Карлсену за все библиотеки! Ссылка на его сайт в титрах раздел.

Программа

Теперь это заняло у меня время, чтобы завершить. Не позволяйте коду запутать вас, я всегда комментирую, когда это необходимо!

Основные функции будильника

Я решил включить три разных пароля. 4-значное, 5-значное и 6-значное. Я знаю, что это много, но в будущем обновлении я дам пользователю возможность отключить 4-значный код.

  • 4-значный пароль используется для включения тревоги.
  • Пятизначный пароль используется для частичного отключения сигнализации.
  • Шестизначный пароль используется для полного отключения сигнализации.

Сигнализация также может автоматически включаться. После ввода 5-значного кода программа начнет обратный отсчет (по умолчанию 40 секунд). По окончании обратного отсчета будильник включится автоматически. Это может быть очень кстати, если вы обычно забываете поставить систему на охрану.

Меню опций

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

Будущие обновления

Будущие обновления будут включать в себя настройки даты и времени, поддержку SD-карты (в случае сбоя питания, и мы не хотим терять данные), возможность отключения автопостановки на охрану, возможность отключения 4-значного прохода и многое другое. .

Витрина видео

Код

  • SERENA v.1.01
SERENA v.1.01 Arduino
Просто загрузите код на свою плату Arduino.
Некоторые комментарии на греческом языке, это скоро изменится. ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////// Система сигнализации SERENA // Автор:Майкл Маринис // Copyright (C) 2016 Майкл Маринис. Все права защищены. или вручную включите его, когда пользователь хочет .//// Эта программа требует библиотеки UTFT и URTouch от Henning Karlsen и совместимого // ЖК-экрана с экраном. ВЕРСИИ //////////// 0.10a:Первая сборка, основные функции // 0.20a:Незначительные улучшения // 0.30a:Выполнен ввод и подтверждение нового пароля ручной постановки на охрану (12/11 /2016)//0.40a:Выполнен ввод и подтверждение нового пароля для автоматической постановки на охрану (11.12.2016) // 1.00a:Завершение ввода и проверки пароля для постановки на охрану (11.12.2016, 19:16) //1.10a:Завершено меню, когда система поставлена ​​на охрану (без отправки сигнала на реле или что-то еще). Время и дата будут добавлены позже. Только добавлена ​​кнопка Снять с охраны (13.11.2016, 13:04) // 1.20a:Запрограммирована кнопка «Снять с охраны». Предлагается ввести 5-значный пароль. Также выполняется проверка пароля, которая снимает тревогу (без отправки сигнала на реле или что-то еще) (13.11.2016, 14:15) // 1.21a:Исправлена ​​проблема, из-за которой пользователь не мог вводить какие-либо числа после проверки пароля. Если пользователь нажал «НЕТ», он / она не мог ввести новый пароль, пока не была нажата кнопка «ОЧИСТИТЬ». Теперь это исправлено (14.11.2016, 13:32) // 1.22a:Таймер обратного отсчета для автоматической постановки на охрану завершен (14.11.2016, 15:46) // 1.30a:Автопостановка на охрану Меню готово. В меню автоматической постановки на охрану отображается количество секунд, оставшееся до повторного включения автоматической постановки на охрану. Меню полного снятия с охраны будет доступно с помощью кнопки из-за ограничений библиотеки (14.11.2016, 21:42) // 1.31a:изменена переменная "buf" с "-1" на "0". Это устранило ошибку, при которой первое нажатие любой цифровой кнопки ничего не дало (16/11/2016, 00:45) // 1.40b:добавлена ​​кнопка «SET ARM PASSWORD», которая позволяет пользователю изменять 4 -цифровой пароль, используемый для постановки будильника (16/11/2016, 14:33) // 1.41b:кнопки «НАЗАД» из «УСТАНОВИТЬ ПРОПУСК АВТО-ПОСТАНОВКИ», теперь перенаправляют на вторую страницу меню опций, вместо первого (16.11.2016, 16:21) // 1.42b:Доработано третье меню опций. Он содержит кнопки «УСТАНОВИТЬ ВРЕМЯ» и «УСТАНОВИТЬ ДАТУ» (16.11.2016, 16:37) // 1.43b:Исправлена ​​ошибка, из-за которой кнопка очистки на входе прохода снятия с охраны фактически не сбрасывала «автоматический вход» array (17/11/2016, 00:05) // 1.44b:кнопка «SET AUTO-ARM PASS» теперь предложит пользователю перейти во второе меню опций при смене пароля вместо первого (18 / 11/2016, 10:02) // Изменения будут регистрироваться до финальной версии 1.00. После 1.00 изменения будут записаны в файл SERENA_changelog.txt. //1.00:Дизайн функции полного снятия с охраны. Функция потребует 6-значный пароль и вызовет главное меню программы сигнализации. Зуммер слышен при каждом нажатии кнопки (01.08.2017, 20:53) ////////// БУДУЩИЕ ВЕРСИИ //////////// * ИДЕИ ДЛЯ НОВЫХ ВЕРСИЙ БУДУТ ПОЛОЖИТЬСЯ ЗДЕСЬ * ///////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////// # include #include UTFT myGLCD (ITDB32WC, 38, 39, 40, 41); URTouch myTouch (6, 5, 4, 3, 2); extern uint8_t SmallFont []; extern uint8_t BigFont []; extern uint8_t SevenSegNumFont []; int x; int y; int armpass [4] ={1, 2, 3, 4}; int autopass [5] ={ 1, 2, 3, 4, 5}; int manualpass [6] ={1, 1, 1, 1, 1, 1}; int timeinput [4]; int arminput [4]; int autoinput [5]; int manualinput [6]; int autolength =0; int manuallength =0; int buzzerpin =8; int systarm =9; int serenapin =10; int buttonpin =13; int autoarmtime =40; int autoarmtimemem =autoarmtime; int month =1; int day =1; int year =2016; // ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ void alarmtitle () {myGLCD.setFont (SmallFont); myGLCD.setBackColor (0, 0, 0); myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.drawLine (0, 14, 319, 14); myGLCD.print ("СИСТЕМА СИГНАЛИЗАЦИИ SERENA v.1.01", CENTER, 1);} void title () // РАЗДЕЛЕНА, ПОТОМУ ЧТО ИМЯ НЕ НУЖНО НЕКОТОРЫЕ РАЗ {alarmtitle (); myGLCD.print («МАЙКЛ МАРИНИС», ЦЕНТР, 30);} void drawbutton1 () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 60, 300, 100);} void drawbutton2 () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 120, 300, 160);} void drawdisarm () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 180, 300, 220); myGLCD.setColor (0, 0, 0); myGLCD.setBackColor (192, 192, 192); myGLCD.setFont (BigFont); myGLCD.print ("DISARM", CENTER, 193);} недействительный недостаток () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 180, 150, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (Маленький шрифт); myGLCD.print ("НАЗАД", 70, 190);} void drawno () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (20, 180, 150, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (Маленький шрифт); myGLCD.print («НЕТ», 80, 190);} void drawyes () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (170, 180, 300, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (Маленький шрифт); myGLCD.print ("ДА", 225, 190);} void drawnext () {myGLCD.setColor (192, 192, 192); myGLCD.fillRoundRect (170, 180, 300, 210); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 0); myGLCD.setFont (Маленький шрифт); myGLCD.print ("ДАЛЕЕ", 220, 190);} void drawbuttons () {myGLCD.clrScr (); int z; myGLCD.setFont (Маленький шрифт); для (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20 + (z * 60), 15, 60 + (z * 60), 55); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (z + 1, 37 + (z * 60), 30); } для (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20 + (z * 60), 70, 60 + (z * 60), 110); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (z + 4, 37 + (z * 60), 85); } для (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20 + (z * 60), 125, 60 + (z * 60), 165); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (z + 7, 37 + (z * 60), 140); } для (z =0; z <3; z ++) {myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (190, 15 + (z * 55), 290, 55 + (z * 55)); } myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20, 175, 80, 205); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.printNumI (0, 48, 185); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0); myGLCD.print («ОЧИСТИТЬ», 221, 30); myGLCD.print («ОК», 232, 85); myGLCD.print ("НАЗАД", 225, 140);} void optionsmenuend () {myGLCD.clrScr (); myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setBackColor (255, 0, 0); alarmtitle (); myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.print («МЕНЮ ОПЦИЙ», ЦЕНТР, 20); drawbutton1 (); drawbutton2 (); недостаток (); myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0);} void optionsmenu () {myGLCD.clrScr (); myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setBackColor (255, 0, 0); alarmtitle (); myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.print («МЕНЮ ОПЦИЙ», ЦЕНТР, 20); drawbutton1 (); drawbutton2 (); недостаток (); drawnext (); myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (255, 0, 0);} void drawoptions () {myGLCD.setFont (BigFont); myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20, 70, 300, 120); myGLCD.setBackColor (255, 0, 0); myGLCD.setColor (255, 255, 255); myGLCD.print ("ПАРАМЕТРЫ", ЦЕНТР, 90);} void drawarm () {myGLCD.setFont (BigFont); myGLCD.setColor (255, 0, 0); myGLCD.fillRoundRect (20, 140, 300, 190); myGLCD.setBackColor (255, 0, 0); myGLCD.setColor (255, 255, 255); myGLCD.print ("ARM", CENTER, 160);} void printmonth (int i) {myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); если (я ==1) {myGLCD.print ("ЯНВАРЬ", 95, 100); } если (я ==2) {myGLCD.print ("ФЕВРАЛЬ", 95, 100); } if (i ==3) {myGLCD.print ("МАРТ", 95, 100); } если (i ==4) {myGLCD.print ("АПРЕЛЬ", 95, 100); } if (i ==5) {myGLCD.print ("МАЙ", 70, 100); } если (i ==6) {myGLCD.print ("ИЮНЬ", 95, 100); } если (я ==7) {myGLCD.print ("ИЮЛЬ", 95, 100); } if (i ==8) {myGLCD.print ("АВГУСТ", 95, 100); } if (i ==9) {myGLCD.print ("СЕНТЯБРЬ", 95, 100); } if (i ==10) {myGLCD.print ("ОКТЯБРЬ", 95, 100); } if (i ==11) {myGLCD.print («НОЯБРЬ», 95, 100); } if (i ==12) {myGLCD.print ("ДЕКАБРЬ", 95, 100); }} // int updatedate (int d, int m, int y) // {// if (y% 4 ==0) // DISEKTO ETOS // {// if ((m> =0) &&(m <=13)) // {// if (m ==1 || m ==3 || m ==5 || m ==7 || m ==8 || m ==10 || m ==12) // {// if ((d> =0) &&(d <=32)) // {// if (d ==0) // {// d =31; //} // // if (d ==32) // {// d =1; //} //} //} //} //} // DISEKTO ETOS END //} int armupdate (int i, int armlength) {если (длина руки <4) {если (длина руки ==0) {arminput [0] =я; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [0], 100, 185); // + 35 gia kathe noumero meta digitalWrite (buzzerpin, HIGH); задержка (50); digitalWrite (зуммер, LOW); вернуть arminput [0]; } если (длина руки ==1) {arminput [1] =я; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [1], 135, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть arminput [1]; } если (длина руки ==2) {arminput [2] =я; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [2], 170, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть arminput [2]; } если (длина руки ==3) {arminput [3] =я; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (arminput [3], 205, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть arminput [3]; }}} int autoarmupdate (int i, int timelength) {if (timelength <5) {if (timelength ==1) {timeinput [0] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (timeinput [0], 100, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); return timeinput [0]; } если (timelength ==2) {timeinput [1] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (timeinput [1], 135, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); return timeinput [1]; } если (timelength ==3) {timeinput [2] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (timeinput [2], 170, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); return timeinput [2]; } if (timelength ==4) {timeinput [3] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (timeinput [3], 205, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); время возврата [3]; }}} int autoupdate (int i, int autolength) {if (autolength <5) {if (autolength ==0) {autoinput [0] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (автоматический ввод [0], 100, 185); // + 35 gia kathe noumero meta digitalWrite (buzzerpin, HIGH); задержка (50); digitalWrite (зуммер, LOW); вернуть autoinput [0]; } если (autolength ==1) {autoinput [1] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (автоматический ввод [1], 135, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть autoinput [1]; } если (autolength ==2) {autoinput [2] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (автоматический ввод [2], 170, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть autoinput [2]; } если (autolength ==3) {autoinput [3] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (автоматический ввод [3], 205, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть autoinput [3]; } если (autolength ==4) {autoinput [4] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (автоматический ввод [4], 240, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть autoinput [4]; } если (autolength ==5) {autoinput [5] =i; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (автоматический ввод [5], 275, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть autoinput [5]; }}} int manualupdate (int i, int manuallength) {если (manuallength <6) {if (manuallength ==0) {manualinput [0] =i; // manuallength ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (ручной ввод [0], 100, 185); // + 35 gia kathe noumero meta digitalWrite (buzzerpin, HIGH); задержка (50); digitalWrite (зуммер, LOW); вернуть manualinput [0]; } если (manuallength ==1) {manualinput [1] =я; // manuallength ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (ручной ввод [1], 135, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть manualinput [1]; } если (manuallength ==2) {manualinput [2] =i; // manuallength ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (ручной ввод [2], 170, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть ручной ввод [2]; } если (manuallength ==3) {manualinput [3] =я; // manuallength ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (ручной ввод [3], 205, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть ручной ввод [3]; } если (manuallength ==4) {manualinput [4] =я; // manuallength ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (ручной ввод [4], 240, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть ручной ввод [4]; } если (manuallength ==5) {manualinput [5] =я; // manuallength ++; myGLCD.setColor (255, 0, 0); myGLCD.setBackColor (0, 0, 0); myGLCD.printNumI (ручной ввод [5], 275, 185); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); вернуть ручной ввод [5]; }}} установка void () {myGLCD.InitLCD (); myGLCD.clrScr (); myTouch.InitTouch (); myTouch.setPrecision (PREC_EXTREME); pinMode (зуммер, ВЫХОД); pinMode (systarm, ВЫХОД); pinMode (серенапин, ВЫХОД); digitalWrite (зуммер, ВЫСОКИЙ); задержка (1000); digitalWrite (зуммер, LOW); заглавие(); drawoptions (); drawarm ();} void loop () {в то время как (правда) {главное меню:если (myTouch.dataAvailable ()) {myTouch.read (); х =myTouch.getX (); y =myTouch.getY (); // КНОПКА ОПЦИЙ if ((x> =20) &&(x <=300) &&(y> =70) &&(y <=120)) {options:optionsmenu (); myGLCD.setBackColor (192, 192, 192); myGLCD.setColor (0, 0, 255); myGLCD.print ("УСТАНОВИТЬ ПАРОЛЬ РУЧНОЙ ПОСТАНОВКИ", ЦЕНТР, 73); myGLCD.print («УСТАНОВИТЬ ПАРОЛЬ ПОСТАНОВКИ», ЦЕНТР, 133); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); в то время как (правда) {если (myTouch.dataAvailable ()) {myTouch.read (); х =myTouch.getX (); y =myTouch.getY (); // УСТАНОВКА КНОПКИ ПАРОЛЯ ВРУЧНУЮ if ((x> =20) &&(x <=300) &&(y> =60) &&(y <=100)) {title (); myGLCD.setBackColor (0, 0, 0); myGLCD.setColor (255, 0, 0); myGLCD.print («ВВЕДИТЕ 6-ЗНАЧНЫЙ ПАРОЛЬ», ЦЕНТР, 119); недостаток (); drawnext (); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); в то время как (правда) {если (myTouch.dataAvailable ()) {myTouch.read (); х =myTouch.getX (); y =myTouch.getY (); если ((x> =20) &&(x <=150) &&(y> =180) &&(y <=210)) {digitalWrite (buzzerpin, HIGH); задержка (50); digitalWrite (зуммер, LOW); параметры перехода; } if ((x> =170) &&(x <=300) &&(y> =180) &&(y <=210)) // МЕНЮ КНОПКИ {for (int o =0; o <6; o ++) { manualinput [o] =0; } passinput:int buf =0; myGLCD.setFont (Маленький шрифт); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setColor (255, 255, 255); drawbuttons (); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); myGLCD.setFont (SevenSegNumFont); myGLCD.setBackColor (0, 0, 0); // добавить к while (true) и drawbuttons (TICK!) while (true) {if (myTouch.dataAvailable ()) {myTouch.read (); х =myTouch.getX (); y =myTouch.getY (); // КНОПКИ 1-3 if ((y> =15) &&(y <=55)) {if ((x> =20) &&(x <=60)) // 1 {manualupdate (1, buf); buf ++; задержка (85); } if ((x> =80) &&(x <=120)) // 2 {manualupdate (2, buf); buf ++; задержка (85); } if ((x> =140) &&(x <=180)) // 3 {manualupdate (3, buf); buf ++; задержка (85); }} // КНОПКИ 1-3 КОНЕЦ if ((y> =70) &&(y <=110)) // КНОПКИ 4-6 {if ((x> =20) &&(x <=60)) // 4 {manualupdate (4, buf); buf ++; задержка (85); } if ((x> =80) &&(x <=120)) // 5 {manualupdate (5, buf); buf ++; задержка (85); } if ((x> =140) &&(x <=180)) // 6 {manualupdate (6, buf); buf ++; задержка (85); }} // КНОПКИ 4-6 КОНЕЦ if ((y> =125) &&(y <=165)) // КНОПКИ 7-9 {if ((x> =20) &&(x <=60)) // 7 {manualupdate (7, buf); buf ++; задержка (85); } if ((x> =80) &&(x <=120)) // 8 {manualupdate (8, buf); buf ++; задержка (85); } if ((x> =140) &&(x <=180)) // 9 {manualupdate (9, buf); buf ++; задержка (85); }} // КНОПКИ 7-9 КОНЕЦ if ((x> =20) &&(x <=80) &&(y> =175) &&(y <=205)) // 0 {manualupdate (0, buf); buf ++; задержка (85); } if ((x> =190) &&(x <=290) &&(y> =70) &&(y <=110)) // КНОПКА ОК {bool flag =true; for (int t =0; t <6; t ++) {если (manualinput [t]! =manualpass [t]) {flag =false; }} if (flag ==true) // swstos kwdikos {for (int i =0; i <6; i ++) {manualinput [i] =0; } myGLCD.clrScr (); myGLCD.setFont (BigFont); myGLCD.print («ПРОЙДИТЕ ОК!», ЦЕНТР, 100); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); задержка (2000); заглавие(); myGLCD.setBackColor (0, 0, 0); myGLCD.setColor (255, 0, 0); myGLCD.print («ВВЕДИТЕ НОВЫЙ ПАРОЛЬ», ЦЕНТР, 119); недостаток (); drawnext (); в то время как (правда) {если (myTouch.dataAvailable ()) {myTouch.read (); х =myTouch.getX (); y =myTouch.getY (); int buf =0; // EISAGWGH NEOU KWDIKOU if ((x> =170) &&(x <=300) &&(y> =180) &&(y <=210)) {newmanpassinput:myGLCD.setFont (SmallFont); myGLCD.setColor (255, 255, 255); myGLCD.drawLine (0, 14, 319, 14); myGLCD.setColor (255, 255, 255); drawbuttons (); digitalWrite (зуммер, ВЫСОКИЙ); задержка (50); digitalWrite (зуммер, LOW); myGLCD.setFont (SevenSegNumFont); myGLCD.setBackColor (0, 0, 0); в то время как (правда) {если (myTouch.dataAvailable ()) {myTouch.read (); х =myTouch.getX (); y =myTouch.getY (); // КНОПКИ 1-3 if ((y> =15) &&(y <=55)) {if ((x> =20) &&(x <=60)) // 1 {manualupdate (1, buf); buf ++; задержка (85); } if ((x> =80) &&(x <=120)) // 2 {manualupdate (2, buf); buf ++; задержка (85); } if ((x> =140) &&(x <=180)) // 3 {manualupdate (3, buf); buf ++; задержка (85); }} // КНОПКИ 1-3 КОНЕЦ if ((y> =70) &&(y <=110)) // КНОПКИ 4-6 {if ((x> =20) &&(x <=60)) // 4 {manualupdate (4, buf); buf ++; задержка (85); } if ((x> =80) &&(x <=120)) // 5 {manualupdate (5, buf); buf ++; задержка (85); } if ((x> =140) &&(x <=180)) // 6 {manualupdate (6, buf); buf ++; задержка (85); }} // КНОПКИ 4-6 КОНЕЦ if ((y> =125) &&(y <=165)) // КНОПКИ 7-9 {if ((x> =20) &&(x <=60)) // 7 {manualupdate (7, buf); buf ++; задержка (85); } if ((x> =80) &&(x <=120)) // 8 {manualupdate (8, buf); buf ++; задержка (85); } if ((x> =140) &&(x <=180)) // 9 {manualupdate (9, buf); buf ++; задержка (85); }} // КНОПКИ 7-9 КОНЕЦ if ((x> =20) &&(x <=80) &&(y> =175) &&(y <=205)) // 0 {manualupdate (0, buf); buf ++; задержка (85); } // EDW THA MPEI ДО ОК. THA RWTAW AN O KWDIKOS EINAI ENTAKSEI (2 KOUMPIA, ДА И НЕТ). ОТВЕТ «ДА», ВСЕ ТАК EPISTREFEI STO ARXIKO MENOU, «НЕТ» THA EPISTREFEI STHN EISAGWGH KWDIKOY if ((x> =190) &&(x <=290) &&(y> =70) &&(y <=110) ) // НОВАЯ КНОПКА ПРОЙТИ ОК {buf =0; myGLCD.clrScr (); title (); ... Этот файл был усечен, загрузите его, чтобы увидеть все его содержимое.

Производственный процесс

  1. Отказоустойчивый дизайн
  2. Система сигнализации обнаружения движения
  3. Декодер DTMF с использованием только Arduino
  4. Автоматическая система полива растений с Arduino
  5. Проверка безопасности системы охранной сигнализации
  6. Система вентиляции подвала / подвала
  7. Связь Python3 и Arduino
  8. Система посещаемости на основе Arduino и Google Spreadsheet
  9. Система предупреждения об обнаружении столкновений на основе Arduino
  10. Простой будильник с DS1302 RTC