-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.ino
130 lines (106 loc) · 2.84 KB
/
main.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//FINGERPRINT_GARAGE_DOOR_OPENER
#include <Adafruit_Fingerprint.h> //fingerprint
#include <LiquidCrystal_I2C.h> //LCD display
#include "DHT.h" //Dht (temp and humdidity)
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
SoftwareSerial mySerial(2, 3);
#else
#define mySerial Serial1
#endif
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
LiquidCrystal_I2C lcd(0x27,16,2); //size of LCD
#define DHTPIN 5 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
pinMode (4, OUTPUT); //relay switch setup
digitalWrite (4, HIGH);
Serial.println(F("DHTxx test!"));
dht.begin(); //temp and humidity sensor
//LCD setup
lcd.init();
lcd.clear();
lcd.backlight();
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit finger detect test");
// set the data rate for the sensor serial port
finger.begin(57600);
delay(5);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
finger.getTemplateCount();
}
void loop()// run over and over again
{
getFingerprintID();
delay(100);
gethum_temp();
}
//funtions
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println("No finger detected");
return p;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
}
// OK converted!
p = finger.fingerSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
digitalWrite (4, LOW); //switches relay on; opens garage
lcd.clear();
lcd.setCursor (0,0);
lcd.print (" Access Granted");
delay (1000);
lcd.clear();
digitalWrite (4, HIGH);
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
lcd.clear();
lcd.setCursor (0,0);
lcd.print (" Access Denied");
delay (1000);
lcd.clear();
return p;
}
}
//get humidity and temp function
void gethum_temp(){
int temp = analogRead (A1);
int settemp = map(temp, 1023, 0, 50, 99);
int h = dht.readHumidity();
float t = dht.readTemperature();
int f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
lcd.print(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
lcd.setCursor (0,0);
lcd.print(F(" Humidity: "));
lcd.print(h);
lcd.print ("%");
lcd.setCursor (0,1);
lcd.print(F(" Temp: "));
lcd.print(f);
lcd.print("F");
}