Advertisement
safwan092

Untitled

May 12th, 2022
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.51 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <Adafruit_MLX90614.h>
  4. #include <Adafruit_Fingerprint.h>
  5. float tempO = 0;
  6. //------------------------------------------byte array to display degrees on the LCD
  7. byte degree[8] = {
  8. 0b00110,
  9. 0b01001,
  10. 0b01001,
  11. 0b00110,
  12. 0b00000,
  13. 0b00000,
  14. 0b00000,
  15. 0b00000
  16. };
  17. //------------------------------------------
  18.  
  19. #if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
  20. // For UNO and others without hardware serial, we must use software serial...
  21. // pin #2 is IN from sensor (GREEN wire)
  22. // pin #3 is OUT from arduino (WHITE wire)
  23. // Set up the serial port to use softwareserial..
  24. SoftwareSerial mySerial(2, 3);
  25.  
  26. #else
  27. // On Leonardo/M0/etc, others with hardware serial, use hardware serial!
  28. // #0 is green wire, #1 is white
  29. #define mySerial Serial1
  30.  
  31. #endif
  32. LiquidCrystal_I2C lcd(0x27, 20, 4);
  33. Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //-> mlx declaration
  34. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
  35. #define pumpPin 11
  36.  
  37. int fingerNumber = 0;
  38. void setup()
  39. {
  40. pinMode(pumpPin, OUTPUT);
  41. digitalWrite(pumpPin, LOW);
  42. lcd.init();
  43. lcd.backlight();
  44. lcd.setCursor(3, 0);
  45. lcd.print("Hello, world!");
  46. lcd.createChar(0, degree);
  47. mlx.begin();
  48. Serial.begin(9600);
  49. while (!Serial); // For Yun/Leo/Micro/Zero/...
  50. delay(100);
  51. Serial.println("\n\nAdafruit finger detect test");
  52.  
  53. // set the data rate for the sensor serial port
  54. finger.begin(57600);
  55. delay(5);
  56. if (finger.verifyPassword()) {
  57. Serial.println("Found fingerprint sensor!");
  58. } else {
  59. Serial.println("Did not find fingerprint sensor :(");
  60. while (1) {
  61. delay(1);
  62. }
  63. }
  64.  
  65. Serial.println(F("Reading sensor parameters"));
  66. finger.getParameters();
  67. Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
  68. Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
  69. Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
  70. Serial.print(F("Security level: ")); Serial.println(finger.security_level);
  71. Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
  72. Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
  73. Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
  74.  
  75. finger.getTemplateCount();
  76.  
  77. if (finger.templateCount == 0) {
  78. Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
  79. }
  80. else {
  81. Serial.println("Waiting for valid finger...");
  82. Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
  83. }
  84. }
  85.  
  86. void loop() // run over and over again
  87. {
  88. getFingerprintID();
  89. delay(50); //don't ned to run this at full speed.
  90. }
  91.  
  92. uint8_t getFingerprintID() {
  93. uint8_t p = finger.getImage();
  94. switch (p) {
  95. case FINGERPRINT_OK:
  96. Serial.println("Image taken");
  97. break;
  98. case FINGERPRINT_NOFINGER:
  99. //Serial.println("No finger detected");
  100. return p;
  101. case FINGERPRINT_PACKETRECIEVEERR:
  102. Serial.println("Communication error");
  103. return p;
  104. case FINGERPRINT_IMAGEFAIL:
  105. Serial.println("Imaging error");
  106. return p;
  107. default:
  108. Serial.println("Unknown error");
  109. return p;
  110. }
  111.  
  112. // OK success!
  113.  
  114. p = finger.image2Tz();
  115. switch (p) {
  116. case FINGERPRINT_OK:
  117. Serial.println("Image converted");
  118. break;
  119. case FINGERPRINT_IMAGEMESS:
  120. Serial.println("Image too messy");
  121. return p;
  122. case FINGERPRINT_PACKETRECIEVEERR:
  123. Serial.println("Communication error");
  124. return p;
  125. case FINGERPRINT_FEATUREFAIL:
  126. Serial.println("Could not find fingerprint features");
  127. return p;
  128. case FINGERPRINT_INVALIDIMAGE:
  129. Serial.println("Could not find fingerprint features");
  130. return p;
  131. default:
  132. Serial.println("Unknown error");
  133. return p;
  134. }
  135.  
  136. // OK converted!
  137. p = finger.fingerSearch();
  138. if (p == FINGERPRINT_OK) {
  139. Serial.println("Found a print match!");
  140. fingerNumber = finger.fingerID;
  141. fingerFound();
  142. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  143. Serial.println("Communication error");
  144. return p;
  145. } else if (p == FINGERPRINT_NOTFOUND) {
  146. Serial.println("Did not find a match");
  147. fingerNotFound();
  148. return p;
  149. } else {
  150. //Serial.println("Unknown error");
  151. return p;
  152. }
  153.  
  154. // found a match!
  155. Serial.print("Found ID #"); Serial.print(finger.fingerID);
  156. Serial.print(" with confidence of "); Serial.println(finger.confidence);
  157.  
  158. return finger.fingerID;
  159. }
  160.  
  161. void fingerFound() {
  162. tempO = mlx.readObjectTempC();
  163. lcd.clear();
  164. lcd.setCursor(0, 0);
  165. lcd.print("ID: ");
  166. if (fingerNumber == 1 || fingerNumber == 3 || fingerNumber == 5) {
  167. lcd.print("Vaccinated");
  168. //lcd.print(" ");
  169. lcd.setCursor(0, 3);
  170. if (tempO >= 30 && tempO <= 35) {
  171. lcd.print("Welcome");
  172. }
  173. else {
  174. lcd.print("Sorry ");
  175. }
  176. }
  177. else if (fingerNumber == 2 || fingerNumber == 4 || fingerNumber == 6) {
  178. lcd.print("Not Vaccinated");
  179. //lcd.print(" ");
  180. lcd.setCursor(0, 3);
  181. lcd.print("Sorry ");
  182. }
  183. lcd.setCursor(0, 1);
  184. lcd.print("Hand Temp: ");
  185. lcd.print(tempO);
  186. lcd.write(byte(0));
  187. lcd.setCursor(0, 2);
  188. if (tempO >= 30 && tempO <= 35) {
  189. lcd.print("Temprature: Normal");
  190. //lcd.print(" ");
  191. }
  192. else if (tempO > 35) {
  193. lcd.print("Temprature: HIGH");
  194. //lcd.print(" ");
  195. }
  196. else if (tempO < 30) {
  197. lcd.print("Temprature: LOW");
  198. //lcd.print(" ");
  199. }
  200. digitalWrite(pumpPin, HIGH);
  201. delay(500);
  202. digitalWrite(pumpPin, LOW);
  203. delay(3000);
  204. //lcd.clear();
  205. //lcd.setCursor(0, 0);
  206. //lcd.print("Scanning...");
  207.  
  208. }
  209.  
  210. void fingerNotFound() {
  211. lcd.clear();
  212. lcd.setCursor(0, 0);
  213. lcd.print("ID: Unknown");
  214. lcd.setCursor(0, 1);
  215. lcd.print("Hand Temp: ");
  216. tempO = mlx.readObjectTempC();
  217. lcd.print(tempO);
  218. lcd.write(byte(0));
  219. lcd.setCursor(0, 2);
  220. if (tempO >= 30 && tempO <= 35) {
  221. lcd.print("Temprature: Normal");
  222. //lcd.print(" ");
  223. }
  224. else if (tempO > 35) {
  225. lcd.print("Temprature: HIGH");
  226. //lcd.print(" ");
  227. }
  228. else if (tempO < 30) {
  229. lcd.print("Temprature: LOW");
  230. //lcd.print(" ");
  231. }
  232. lcd.setCursor(0, 3);
  233. lcd.print("Sorry ");
  234. digitalWrite(pumpPin, HIGH);
  235. delay(500);
  236. digitalWrite(pumpPin, LOW);
  237. delay(3000);
  238. //lcd.clear();
  239. //lcd.setCursor(0, 0);
  240. //lcd.print("Scanning...");
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement