-
Notifications
You must be signed in to change notification settings - Fork 0
/
Codeschloss_Teil1.ino
96 lines (89 loc) · 2.76 KB
/
Codeschloss_Teil1.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Codeschloss Tobias Kuch 2020 GPL 3.0
#include <Keypad.h>
#define RGBLED_G 2
#define RGBLED_B 4
#define RGBLED_R 3
#define RELAIS_A A0
const byte ROWS = 4;
const byte COLS = 4;
const byte MaxPinCodeLength = 20;
char keys[ROWS][COLS] = {
{1,2,3,13},
{4,5,6,23},
{7,8,9,33},
{40,10,42,43}
};
byte rowPins[ROWS] = {8,7,6,5}; //5,6,7,8};
byte colPins[COLS] = {12,11,10,9}; // {9,10,11,12};
byte KeyPadBuffer[MaxPinCodeLength];
byte PinCode[MaxPinCodeLength] = {1,2,3,13}; // Standard Pincode: 123A - Bitte Ändern gemäß Beschreibung -
byte BufferCount = 0;
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
Serial.begin(9600);
pinMode(RGBLED_G,OUTPUT); // Ausgang RGB LED Grün
pinMode(RGBLED_R,OUTPUT); // Ausgang RGB LED Rot
pinMode(RGBLED_B,OUTPUT); // Ausgang RGB LED Blau
pinMode(RELAIS_A,OUTPUT); //Relais Output
digitalWrite(RELAIS_A,HIGH);
BufferCount = 0;
for (byte a = 0; a <= MaxPinCodeLength; a++)
{
KeyPadBuffer[a] = 0;
}
digitalWrite(RGBLED_R,LOW);
digitalWrite(RGBLED_G,HIGH);
digitalWrite(RGBLED_B,HIGH);
}
void loop()
{
char key = keypad.getKey();
if(key)
{
if(key ==40) // Clear Keypad Buffer Key: *
{
for (byte a = 0; a <= MaxPinCodeLength; a++)
{
KeyPadBuffer[a] = 0;
}
digitalWrite(RGBLED_R,HIGH);
digitalWrite(RGBLED_G,LOW);
digitalWrite(RGBLED_B,HIGH);
Serial.print("Clear ");
Serial.println(BufferCount);
BufferCount = 0;
} else
if(key ==42) // Enter Keypad Buffer Key: #
{
bool AcceptCode = true;
for (byte a = 0; a <= BufferCount; a++)
{
if (!(PinCode[a] == KeyPadBuffer[a])) {AcceptCode = false; }
}
if (AcceptCode)
{
Serial.println("Code korrekt");
digitalWrite(RELAIS_A,(!digitalRead(RELAIS_A)));
digitalWrite(RGBLED_R,LOW);
digitalWrite(RGBLED_G,HIGH);
digitalWrite(RGBLED_B,LOW);
} else
{
digitalWrite(RGBLED_R,HIGH);
digitalWrite(RGBLED_G,LOW);
digitalWrite(RGBLED_B,LOW);
}
for (byte a = 0; a <= MaxPinCodeLength; a++) { KeyPadBuffer[a] = 0; }
BufferCount = 0;
delay(1000);
digitalWrite(RGBLED_R,LOW);
digitalWrite(RGBLED_G,HIGH);
digitalWrite(RGBLED_B,HIGH);
} else
{
KeyPadBuffer[BufferCount] = key;
if (BufferCount < MaxPinCodeLength ) { BufferCount++; }
}
}
}