1#include <Keypad.h>
2#include <Password.h>
3
4Password password = Password( "1234" );
5
6const byte rows = 4;
7const byte cols = 4;
8char keys[rows][cols] = {
9
10{'1','2','3','A'},
11{'4','5','6','B'},
12{'7','8','9','C'},
13{'*','0','#','D'},
14
15};
16
17byte rowPins[rows] = {9,8,7,6};
18byte colPins[cols] = {5,4,3,2};
19Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
20
21
22
23#define sensorz A3
24
25#define alrm 12
26#define redLed A2
27#define greenLed A0
28#define yellowLed A1
29int contact = 10;
30int val;
31int ledBlink;
32
33int sensorzData;
34unsigned long ceas, timpmemorat;
35
36int intarziereactivare = 20;
37int intarzieredezactivare = 10;
38int timpurlat = 10;
39
40
41char caz = 0;
42
43int sistem = 0;
44
45
46
56
57void setup()
58 {
59 keypad.addEventListener(keypadEvent);
60
61 Serial.begin(9600);
62 pinMode(alrm, OUTPUT);
63 pinMode(sensorz, INPUT);
64 pinMode(contact, INPUT);
65 pinMode(redLed, OUTPUT);
66 pinMode(yellowLed, OUTPUT);
67 pinMode(greenLed, OUTPUT);
68 digitalRead(contact);
69 Serial.println("System startup");
70 Serial.println("Alarm button status:");
71 Serial.println(digitalRead(contact));
72 }
73
74void loop()
75
76 {
77
78 ceas = millis();
79 val = digitalRead(contact);
80
81keypad.getKey();
82
83
84 if (sistem%2 == 0)
85 {
86
87 digitalWrite(greenLed, LOW);
88 digitalWrite(redLed, LOW);
89 digitalWrite(yellowLed, HIGH);
90
91
92 digitalWrite(alrm, LOW);
93 caz = 0;
94
95
96 }
97
98 else
99 {
100
101 if(caz == 0)
102 {
103 caz = 1;
104 timpmemorat = ceas;
105 digitalWrite(yellowLed, HIGH);
106 }
107
108 if(caz == 1)
109 {
110
111 if ((ceas%1000)<500) digitalWrite(greenLed, HIGH);
112 else digitalWrite(greenLed, LOW);
113 keypad.getKey();
114 if(ceas >= timpmemorat + intarziereactivare * 1000) {caz = 2;}
115
116 }
117
118 if(caz == 2)
119 {
120 digitalWrite(greenLed, HIGH);
121 keypad.getKey();
122
123 sensorzData = digitalRead(sensorz);
124
125
126
127
128 if(sensorzData == HIGH)
129 {
130 caz = 3;
131 timpmemorat = ceas;
132 digitalWrite(greenLed, LOW);
133 }
134 Serial.println("System is armed !");
135 }
136
137 if(caz == 3)
138 {
139
140 if ((ceas%500)<100) digitalWrite(redLed, HIGH);
141 else digitalWrite(redLed, LOW);
142 keypad.getKey();
143 if(ceas >= timpmemorat + intarzieredezactivare * 10) {caz = 4; timpmemorat = ceas;}
144 Serial.println("System is triggered and is countdown !");
145 }
146
147 if(caz == 4)
148 {
149
150 digitalWrite(redLed, HIGH);
151 Serial.println("Siren is active !");
152
153
154
155
156
157 for(double x = 0; x < 0.92; x += 0.01){
158 tone(10, sinh(x+8.294), 10);
159 delay(1);
160 }
161
162
163 keypad.getKey();
164 if(ceas >= timpmemorat + timpurlat * 1000) {caz = 2; digitalWrite(alrm, LOW); digitalWrite(redLed, LOW);}
165 }
166 }
167 }
168
169
170void keypadEvent(KeypadEvent eKey){
171 switch (keypad.getState()){
172 case PRESSED:
173 Serial.print("Pressed: ");
174 Serial.println(eKey);
175 switch (eKey){
176 case '*': checkPassword(); break;
177 case '#': password.reset(); break;
178 default: password.append(eKey);
179 }
180 }
181}
182
183
184 void checkPassword(){
185 if (password.evaluate()){
186 Serial.println("Success");
187 sistem++;
188 password.reset();
189 Serial.println("Disarmed");
190 }else{
191 Serial.println("Wrong");
192
193 ledBlink = 0;
194 while (ledBlink <= 5){
195 digitalWrite(redLed, HIGH);
196 delay(100);
197 digitalWrite(redLed, LOW);
198 delay(100);
199 ledBlink++;
200 }
201 password.reset();
202 }
203}