Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Système d'alarme Arduino :SERENA

Composants et fournitures

Arduino Mega 2560
× 1
Écran tactile LCD TFT 3,2"
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

J'ai déjà vu de nombreux systèmes d'alarme, je les ai vérifiés, j'ai pu voir comment ils fonctionnaient et j'ai décidé de créer le mien. Je veux dire, pourquoi pas ? Pourquoi ne pas prendre quelque chose et le rendre encore meilleur ? Je veux dire, je suis ingénieur en informatique (un étudiant de premier cycle, mais cela change bientôt) après tout.

Et c'est ainsi que ce projet est né.

J'ai vérifié beaucoup de systèmes et ce qu'ils peuvent réellement offrir et j'ai pensé que c'était une bonne idée de mettre toutes ces fonctions (et certaines des miennes) dans une seule carte Arduino qui servira de panneau de commande de l'alarme.

Rien de compliqué ici, je viens d'acheter la carte elle-même avec un écran tactile de 3,2". Pour faire fonctionner l'écran bien sûr, j'avais besoin de quelques bibliothèques. Donc un grand merci à Henning Carlsen pour toutes les bibliothèques ! Lien vers son site web dans les crédits rubrique.

Le programme

Maintenant, cela m'a pris un certain temps pour terminer. Ne laissez pas le code vous embrouiller, je commente toujours si nécessaire !

Les principales fonctions de l'alarme

J'ai décidé d'inclure trois mots de passe différents. Un à 4 chiffres, un à 5 chiffres et un à 6 chiffres. Je sais que c'est beaucoup, mais dans une future mise à jour, je donnerai à l'utilisateur la possibilité de désactiver le code à 4 chiffres.

  • Le pass à 4 chiffres est utilisé pour armer l'alarme.
  • Le pass à 5 chiffres est utilisé pour désarmer partiellement l'alarme.
  • Le pass à 6 chiffres est utilisé pour désarmer complètement l'alarme.

L'alarme peut également s'armer automatiquement. Après avoir entré le code à 5 chiffres, le programme lancera un compte à rebours (40 secondes par défaut). Une fois ce compte à rebours terminé, l'alarme sera automatiquement armée. Cela peut être très pratique lorsque vous oubliez généralement d'armer le système.

Menu Options

Dans le menu des options, vous pouvez modifier les trois mots de passe, ainsi que l'heure d'armement automatique.

Mises à jour futures

Les futures mises à jour incluront les paramètres de date/heure, la prise en charge de la carte SD (en cas de panne de courant et nous ne voulons pas perdre de données), la possibilité de désactiver l'armement automatique, la possibilité de désactiver le pass à 4 chiffres et bien d'autres .

Vidéo de présentation

Code

  • SERENA v.1.01
