Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen

Onderdelen en benodigdheden

SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen
Arduino Mega 2560
× 1
3.2" TFT LCD Touch Screen
× 1

Apps en online diensten

SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen
Arduino IDE

Over dit project

Ik heb veel alarmsystemen gezien, ze bekeken, gezien hoe ze werken en besloot dat ik mijn eigen systeem wilde maken. Ik bedoel, waarom niet? Waarom niet iets nemen en het nog beter maken? Ik ben immers een computerengineer (een undergraduate, maar dat verandert snel).

En zo kwam dit project tot leven.

Ik keek veel systemen na en wat ze daadwerkelijk kunnen bieden en ik dacht dat het een goed idee was om al deze functies (en enkele van mijn eigen) in een enkel Arduino-bord te stoppen dat zal dienen als het alarmbedieningspaneel.

Niets ingewikkelds, gewoon het bord zelf gekocht samen met een 3.2" Touch Screen. Om het scherm te laten werken, had ik natuurlijk enkele bibliotheken nodig. Dus een grote dank aan Henning Carlsen voor alle bibliotheken! Link naar zijn website in de credits sectie.

Het programma

Dit nam me een tijdje om te voltooien. Laat de code u niet verwarren, ik commentaar altijd wanneer nodig!

De hoofdfuncties van het alarm

Ik besloot drie verschillende wachtwoorden op te nemen. Een 4-cijferig, een 5-cijferig en een 6-cijferig. Ik weet dat dit veel is, maar in een toekomstige update zal ik de gebruiker de optie geven om de 4-cijferige code uit te schakelen.

  • De 4-cijferige pas wordt gebruikt om het alarm in te schakelen.
  • De 5-cijferige pas wordt gebruikt om het alarm gedeeltelijk uit te schakelen.
  • De 6-cijferige pas wordt gebruikt om het alarm volledig uit te schakelen.

Het alarm kan zich ook automatisch inschakelen. Na invoer van de 5-cijferige code start het programma een aftelling (standaard 40 seconden). Na afloop van deze aftelling wordt het alarm automatisch ingeschakeld. Dit kan best wel handig zijn als u meestal vergeet het systeem in te schakelen.

Optiesmenu

In het optiesmenu kunt u alle drie wachtwoorden wijzigen, evenals de auto-arm tijd.

Toekomstige Updates

Toekomstige updates zullen datum/tijd instellingen, SD-kaart ondersteuning (voor het geval er een stroomstoring is en we geen data willen verliezen), de optie om auto-arming uit te schakelen, de optie om de 4-cijferige pas uit te schakelen en nog veel meer omvatten.

Showcase Video

Code

  • SERENA v.1.01
