// จำลองการทำงานใช้แทนตัววัดอุณหภูมิแบบไม่สัมผัส
// สิ่งประดิษฐ์คัดกลองผู้ป่วยผ่านประตู
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 2, 16);
Servo servo1;
#define DHTPIN 2
#define DHTTYPE DHT22
#define SPEAKER_PIN 8
DHT dht(DHTPIN, DHTTYPE);
unsigned int p1 = 0;
unsigned int f1 = 0;
int pos = 0; // สำหรับการกำหนดตำแหน่งการหมุนของ servo
void d_active(void);
void show_lcd(void);
void led_active(void);
void setup() {
pinMode(SPEAKER_PIN, OUTPUT);
pinMode(3,INPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
Serial.begin(9600);
Serial.println("program start << ");
dht.begin();
servo1.attach(9);
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("start-program<");
delay(2000);
lcd.clear();
}
void loop() {
show_lcd();
float t = dht.readTemperature();
if(digitalRead(3)==HIGH){
Serial.println("this line is button action");
if(t>=29&&t<=38){
// เมื่ออยู่ในช่วงข้อมูลที่กำหนดสั่งให้มีการทำงานด้วยการเปิดประตู
p1++;
tone(8, 502, 400);
d_active();
}else{
f1++;
Serial.println("temp mistake << ");
led_active();
}
}
delay(50);
}
void d_active(void){
Serial.println("this line is door_active function");
digitalWrite(5, HIGH);
for (pos = 90; pos <=180 ; pos += 1) {
servo1.write(pos);
delay(15);
}
for (pos = 180; pos >= 90; pos -= 1) {
servo1.write(pos);
delay(15);
}
digitalWrite(5,LOW);
}
void led_active(void){
for(int a=0;a<3;a++){
digitalWrite(4,HIGH);
delay(300);
digitalWrite(4,LOW);
delay(200);
tone(8, 262, 250);
}
}
void show_lcd(void){
lcd.setCursor(1,0);
lcd.print("Passed: ");
lcd.setCursor(8,0);
lcd.print(p1);
lcd.setCursor(1,1);
lcd.print("Failed: ");
lcd.setCursor(8,1);
lcd.print(f1);
}
//โครงงานสิ่งประดิษฐ์ระบบคัดกรองทางเข้าออกด้วยอุณหภูมิ
//พร้อมการแสดงผลผ่านจอ lcd1602 สำหรับการนับจำนวนผู้ผ่านเข้าประตูและไม่ผ่าน