SERENA v.1.01Arduino
Téléchargez simplement le code sur votre carte Arduino.
Certains commentaires sont en grec, cela va changer bientôt.
////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////Système d'alarme SERENA//Auteur :Michael Marinis//Copyright (C)2016 Michael Marinis. Tous droits réservés//Site Web :http://www.youtube.com/SauROnmiKE////Ceci est le système d'alarme SERENA, un système d'alarme à deux fonctions qui donne//à l'utilisateur la possibilité d'armer automatiquement l'alarme, ou l'armer manuellement lorsque l'utilisateur le souhaite.////Ce programme nécessite les bibliothèques UTFT &URTouch de Henning Karlsen et un écran LCD//compatible avec son shield.////////////// VERSIONS////////////0.10a :Première version, fonctions de base//0.20a :Améliorations mineures//0.30a :La saisie et la confirmation d'un nouveau mot de passe d'armement manuel sont terminées (12/11 /2016)//0.40a :La saisie et la confirmation d'un nouveau mot de passe d'armement automatique sont effectuées (12/11/2016)//1,00a : Saisie et vérification du mot de passe d'armement terminées (12/11/2016, 19:16) //1.10a :Terminé le menu lorsque le système est armé (sans envoyer de signal à un relais ou autre). L'heure et la date seront ajoutées ultérieurement. Le bouton Désarmer est seulement ajouté (13/11/2016, 13:04)//1.20a :Programmé le bouton "DÉSARMER". Il invite à la saisie du mot de passe à 5 chiffres. Une vérification du mot de passe est également effectuée, ce qui désarme l'alarme (sans envoyer de signal à un relais ou autre chose) (13/11/2016, 14:15)//1.21a :Correction d'un problème où l'utilisateur ne pouvait pas taper de chiffres après le contrôle de confirmation du mot de passe. Si l'utilisateur appuyait sur « NON », il ne pouvait pas saisir un nouveau mot de passe avant d'appuyer sur le bouton « EFFACER ». Ceci est maintenant corrigé (14/11/2016, 13:32)//1.22a :Le compte à rebours pour l'armement automatique est maintenant terminé (14/11/2016, 15:46)//1.30a :Auto-Arm Le menu est complet. Le menu d'armement automatique affiche les secondes restantes pour que le bras soit à nouveau armé automatiquement. Le menu de désarmement complet sera accessible via un bouton-poussoir en raison des limitations de la bibliothèque (14/11/2016, 21:42)//1.31a :Modification de la variable "buf" de "-1" à "0". Cela a résolu le bogue, où la première pression sur n'importe quel bouton numérique ne ferait rien (16/11/2016, 00:45)//1.40b:Ajout du bouton "SET ARM PASSWORD" qui permet à l'utilisateur de modifier le 4 -mot de passe chiffré utilisé pour armer l'alarme (16/11/2016, 14:33)//1.41b :Les boutons « RETOUR » du « SET AUTO-ARM PASS », redirigent maintenant vers la deuxième page du menu des options, au lieu du premier (16/11/2016, 16:21)//1.42b :Terminé le troisième menu d'options. Il contient les boutons "RÉGLER L'HEURE" et "RÉGLER LA DATE" (16/11/2016, 16:37)//1.43b :Correction d'un bug où le bouton d'effacement sur l'entrée du pass de désarmement ne réinitialisait pas réellement la "saisie automatique" array (17/11/2016, 00:05)//1.44b:Le bouton "SET AUTO-ARM PASS", va maintenant inviter l'utilisateur au deuxième menu d'options lorsque le mot de passe est modifié, au lieu du premier (18 /11/2016, 10:02)//Les modifications seront enregistrées jusqu'à la version finale 1.00. Après 1.00, les changements seront enregistrés dans le fichier SERENA_changelog.txt.//1.00 :Conception de la fonction de désarmement complet. La fonction nécessitera le mot de passe à 6 chiffres et vous invitera au menu principal du programme d'alarme. Un buzzer se fait entendre à chaque clic sur un bouton (8/1/2017, 20:53)//////////FUTURE VERSIONS//////////// *IDEES POUR DE NOUVELLES VERSIONS SERA MIS ICI*/////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////// ///////////#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 manuelpass[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 mois =1; int jour =1;int année =2016;//FONCTIONS PERSONNALISÉES void alarmtitle(){ myGLCD.setFont(SmallFont); monGLCD.setBackColor(0, 0, 0); monGLCD.clrScr(); monGLCD.setColor(255, 255, 255); monGLCD.setBackColor(255, 0, 0); monGLCD.drawLine(0, 14, 319, 14); myGLCD.print("SERENA ALARM SYSTEM v.1.01", CENTRE, 1);}titre nul()//SEPAREE PARCE QUE LE NOM N'EST PAS RECHERCHE PARFOIS{ alarmtitle(); myGLCD.print("PAR MICHAEL MARINIS", CENTRE, 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); monGLCD.fillRoundRect(20, 180, 300, 220); monGLCD.setColor(0, 0, 0); monGLCD.setBackColor(192, 192, 192); monGLCD.setFont(BigFont); myGLCD.print("DÉSARMER", CENTRE, 193) ;}annulation de l'annulation(){ myGLCD.setColor(192, 192, 192); monGLCD.fillRoundRect(20, 180, 150, 210) ; monGLCD.setBackColor(192, 192, 192); monGLCD.setColor(0, 0, 0); monGLCD.setFont(SmallFont); monGLCD.print("BACK", 70, 190);}void drawo(){ myGLCD.setColor(192, 192, 192); monGLCD.fillRoundRect(20, 180, 150, 210) ; monGLCD.setBackColor(192, 192, 192); monGLCD.setColor(0, 0, 0); monGLCD.setFont(SmallFont); myGLCD.print("NON", 80, 190);}void drawyes(){ myGLCD.setColor(192, 192, 192); monGLCD.fillRoundRect(170, 180, 300, 210); monGLCD.setBackColor(192, 192, 192); monGLCD.setColor(0, 0, 0); monGLCD.setFont(SmallFont); myGLCD.print("OUI", 225, 190);}voiddrawext(){ myGLCD.setColor(192, 192, 192); monGLCD.fillRoundRect(170, 180, 300, 210); monGLCD.setBackColor(192, 192, 192); monGLCD.setColor(0, 0, 0); monGLCD.setFont(SmallFont); monGLCD.print("NEXT", 220, 190);}void drawbuttons(){ myGLCD.clrScr(); entier z; monGLCD.setFont(SmallFont); pour (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(20 + (z * 60), 15, 60 + (z * 60), 55); monGLCD.setColor(255, 255, 255); monGLCD.setBackColor(255, 0, 0); monGLCD.printNumI(z + 1, 37 + (z * 60), 30); } pour (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(20 + (z * 60), 70, 60 + (z * 60), 110); monGLCD.setColor(255, 255, 255); monGLCD.setBackColor(255, 0, 0); monGLCD.printNumI(z + 4, 37 + (z * 60), 85); } pour (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(20 + (z * 60), 125, 60 + (z * 60), 165); monGLCD.setColor(255, 255, 255); monGLCD.setBackColor(255, 0, 0); monGLCD.printNumI(z + 7, 37 + (z * 60), 140); } pour (z =0; z <3; z++) { myGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(190, 15 + (z * 55), 290, 55 + (z * 55)); } monGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(20, 175, 80, 205); monGLCD.setColor(255, 255, 255); monGLCD.setBackColor(255, 0, 0); monGLCD.printNumI(0, 48, 185); monGLCD.setColor(255, 255, 255); monGLCD.setBackColor(255, 0, 0); monGLCD.print("EFFACER", 221, 30); monGLCD.print("OK", 232, 85); myGLCD.print("BACK", 225, 140);}void optionsmenuend(){ myGLCD.clrScr(); monGLCD.setFont(SmallFont); monGLCD.setColor(255, 255, 255); monGLCD.drawLine(0, 14, 319, 14); monGLCD.setBackColor(255, 0, 0); titrealarme(); monGLCD.setFont(SmallFont); monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.print("MENU OPTIONS", CENTRE, 20); drawbutton1(); drawbutton2(); inconvénient(); monGLCD.setFont(SmallFont); monGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0);}void optionsmenu(){ myGLCD.clrScr(); monGLCD.setFont(SmallFont); monGLCD.setColor(255, 255, 255); monGLCD.drawLine(0, 14, 319, 14); monGLCD.setBackColor(255, 0, 0); titrealarme(); monGLCD.setFont(SmallFont); monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.print("MENU OPTIONS", CENTRE, 20); drawbutton1(); drawbutton2(); inconvénient(); dessinéext(); monGLCD.setFont(SmallFont); monGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0);}void drawoptions(){ myGLCD.setFont(BigFont); monGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(20, 70, 300, 120); monGLCD.setBackColor(255, 0, 0); monGLCD.setColor(255, 255, 255); myGLCD.print("OPTIONS", CENTRE, 90);}bras de tirage nul(){ myGLCD.setFont(BigFont); monGLCD.setColor(255, 0, 0); monGLCD.fillRoundRect(20, 140, 300, 190); monGLCD.setBackColor(255, 0, 0); monGLCD.setColor(255, 255, 255); monGLCD.print("ARM", CENTER, 160);}void printmonth(int i){ myGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.setFont(BigFont); if (i ==1) { monGLCD.print("JANVIER", 95, 100); } if (i ==2) { monGLCD.print("FÉVRIER", 95, 100); } if (i ==3) { monGLCD.print("MARS", 95, 100); } if (i ==4) { monGLCD.print("AVRIL", 95, 100); } if (i ==5) { monGLCD.print("MAI", 70, 100); } if (i ==6) { monGLCD.print("JUIN", 95, 100); } if (i ==7) { monGLCD.print("JUILLET", 95, 100); } if (i ==8) { monGLCD.print("AOT", 95, 100); } if (i ==9) { monGLCD.print("SEPTEMBRE", 95, 100); } if (i ==10) { monGLCD.print("OCTOBRE", 95, 100); } if (i ==11) { monGLCD.print("NOVEMBRE", 95, 100); } if (i ==12) { monGLCD.print("DÉCEMBRE", 95, 100); }}//int updatedate(int d, int m, int y)//{// if (y % 4 ==0)//DISEKTO ETOS// {// if ((m>=0) &&(m <=13))// {// si (m ==1 || m ==3 || m ==5 || m ==7 || m ==8 || m ==10 || m ==12)// {// si ((d>=0) &&(d <=32))// {// si (d ==0)// {// d =31;// }// // if (d ==32)// {// d =1;// }// }// }// }// }//DISEKTO ETOS END//}int armupdate(int i, int armlength) { if (armlength <4) { if (armlength ==0) { arminput[0] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(arminput[0], 100, 185); //+35 gia kathe nouumero meta digitalWrite(buzzerpin, HIGH); retard (50); digitalWrite(buzzerpin, LOW); retour arminput[0]; } if (armlength ==1) { arminput[1] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(arminput[1], 135, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour arminput[1] ; } if (armlength ==2) { arminput[2] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(arminput[2], 170, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour arminput[2]; } if (armlength ==3) { arminput[3] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(arminput[3], 205, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour arminput[3] ; } }}int autoarmupdate(int i, int timelength){ if (timelength <5) { if (timelength ==1) { timeinput[0] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(timeinput[0], 100, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour timeinput[0] ; } if (timelength ==2) { timeinput[1] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(timeinput[1], 135, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour timeinput[1] ; } if (timelength ==3) { timeinput[2] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(timeinput[2], 170, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour timeinput[2]; } if (timelength ==4) { timeinput[3] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(timeinput[3], 205, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retour timeinput[3] ; } }}int autoupdate(int i, int autolength){ if (autolength <5) { if (autolength ==0) { autoinput[0] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(autoinput[0], 100, 185); //+35 gia kathe nouumero meta digitalWrite(buzzerpin, HIGH); retard (50); digitalWrite(buzzerpin, LOW); renvoie autoinput[0] ; } if (autolength ==1) { autoinput[1] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(saisie automatique[1], 135, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie la saisie automatique[1] ; } if (autolength ==2) { autoinput[2] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(autoinput[2], 170, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie la saisie automatique[2] ; } if (autolength ==3) { autoinput[3] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(autoinput[3], 205, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie la saisie automatique[3] ; } if (autolength ==4) { autoinput[4] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(autoinput[4], 240, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie la saisie automatique[4] ; } if (autolength ==5) { autoinput[5] =i; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(saisie automatique[5], 275, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie la saisie automatique[5] ; } }}int manualupdate(int i, int manuallength){ if (manuallength <6) { if (manuallength ==0) { manualinput[0] =i; //longueurmanuelle++; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(manualinput[0], 100, 185); //+35 gia kathe nouumero meta digitalWrite(buzzerpin, HIGH); retard (50); digitalWrite(buzzerpin, LOW); renvoie l'entrée manuelle[0] ; } if (manuallength ==1) { manualinput[1] =i; //longueurmanuelle++; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(manualinput[1], 135, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie l'entrée manuelle[1] ; } if (manuallength ==2) { manualinput[2] =i; //longueurmanuelle++; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(manualinput[2], 170, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie l'entrée manuelle[2] ; } if (manuallength ==3) { manualinput[3] =i; //longueurmanuelle++; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(manualinput[3], 205, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie l'entrée manuelle[3] ; } if (manuallength ==4) { manualinput[4] =i; //longueurmanuelle++; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(manualinput[4], 240, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie l'entrée manuelle[4] ; } if (manuallength ==5) { manualinput[5] =i; //longueurmanuelle++; monGLCD.setColor(255, 0, 0); monGLCD.setBackColor(0, 0, 0); monGLCD.printNumI(manualinput[5], 275, 185); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); renvoie l'entrée manuelle[5] ; } }}configuration vide(){ monGLCD.InitLCD(); monGLCD.clrScr(); monTouche.InitTouch(); myTouch.setPrecision(PREC_EXTREME); pinMode(buzzerpin, SORTIE); pinMode(système, SORTIE); pinMode(sérénapine, SORTIE); digitalWrite(buzzerpin, HAUT); retard(1000); digitalWrite(buzzerpin, LOW); Titre(); options de tirage(); drawarm();}void loop(){ while (true) {mainmenu:if (myTouch.dataAvailable()) { myTouch.read(); x =monTouche.getX(); y =monTouche.getY(); //BOUTON OPTIONS if ((x>=20) &&(x <=300) &&(y>=70) &&(y <=120)) {options:optionsmenu(); monGLCD.setBackColor(192, 192, 192); monGLCD.setColor(0, 0, 255); monGLCD.print("SET MOT DE PASSE MANUEL-ARM", CENTRE, 73); monGLCD.print("SET ARM PASSWORD", CENTRE, 133); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =monTouche.getX(); y =monTouche.getY(); //SET MANUAL PASSWORD BUTTON if ((x>=20) &&(x <=300) &&(y>=60) &&(y <=100)) { title(); monGLCD.setBackColor(0, 0, 0); monGLCD.setColor(255, 0, 0); monGLCD.print("ENTRER LE MOT DE PASSE À 6 CHIFFRES", CENTRE, 119); inconvénient(); dessinéext(); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =monTouche.getX(); y =monTouche.getY(); if ((x>=20) &&(x <=150) &&(y>=180) &&(y <=210)) { digitalWrite(buzzerpin, HIGH); retard (50); digitalWrite(buzzerpin, LOW); aller aux options ; } if ((x>=170) &&(x <=300) &&(y>=180) &&(y <=210)) //BUTTON MENU { for (int o =0; o <6; o++) { entréemanuelle[o] =0 ; } passinput :int buf =0 ; monGLCD.setFont(SmallFont); monGLCD.setColor(255, 255, 255); monGLCD.drawLine(0, 14, 319, 14); monGLCD.setColor(255, 255, 255); boutons de dessin (); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); monGLCD.setFont(SevenSegNumFont); monGLCD.setBackColor(0, 0, 0); //akolothei to while(true) &drawbuttons (TICK!) while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =monTouche.getX(); y =monTouche.getY(); //BOUTONS 1-3 if ((y>=15) &&(y <=55)) { if ((x>=20) &&(x <=60)) //1 { manualupdate(1, buf); buf++; retard (85); } if ((x>=80) &&(x <=120)) //2 { manualupdate(2, buf); buf++; retard (85); } if ((x>=140) &&(x <=180)) //3 { manualupdate(3, buf); buf++; retard (85); } }//BUTTONS 1-3 END if ((y>=70) &&(y <=110)) //BUTTONS 4-6 { if ((x>=20) &&(x <=60)) // 4 { mise à jour manuelle(4, buf); buf++; retard (85); } if ((x>=80) &&(x <=120)) //5 { manualupdate(5, buf); buf++; retard (85); } if ((x>=140) &&(x <=180)) //6 { manualupdate(6, buf); buf++; retard (85); } }//BUTTONS 4-6 END if ((y>=125) &&(y <=165)) //BUTTONS 7-9 { if ((x>=20) &&(x <=60)) // 7 { mise à jour manuelle (7, buf); buf++; retard (85); } if ((x>=80) &&(x <=120)) //8 { manualupdate(8, buf); buf++; retard (85); } if ((x>=140) &&(x <=180)) //9 { manualupdate(9, buf); buf++; retard (85); } }//BUTTONS 7-9 END if ((x>=20) &&(x <=80) &&(y>=175) &&(y <=205)) //0 { manualupdate(0, buf); buf++; retard (85); } if ((x>=190) &&(x <=290) &&(y>=70) &&(y <=110)) //OK BUTTON { bool flag =true; for (int t =0; t <6; t++) { if (manualinput[t] !=manualpass[t]) { flag =false; } } if (flag ==true) //swstos kwdikos { for (int i =0; i <6; i++) { manualinput[i] =0; } monGLCD.clrScr(); monGLCD.setFont(BigFont); monGLCD.print("PASS OK!" , CENTRE , 100); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); retard (2000); Titre(); monGLCD.setBackColor(0, 0, 0); monGLCD.setColor(255, 0, 0); monGLCD.print("ENTRER UN NOUVEAU MOT DE PASSE", CENTRE, 119); inconvénient(); dessinéext(); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =monTouche.getX(); y =monTouche.getY(); int buf =0; //EISAGWGH NEOU KWDIKOU if ((x>=170) &&(x <=300) &&(y>=180) &&(y <=210)) {newmanpassinput:myGLCD.setFont(SmallFont); monGLCD.setColor(255, 255, 255); monGLCD.drawLine(0, 14, 319, 14); monGLCD.setColor(255, 255, 255); boutons de dessin (); digitalWrite(buzzerpin, HAUT); retard (50); digitalWrite(buzzerpin, LOW); monGLCD.setFont(SevenSegNumFont); monGLCD.setBackColor(0, 0, 0); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x =monTouche.getX(); y =monTouche.getY(); //BOUTONS 1-3 if ((y>=15) &&(y <=55)) { if ((x>=20) &&(x <=60)) //1 { manualupdate(1, buf); buf++; retard (85); } if ((x>=80) &&(x <=120)) //2 { manualupdate(2, buf); buf++; retard (85); } if ((x>=140) &&(x <=180)) //3 { manualupdate(3, buf); buf++; retard (85); } }//BUTTONS 1-3 END if ((y>=70) &&(y <=110)) //BUTTONS 4-6 { if ((x>=20) &&(x <=60)) // 4 { mise à jour manuelle(4, buf); buf++; retard (85); } if ((x>=80) &&(x <=120)) //5 { manualupdate(5, buf); buf++; retard (85); } if ((x>=140) &&(x <=180)) //6 { manualupdate(6, buf); buf++; retard (85); } }//BUTTONS 4-6 END if ((y>=125) &&(y <=165)) //BUTTONS 7-9 { if ((x>=20) &&(x <=60)) // 7 { mise à jour manuelle (7, buf); buf++; retard (85); } if ((x>=80) &&(x <=120)) //8 { manualupdate(8, buf); buf++; retard (85); } if ((x>=140) &&(x <=180)) //9 { manualupdate(9, buf); buf++; retard (85); } }//BUTTONS 7-9 END if ((x>=20) &&(x <=80) &&(y>=175) &&(y <=205)) //0 { manualupdate(0, buf); buf++; retard (85); } //EDW THA MPEI TO OK. THA RWTAW AN O KWDIKOS EINAI ENTAKSEI (2 KOUMPIA, OUI &NON). UN "OUI", TOTE THA EPISTREFEI STO ARXIKO MENOU, UN "NON" THA EPISTREFEI STHN EISAGWGH KWDIKOY si ((x>=190) &&(x <=290) &&(y>=70) &&(y <=110) )//NOUVEAU BOUTON PASS OK { buf =0; monGLCD.clrScr(); title();...Ce fichier a été tronqué, veuillez le télécharger pour voir son contenu complet.

Processus de fabrication

  1. Conception à sécurité intégrée
  2. Système d'alarme de détection de mouvement
  3. Décodeur DTMF utilisant uniquement Arduino
  4. Système d'arrosage automatique des plantes avec Arduino
  5. La sécurité du système d'alarme mise à l'épreuve
  6. Système de ventilation du sous-sol/du vide sanitaire
  7. Communication Python3 et Arduino
  8. Système de présence basé sur Arduino et la feuille de calcul Google
  9. Réveil simple avec DS1302 RTC