SERENA v.1.01Arduino
Upload de code naar uw Arduino-bord.
Sommige commentaren zijn in het Grieks, dit zal snel veranderen.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//SERENA Alarm Systeem
//Auteur: Michael Marinis
//Copyright (C)2016 Michael Marinis. Alle Rechten Voorbehouden
//Website: https://www.youtube.com/SauROnmiKE
//
//Dit is het SERENA Alarm Systeem, een tweefunctie alarmsysteem dat
//de gebruiker de mogelijkheid geeft om het alarm auto-te-armen, of handmatig te armeren wanneer de gebruiker wil.
//
//Dit programma vereist de UTFT & URTouch bibliotheken van Henning Karlsen en een compatibel LCD
//scherm met zijn shield.
//
////////////VERSIES//////////
//0.10a: Eerste build, basisfuncties
//0.20a: Kleine verbeteringen
//0.30a: Pas Invoering en Bevestiging voor een nieuw Handmatig-Arm Wachtwoord is klaar (12/11/2016)
//0.40a: Pas Invoering en Bevestiging voor een nieuw Auto-Arm Wachtwoord is klaar (12/11/2016)
//1.00a: Voltooid Arm Wachtwoord Invoering & Check (12/11/2016, 19:16)
//1.10a: Voltooid het menu wanneer het systeem gearmeerd is (zonder signaal te sturen naar een relay of iets anders). De tijd en datum later toevoegen. De Ontwapen knop is alleen toegevoegd (13/11/2016, 13:04)
//1.20a: Geprogrammeerde "ONTWAPEN" knop. Het vraagt om de 5-cijferige wachtwoordinvoer. Wachtwoordcheck is ook gedaan, wat het alarm ontwapent (zonder signaal te sturen naar een relay of iets anders) (13/11/2016, 14:15)
//1.21a: Opgelost een issue waar de gebruiker geen nummers kon typen na de wachtwoordbevestigingscheck. Als de gebruiker "NEE" drukte, kon hij/zij dan geen nieuw wachtwoord typen tot de "WIS" knop ingedrukt werd. Dit is nu opgelost (14/11/2016, 13:32)
//1.22a: De afteltimer voor auto-arming is nu compleet (14/11/2016, 15:46)
//1.30a: Auto-Arm Menu is compleet. Het Auto-Arm Menu toont de seconden over voor het arm om auto-te-armen. Het volledige ontwapenmenu wordt via een drukknop geopend vanwege de bibliotheekbeperkingen (14/11/2016, 21:42)
//1.31a: De "buf" variabele gewijzigd van "-1" naar "0". Dit loste de bug op, waar de eerste druk op een willekeurige nummersknop niets deed (16/11/2016, 00:45)
//1.40b: Toegevoegde "SET ARM PASSWORD" knop die de gebruiker toestaat het 4-cijferige wachtwoord dat gebruikt wordt om het alarm te armeren te wijzigen (16/11/2016, 14:33)
//1.41b: De "TERUG" knoppen van de "SET AUTO-ARM PASS", leiden nu naar de tweede pagina van het optiesmenu, in plaats van de eerste (16/11/2016, 16:21)
//1.42b: Voltooid de derde optiesmenu. Het bevat de knoppen "SET TIJD" en "SET DATUM" (16/11/2016, 16:37)
//1.43b: Opgelost een bug waar de wis-knop op de ontwapen pas invoer de "autoinput" array niet daadwerkelijk resetten (17/11/2016, 00:05)
//1.44b: De "SET AUTO-ARM PASS" knop, zal nu de gebruiker naar het tweede optiesmenu sturen wanneer het wachtwoord gewijzigd is, in plaats van de eerste (18/11/2016, 10:02)
//De wijzigingen zullen gelogd worden tot de finale versie 1.00. Na 1.00 zullen de wijzigingen gelogd worden in het SERENA_changelog.txt bestand.
//1.00: Ontwerp van de volledige ontwapenfunctie. De functie vereist het 6-cijferige wachtwoord en stuurt naar het hoofdmenu van het alarmprogramma. Een buzzer wordt gehoord bij elke klik op een knop (8/1/2017, 20:53)
//////////TOEKOMSTIGE VERSIES//////////
// *IDEËEN VOOR NIEUWE VERSIES ZULLEN HIER GEZET WORDEN*
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <UTFT.h>
#include <URTouch.h>
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;
//CUSTOM FUNCTIES
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 ALARM SYSTEEM v.1.01", CENTER, 1);
}
void title()//GESCHEIDEN OMDAT DE NAAM NIET ALTIJD GEWENST IS
{
  alarmtitle();
  myGLCD.print("DOOR MICHAEL MARINIS", CENTER, 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("ONTWAPEN", CENTER, 193);
}
void drawback() {
  myGLCD.setColor(192, 192, 192);
  myGLCD.fillRoundRect(20, 180, 150, 210);
  myGLCD.setBackColor(192, 192, 192);
  myGLCD.setColor(0, 0, 0);
  myGLCD.setFont(SmallFont);
  myGLCD.print("TERUG", 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(SmallFont);
  myGLCD.print("NEE", 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(SmallFont);
  myGLCD.print("JA", 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(SmallFont);
  myGLCD.print("VOLGENDE", 220, 190);
}
void drawbuttons() {
  myGLCD.clrScr();
  int z;
  myGLCD.setFont(SmallFont);
  for (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);
  }
  for (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);
  }
  for (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);
  }
  for (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("WIS", 221, 30);
  myGLCD.print("OK", 232, 85);
  myGLCD.print("TERUG", 225, 140);
}
void optionsmenuend() {
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawLine(0, 14, 319, 14);
  myGLCD.setBackColor(255, 0, 0);
  alarmtitle();
  myGLCD.setFont(SmallFont);
  myGLCD.setColor(255, 0, 0);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.print("OPTIESMENU", CENTER, 20);
  drawbutton1();
  drawbutton2();
  drawback();
  myGLCD.setFont(SmallFont);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
}
void optionsmenu() {
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawLine(0, 14, 319, 14);
  myGLCD.setBackColor(255, 0, 0);
  alarmtitle();
  myGLCD.setFont(SmallFont);
  myGLCD.setColor(255, 0, 0);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.print("OPTIESMENU", CENTER, 20);
  drawbutton1();
  drawbutton2();
  drawback();
  drawnext();
  myGLCD.setFont(SmallFont);
  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("OPTIES", CENTER, 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("ARMEREN", CENTER, 160);
}
void printmonth(int i) {
  myGLCD.setColor(255, 0, 0);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setFont(BigFont);
  if (i == 1) { myGLCD.print("JANUARI", 95, 100); }
  if (i == 2) { myGLCD.print("FEBRUARI", 95, 100); }
  if (i == 3) { myGLCD.print("MAART", 95, 100); }
  if (i == 4) { myGLCD.print("APRIL", 95, 100); }
  if (i == 5) { myGLCD.print("MEI", 70, 100); }
  if (i == 6) { myGLCD.print("JUNI", 95, 100); }
  if (i == 7) { myGLCD.print("JULI", 95, 100); }
  if (i == 8) { myGLCD.print("AUGUSTUS", 95, 100); }
  if (i == 9) { myGLCD.print("SEPTEMBER", 95, 100); }
  if (i == 10) { myGLCD.print("OKTOBER", 95, 100); }
  if (i == 11) { myGLCD.print("NOVEMBER", 95, 100); }
  if (i == 12) { myGLCD.print("DECEMBER", 95, 100); }
}
int armupdate(int i, int armlength) {
  if (armlength < 4) {
    if (armlength == 0) { arminput[0] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[0], 100, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return arminput[0]; }
    if (armlength == 1) { arminput[1] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[1], 135, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return arminput[1]; }
    if (armlength == 2) { arminput[2] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[2], 170, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return arminput[2]; }
    if (armlength == 3) { arminput[3] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(arminput[3], 205, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return 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(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return timeinput[0]; }
    if (timelength == 2) { timeinput[1] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(timeinput[1], 135, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return timeinput[1]; }
    if (timelength == 3) { timeinput[2] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(timeinput[2], 170, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, 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(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return timeinput[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(autoinput[0], 100, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return autoinput[0]; }
    if (autolength == 1) { autoinput[1] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(autoinput[1], 135, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return autoinput[1]; }
    if (autolength == 2) { autoinput[2] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(autoinput[2], 170, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return autoinput[2]; }
    if (autolength == 3) { autoinput[3] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(autoinput[3], 205, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return autoinput[3]; }
    if (autolength == 4) { autoinput[4] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(autoinput[4], 240, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return autoinput[4]; }
    if (autolength == 5) { autoinput[5] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(autoinput[5], 275, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return autoinput[5]; }
  }
}
int manualupdate(int i, int manuallength) {
  if (manuallength < 6) {
    if (manuallength == 0) { manualinput[0] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(manualinput[0], 100, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return manualinput[0]; }
    if (manuallength == 1) { manualinput[1] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(manualinput[1], 135, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return manualinput[1]; }
    if (manuallength == 2) { manualinput[2] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(manualinput[2], 170, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return manualinput[2]; }
    if (manuallength == 3) { manualinput[3] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(manualinput[3], 205, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return manualinput[3]; }
    if (manuallength == 4) { manualinput[4] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(manualinput[4], 240, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return manualinput[4]; }
    if (manuallength == 5) { manualinput[5] = i; myGLCD.setColor(255, 0, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.printNumI(manualinput[5], 275, 185); digitalWrite(buzzerpin, HIGH); delay(50); digitalWrite(buzzerpin, LOW); return manualinput[5]; }
  }
}
void setup() {
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_EXTREME);
  pinMode(buzzerpin, OUTPUT);
  pinMode(systarm, OUTPUT);
  pinMode(serenapin, OUTPUT);
  digitalWrite(buzzerpin, HIGH);
  delay(1000);
  digitalWrite(buzzerpin, LOW);
  title();
  drawoptions();
  drawarm();
}
void loop() {
  while (true) {
    mainmenu:
    if (myTouch.dataAvailable()) {
      myTouch.read();
      x = myTouch.getX();
      y = myTouch.getY();
      //OPTIES KNOP
      if ((x >= 20) && (x <= 300) && (y >= 70) && (y <= 120)) {
        options:
        optionsmenu();
        myGLCD.setBackColor(192, 192, 192);
        myGLCD.setColor(0, 0, 255);
        myGLCD.print("SET HANDMATIG-ARM WACHTWOORD", CENTER, 73);
        myGLCD.print("SET ARM WACHTWOORD", CENTER, 133);
        digitalWrite(buzzerpin, HIGH);
        delay(50);
        digitalWrite(buzzerpin, LOW);
        while (true) {
          if (myTouch.dataAvailable()) {
            myTouch.read();
            x = myTouch.getX();
            y = myTouch.getY();
            //SET HANDMATIG WACHTWOORD KNOP
            if ((x >= 20) && (x <= 300) && (y >= 60) && (y <= 100)) {
              title();
              myGLCD.setBackColor(0, 0, 0);
              myGLCD.setColor(255, 0, 0);
              myGLCD.print("VOER 6-CIJFERIG WACHTWOORD IN", CENTER, 119);
              drawback();
              drawnext();
              digitalWrite(buzzerpin, HIGH);
              delay(50);
              digitalWrite(buzzerpin, LOW);
              while (true) {
                if (myTouch.dataAvailable()) {
                  myTouch.read();
                  x = myTouch.getX();
                  y = myTouch.getY();
                  if ((x >= 20) && (x <= 150) && (y >= 180) && (y <= 210)) {
                    digitalWrite(buzzerpin, HIGH);
                    delay(50);
                    digitalWrite(buzzerpin, LOW);
                    goto options;
                  }
                  if ((x >= 170) && (x <= 300) && (y >= 180) && (y <= 210)) //BUTTON MENU
                  {
                    for (int o = 0; o < 6; o++) { manualinput[o] = 0; }
                    passinput:
                    int buf = 0;
                    myGLCD.setFont(SmallFont);
                    myGLCD.setColor(255, 255, 255);
                    myGLCD.drawLine(0, 14, 319, 14);
                    myGLCD.setColor(255, 255, 255);
                    drawbuttons();
                    digitalWrite(buzzerpin, HIGH);
                    delay(50);
                    digitalWrite(buzzerpin, LOW);
                    myGLCD.setFont(SevenSegNumFont);
                    myGLCD.setBackColor(0, 0, 0);
                    // vervolg while(true) & drawbuttons (TICK!)
                    while (true) {
                      if (myTouch.dataAvailable()) {
                        myTouch.read();
                        x = myTouch.getX();
                        y = myTouch.getY();
                        //KNOPEN 1-3
                        if ((y >= 15) && (y <= 55)) {
                          if ((x >= 20) && (x <= 60)) //1 { manualupdate(1, buf); buf++; delay(85); }
                          if ((x >= 80) && (x <= 120)) //2 { manualupdate(2, buf); buf++; delay(85); }
                          if ((x >= 140) && (x <= 180)) //3 { manualupdate(3, buf); buf++; delay(85); }
                        }//KNOPEN 1-3 EINDE
                        if ((y >= 70) && (y <= 110)) //KNOPEN 4-6
                        {
                          if ((x >= 20) && (x <= 60)) //4 { manualupdate(4, buf); buf++; delay(85); }
                          if ((x >= 80) && (x <= 120)) //5 { manualupdate(5, buf); buf++; delay(85); }
                          if ((x >= 140) && (x <= 180)) //6 { manualupdate(6, buf); buf++; delay(85); }
                        }//KNOPEN 4-6 EINDE
                        if ((y >= 125) && (y <= 165)) //KNOPEN 7-9
                        {
                          if ((x >= 20) && (x <= 60)) //7 { manualupdate(7, buf); buf++; delay(85); }
                          if ((x >= 80) && (x <= 120)) //8 { manualupdate(8, buf); buf++; delay(85); }
                          if ((x >= 140) && (x <= 180)) //9 { manualupdate(9, buf); buf++; delay(85); }
                        }//KNOPEN 7-9 EINDE
                        if ((x >= 20) && (x <= 80) && (y >= 175) && (y <= 205)) //0 { manualupdate(0, buf); buf++; delay(85); }
                        if ((x >= 190) && (x <= 290) && (y >= 70) && (y <= 110)) //OK KNOP
                        {
                          bool flag = true;
                          for (int t = 0; t < 6; t++) {
                            if (manualinput[t] != manualpass[t]) { flag = false; }
                          }
                          if (flag == true) //correct wachtwoord
                          {
                            for (int i = 0 ; i < 6; i++) { manualinput[i] = 0; }
                            myGLCD.clrScr();
                            myGLCD.setFont(BigFont);
                            myGLCD.print("WACHTWOORD OK!" , CENTER , 100);
                            digitalWrite(buzzerpin, HIGH);
                            delay(50);
                            digitalWrite(buzzerpin, LOW);
                            delay(2000);
                            title();
                            myGLCD.setBackColor(0, 0, 0);
                            myGLCD.setColor(255, 0, 0);
                            myGLCD.print("VOER NIEUW WACHTWOORD IN", CENTER, 119);
                            drawback();
                            drawnext();
                            while (true) {
                              if (myTouch.dataAvailable()) {
                                myTouch.read();
                                x = myTouch.getX();
                                y = myTouch.getY();
                                int buf = 0;
                                //NIEUW WACHTWOORD INVOER
                                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(buzzerpin, HIGH);
                                  delay(50);
                                  digitalWrite(buzzerpin, LOW);
                                  myGLCD.setFont(SevenSegNumFont);
                                  myGLCD.setBackColor(0, 0, 0);
                                  while (true) {
                                    if (myTouch.dataAvailable()) {
                                      myTouch.read();
                                      x = myTouch.getX();
                                      y = myTouch.getY();
                                      //KNOPEN 1-3
                                      if ((y >= 15) && (y <= 55)) {
                                        if ((x >= 20) && (x <= 60)) //1 { manualupdate(1, buf); buf++; delay(85); }
                                        if ((x >= 80) && (x <= 120)) //2 { manualupdate(2, buf); buf++; delay(85); }
                                        if ((x >= 140) && (x <= 180)) //3 { manualupdate(3, buf); buf++; delay(85); }
                                      }//KNOPEN 1-3 EINDE
                                      if ((y >= 70) && (y <= 110)) //KNOPEN 4-6
                                      {
                                        if ((x >= 20) && (x <= 60)) //4 { manualupdate(4, buf); buf++; delay(85); }
                                        if ((x >= 80) && (x <= 120)) //5 { manualupdate(5, buf); buf++; delay(85); }
                                        if ((x >= 140) && (x <= 180)) //6 { manualupdate(6, buf); buf++; delay(85); }
                                      }//KNOPEN 4-6 EINDE
                                      if ((y >= 125) && (y <= 165)) //KNOPEN 7-9
                                      {
                                        if ((x >= 20) && (x <= 60)) //7 { manualupdate(7, buf); buf++; delay(85); }
                                        if ((x >= 80) && (x <= 120)) //8 { manualupdate(8, buf); buf++; delay(85); }
                                        if ((x >= 140) && (x <= 180)) //9 { manualupdate(9, buf); buf++; delay(85); }
                                      }//KNOPEN 7-9 EINDE
                                      if ((x >= 20) && (x <= 80) && (y >= 175) && (y <= 205)) //0 { manualupdate(0, buf); buf++; delay(85); }
                                      //HIER KOMT DE OK. ZAL VRAGEN OF WACHTWOORD OK IS (2 KNOPPEN, JA & NEE). ALS "JA", DAN KEERT TERUG NAAR HOOFDMENU, ALS "NEE" KEERT TERUG NAAR WACHTWOORD INVOER
                                      if ((x >= 190) && (x <= 290) && (y >= 70) && (y <= 110))//NIEUW WACHTWOORD OK KNOP
                                      {
                                        buf = 0;
                                        myGLCD.clrScr();
                                        title();
                                        ... Dit bestand is afgekapt, download het om de volledige inhoud te zien.

Productieproces

  1. Bewegingsdetectie Alarmsysteem met Java & Reactive Blocks – Implementeren op Raspberry Pi & SMS Sturen
  2. Een DTMF-decoder bouwen met alleen een Arduino – Geen extra IC's nodig
  3. Arduino-gestuurd automatische plantenwateringssysteem
  4. Beveiliging van alarmsystemen testen met Arduino en RF-modules
  5. Slimme Kelder Ventilatiesysteem: Arduino-gestuurde Vochtcontrole
  6. Python 3 naar Arduino UNO: Eenvoudige Commando Besturing en LED Demo
  7. Real-time RFID aanwezigheidssysteem met Arduino en Google Sheets
  8. Geavanceerd Arduino Botsingswaarschuwingsysteem – Visuele & Audio Alerts voor Voertuigveiligheid
  9. Arduino Beveiligingssysteem: Slimme Bewegingsdetectie & Alarm
  10. Bouw een betrouwbare wekker met DS1302 RTC en Arduino UNO
  11. Fail-Safe Besturingssystemen Ontwerpen voor Veiligheid en Betrouwbaarheid