COVID-19 Forehead temperature detective gun DIYArduino+GY906
How to make a Forehead gun自製額溫槍
Components and supplies
I2C 16x2 Arduino LCD Display Module
Arduino UNO
Buzzer
MLX90640 Thermal Camera Breakout
Battery Holder, 18650 x 2
Project description
Code
HC-SR04Forehead gun
arduino
1#include <Wire.h> 2#include <LiquidCrystal_I2C.h> 3#include <Adafruit_MLX90614.h> 4#include 5 <SPI.h> 6#include <Adafruit_GFX.h> 7LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 8 5, 6, 7, 3, POSITIVE); 9Adafruit_MLX90614 mlx = Adafruit_MLX90614(); 10const 11 byte trigPinA=12;// 12const byte echoPinA=13; 13int Average=10;// 14int cm6=5.5;// 15int 16 cm5=5.2;// 17int cm4=4.8;// 18int cm3=4.4;// 19int cm2=4.5;// 20int buzzer=4;// 21void 22 setup() 23{ 24 lcd.begin(16,2); 25 pinMode(2,INPUT_PULLUP);//Button1 26 pinMode(3,INPUT_PULLUP);//Button2 27 28 pinMode(buzzer,OUTPUT);// 29 pinMode(trigPinA, OUTPUT); 30 Serial.begin(9600); 31 32 Serial.println("MLX90615 infra-red temperature sensor test"); 33 mlx.begin(); 34 35} 36void loop() 37{ 38 unsigned long A=pingA()/58; 39 int Button1=digitalRead(2);//Button1 40 41 int Button2=digitalRead(3);//Button2 42 if(Button1==LOW)//[Room] 43 { 44 45 Serial.println("Room MODE"); 46 lcd.setCursor(2,1); 47 lcd.print("[ROOM__MODE]"); 48 49 if(Button2==LOW) 50 { 51 lcd.setCursor(2,1); 52 lcd.print("[ROOM__MODE]"); 53 54 tone(buzzer,1000); 55 delay(100); 56 noTone(buzzer); 57 delay(50); 58 59 float Temp = 0; 60 for(int i=0; i<Average; i++) 61 { 62 lcd.clear(); 63 64 lcd.setCursor(2,0); 65 lcd.print("Temp="); 66 Temp += mlx.readObjectTempC(); 67 68 lcd.println(mlx.readObjectTempC(),1); 69 lcd.setCursor(11,0); 70 lcd.print((char) 71 0xDF); 72 lcd.print("C"); 73 Serial.print("Temp: "); 74 75 Serial.print(mlx.readObjectTempC(),1); 76 Serial.println("C"); 77 78 Serial.println(); 79 delay(100); 80 } 81 Temp = Temp/Average; 82 83 for(int i=0;i<3;i++) 84 { 85 tone(buzzer,1000); 86 delay(100); 87 88 noTone(buzzer); 89 delay(50); 90 } 91 noTone(buzzer); 92 lcd.clear(); 93 94 lcd.setCursor(2,0); 95 lcd.print("Temp="); 96 lcd.println(Temp,1); 97 98 lcd.setCursor(11,0); 99 lcd.print((char) 0xDF); 100 lcd.print("C"); 101 102 } 103 if(Button2==HIGH) 104 { 105 } 106 } 107 if(Button1==HIGH) 108 //[Body] 109 { 110 Serial.println("Body MODE"); 111 lcd.setCursor(2,1); 112 113 lcd.print("[Body__MODE]"); 114 Serial.print("HC-SR04="); 115 Serial.print(A); 116 117 Serial.print("cm"); 118 delay(100); 119 if(Button2==LOW) 120 { 121 122 lcd.setCursor(2,1); 123 lcd.print("[Body__MODE]"); 124 tone(buzzer,1000); 125 126 delay(100); 127 noTone(buzzer); 128 delay(50); 129 if(A>=7) 130 { 131 132 lcd.clear(); 133 lcd.setCursor(7,0); 134 lcd.print("OL"); 135 } 136 137 if(A==6) 138 { 139 float Temp = 0; 140 for(int i=0; i<Average; 141 i++) 142 { 143 lcd.clear(); 144 lcd.setCursor(2,0); 145 lcd.print("Temp="); 146 147 Temp += mlx.readObjectTempC(); 148 lcd.println(mlx.readObjectTempC(),1); 149 150 lcd.setCursor(11,0); 151 lcd.print((char) 0xDF); 152 lcd.print("C"); 153 154 Serial.print("Temp: "); 155 Serial.print(mlx.readObjectTempC(),1); 156 157 Serial.println("C"); 158 Serial.println(); 159 delay(100); 160 } 161 162 Temp = Temp/Average; 163 for(int i=0;i<3;i++) 164 { 165 tone(buzzer,1000); 166 167 delay(100); 168 noTone(buzzer); 169 delay(50); 170 } 171 noTone(buzzer); 172 173 lcd.clear(); 174 lcd.setCursor(2,0); 175 lcd.print("Temp="); 176 177 lcd.println(Temp+cm6,1); 178 lcd.setCursor(11,0); 179 lcd.print((char) 180 0xDF); 181 lcd.print("C"); 182 } 183 if(A==5) 184 { 185 186 float Temp = 0; 187 for(int i=0; i<Average; i++) 188 { 189 lcd.clear(); 190 191 lcd.setCursor(2,0); 192 lcd.print("Temp="); 193 Temp += mlx.readObjectTempC(); 194 195 lcd.println(mlx.readObjectTempC(),1); 196 lcd.setCursor(11,0); 197 lcd.print((char) 198 0xDF); 199 lcd.print("C"); 200 Serial.print("Temp: "); 201 202 Serial.print(mlx.readObjectTempC(),1); 203 Serial.println("C"); 204 205 Serial.println(); 206 delay(100); 207 } 208 Temp = Temp/Average; 209 210 for(int i=0;i<3;i++) 211 { 212 tone(buzzer,1000); 213 delay(100); 214 215 noTone(buzzer); 216 delay(50); 217 } 218 noTone(buzzer); 219 lcd.clear(); 220 221 lcd.setCursor(2,0); 222 lcd.print("Temp="); 223 lcd.println(Temp+cm5,1); 224 225 lcd.setCursor(11,0); 226 lcd.print((char) 0xDF); 227 lcd.print("C"); 228 229 } 230 if(A==4) 231 { 232 float Temp = 0; 233 for(int 234 i=0; i<Average; i++) 235 { 236 lcd.clear(); 237 lcd.setCursor(2,0); 238 239 lcd.print("Temp="); 240 Temp += mlx.readObjectTempC(); 241 lcd.println(mlx.readObjectTempC(),1); 242 243 lcd.setCursor(11,0); 244 lcd.print((char) 0xDF); 245 lcd.print("C"); 246 247 Serial.print("Temp: "); 248 Serial.print(mlx.readObjectTempC(),1); 249 250 Serial.println("C"); 251 Serial.println(); 252 delay(100); 253 } 254 255 Temp = Temp/Average; 256 for(int i=0;i<3;i++) 257 { 258 tone(buzzer,1000); 259 260 delay(100); 261 noTone(buzzer); 262 delay(50); 263 } 264 noTone(buzzer); 265 266 lcd.clear(); 267 lcd.setCursor(2,0); 268 lcd.print("Temp="); 269 270 lcd.println(Temp+cm4,1); 271 lcd.setCursor(11,0); 272 lcd.print((char) 273 0xDF); 274 lcd.print("C"); 275 } 276 if(A==3) 277 { 278 279 float Temp = 0; 280 for(int i=0; i<Average; i++) 281 { 282 lcd.clear(); 283 284 lcd.setCursor(2,0); 285 lcd.print("Temp="); 286 Temp += mlx.readObjectTempC(); 287 288 lcd.println(mlx.readObjectTempC(),1); 289 lcd.setCursor(11,0); 290 lcd.print((char) 291 0xDF); 292 lcd.print("C"); 293 Serial.print("Temp: "); 294 295 Serial.print(mlx.readObjectTempC(),1); 296 Serial.println("C"); 297 298 Serial.println(); 299 delay(100); 300 } 301 Temp = Temp/Average; 302 303 for(int i=0;i<3;i++) 304 { 305 tone(buzzer,1000); 306 delay(100); 307 308 noTone(buzzer); 309 delay(50); 310 } 311 noTone(buzzer); 312 lcd.clear(); 313 314 lcd.setCursor(2,0); 315 lcd.print("Temp="); 316 lcd.println(Temp+cm3,1); 317 318 lcd.setCursor(11,0); 319 lcd.print((char) 0xDF); 320 lcd.print("C"); 321 322 } 323 if(A==2) 324 { 325 float Temp = 0; 326 for(int 327 i=0; i<Average; i++) 328 { 329 lcd.clear(); 330 lcd.setCursor(2,0); 331 332 lcd.print("Temp="); 333 Temp += mlx.readObjectTempC(); 334 lcd.println(mlx.readObjectTempC(),1); 335 336 lcd.setCursor(11,0); 337 lcd.print((char) 0xDF); 338 lcd.print("C"); 339 340 Serial.print("Temp: "); 341 Serial.print(mlx.readObjectTempC(),1); 342 343 Serial.println("C"); 344 Serial.println(); 345 delay(100); 346 } 347 348 Temp = Temp/Average; 349 for(int i=0;i<3;i++) 350 { 351 tone(buzzer,1000); 352 353 delay(100); 354 noTone(buzzer); 355 delay(50); 356 } 357 noTone(buzzer); 358 359 lcd.clear(); 360 lcd.setCursor(2,0); 361 lcd.print("Temp="); 362 363 lcd.println(Temp+cm2,1); 364 lcd.setCursor(11,0); 365 lcd.print((char) 366 0xDF); 367 lcd.print("C"); 368 } 369 } 370 } 371} 372unsigned 373 long pingA() 374 { 375 digitalWrite(trigPinA, HIGH); 376 delayMicroseconds(10); 377 378 digitalWrite(trigPinA, LOW); 379 return pulseIn(echoPinA, HIGH); 380 } 381 382 383
HC-SR04Forehead gun
arduino
1#include <Wire.h> 2#include <LiquidCrystal_I2C.h> 3#include <Adafruit_MLX90614.h> 4#include <SPI.h> 5#include <Adafruit_GFX.h> 6LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 7Adafruit_MLX90614 mlx = Adafruit_MLX90614(); 8const byte trigPinA=12;// 9const byte echoPinA=13; 10int Average=10;// 11int cm6=5.5;// 12int cm5=5.2;// 13int cm4=4.8;// 14int cm3=4.4;// 15int cm2=4.5;// 16int buzzer=4;// 17void setup() 18{ 19 lcd.begin(16,2); 20 pinMode(2,INPUT_PULLUP);//Button1 21 pinMode(3,INPUT_PULLUP);//Button2 22 pinMode(buzzer,OUTPUT);// 23 pinMode(trigPinA, OUTPUT); 24 Serial.begin(9600); 25 Serial.println("MLX90615 infra-red temperature sensor test"); 26 mlx.begin(); 27} 28void loop() 29{ 30 unsigned long A=pingA()/58; 31 int Button1=digitalRead(2);//Button1 32 int Button2=digitalRead(3);//Button2 33 if(Button1==LOW)//[Room] 34 { 35 Serial.println("Room MODE"); 36 lcd.setCursor(2,1); 37 lcd.print("[ROOM__MODE]"); 38 if(Button2==LOW) 39 { 40 lcd.setCursor(2,1); 41 lcd.print("[ROOM__MODE]"); 42 tone(buzzer,1000); 43 delay(100); 44 noTone(buzzer); 45 delay(50); 46 float Temp = 0; 47 for(int i=0; i<Average; i++) 48 { 49 lcd.clear(); 50 lcd.setCursor(2,0); 51 lcd.print("Temp="); 52 Temp += mlx.readObjectTempC(); 53 lcd.println(mlx.readObjectTempC(),1); 54 lcd.setCursor(11,0); 55 lcd.print((char) 0xDF); 56 lcd.print("C"); 57 Serial.print("Temp: "); 58 Serial.print(mlx.readObjectTempC(),1); 59 Serial.println("C"); 60 Serial.println(); 61 delay(100); 62 } 63 Temp = Temp/Average; 64 for(int i=0;i<3;i++) 65 { 66 tone(buzzer,1000); 67 delay(100); 68 noTone(buzzer); 69 delay(50); 70 } 71 noTone(buzzer); 72 lcd.clear(); 73 lcd.setCursor(2,0); 74 lcd.print("Temp="); 75 lcd.println(Temp,1); 76 lcd.setCursor(11,0); 77 lcd.print((char) 0xDF); 78 lcd.print("C"); 79 } 80 if(Button2==HIGH) 81 { 82 } 83 } 84 if(Button1==HIGH) //[Body] 85 { 86 Serial.println("Body MODE"); 87 lcd.setCursor(2,1); 88 lcd.print("[Body__MODE]"); 89 Serial.print("HC-SR04="); 90 Serial.print(A); 91 Serial.print("cm"); 92 delay(100); 93 if(Button2==LOW) 94 { 95 lcd.setCursor(2,1); 96 lcd.print("[Body__MODE]"); 97 tone(buzzer,1000); 98 delay(100); 99 noTone(buzzer); 100 delay(50); 101 if(A>=7) 102 { 103 lcd.clear(); 104 lcd.setCursor(7,0); 105 lcd.print("OL"); 106 } 107 if(A==6) 108 { 109 float Temp = 0; 110 for(int i=0; i<Average; i++) 111 { 112 lcd.clear(); 113 lcd.setCursor(2,0); 114 lcd.print("Temp="); 115 Temp += mlx.readObjectTempC(); 116 lcd.println(mlx.readObjectTempC(),1); 117 lcd.setCursor(11,0); 118 lcd.print((char) 0xDF); 119 lcd.print("C"); 120 Serial.print("Temp: "); 121 Serial.print(mlx.readObjectTempC(),1); 122 Serial.println("C"); 123 Serial.println(); 124 delay(100); 125 } 126 Temp = Temp/Average; 127 for(int i=0;i<3;i++) 128 { 129 tone(buzzer,1000); 130 delay(100); 131 noTone(buzzer); 132 delay(50); 133 } 134 noTone(buzzer); 135 lcd.clear(); 136 lcd.setCursor(2,0); 137 lcd.print("Temp="); 138 lcd.println(Temp+cm6,1); 139 lcd.setCursor(11,0); 140 lcd.print((char) 0xDF); 141 lcd.print("C"); 142 } 143 if(A==5) 144 { 145 float Temp = 0; 146 for(int i=0; i<Average; i++) 147 { 148 lcd.clear(); 149 lcd.setCursor(2,0); 150 lcd.print("Temp="); 151 Temp += mlx.readObjectTempC(); 152 lcd.println(mlx.readObjectTempC(),1); 153 lcd.setCursor(11,0); 154 lcd.print((char) 0xDF); 155 lcd.print("C"); 156 Serial.print("Temp: "); 157 Serial.print(mlx.readObjectTempC(),1); 158 Serial.println("C"); 159 Serial.println(); 160 delay(100); 161 } 162 Temp = Temp/Average; 163 for(int i=0;i<3;i++) 164 { 165 tone(buzzer,1000); 166 delay(100); 167 noTone(buzzer); 168 delay(50); 169 } 170 noTone(buzzer); 171 lcd.clear(); 172 lcd.setCursor(2,0); 173 lcd.print("Temp="); 174 lcd.println(Temp+cm5,1); 175 lcd.setCursor(11,0); 176 lcd.print((char) 0xDF); 177 lcd.print("C"); 178 } 179 if(A==4) 180 { 181 float Temp = 0; 182 for(int i=0; i<Average; i++) 183 { 184 lcd.clear(); 185 lcd.setCursor(2,0); 186 lcd.print("Temp="); 187 Temp += mlx.readObjectTempC(); 188 lcd.println(mlx.readObjectTempC(),1); 189 lcd.setCursor(11,0); 190 lcd.print((char) 0xDF); 191 lcd.print("C"); 192 Serial.print("Temp: "); 193 Serial.print(mlx.readObjectTempC(),1); 194 Serial.println("C"); 195 Serial.println(); 196 delay(100); 197 } 198 Temp = Temp/Average; 199 for(int i=0;i<3;i++) 200 { 201 tone(buzzer,1000); 202 delay(100); 203 noTone(buzzer); 204 delay(50); 205 } 206 noTone(buzzer); 207 lcd.clear(); 208 lcd.setCursor(2,0); 209 lcd.print("Temp="); 210 lcd.println(Temp+cm4,1); 211 lcd.setCursor(11,0); 212 lcd.print((char) 0xDF); 213 lcd.print("C"); 214 } 215 if(A==3) 216 { 217 float Temp = 0; 218 for(int i=0; i<Average; i++) 219 { 220 lcd.clear(); 221 lcd.setCursor(2,0); 222 lcd.print("Temp="); 223 Temp += mlx.readObjectTempC(); 224 lcd.println(mlx.readObjectTempC(),1); 225 lcd.setCursor(11,0); 226 lcd.print((char) 0xDF); 227 lcd.print("C"); 228 Serial.print("Temp: "); 229 Serial.print(mlx.readObjectTempC(),1); 230 Serial.println("C"); 231 Serial.println(); 232 delay(100); 233 } 234 Temp = Temp/Average; 235 for(int i=0;i<3;i++) 236 { 237 tone(buzzer,1000); 238 delay(100); 239 noTone(buzzer); 240 delay(50); 241 } 242 noTone(buzzer); 243 lcd.clear(); 244 lcd.setCursor(2,0); 245 lcd.print("Temp="); 246 lcd.println(Temp+cm3,1); 247 lcd.setCursor(11,0); 248 lcd.print((char) 0xDF); 249 lcd.print("C"); 250 } 251 if(A==2) 252 { 253 float Temp = 0; 254 for(int i=0; i<Average; i++) 255 { 256 lcd.clear(); 257 lcd.setCursor(2,0); 258 lcd.print("Temp="); 259 Temp += mlx.readObjectTempC(); 260 lcd.println(mlx.readObjectTempC(),1); 261 lcd.setCursor(11,0); 262 lcd.print((char) 0xDF); 263 lcd.print("C"); 264 Serial.print("Temp: "); 265 Serial.print(mlx.readObjectTempC(),1); 266 Serial.println("C"); 267 Serial.println(); 268 delay(100); 269 } 270 Temp = Temp/Average; 271 for(int i=0;i<3;i++) 272 { 273 tone(buzzer,1000); 274 delay(100); 275 noTone(buzzer); 276 delay(50); 277 } 278 noTone(buzzer); 279 lcd.clear(); 280 lcd.setCursor(2,0); 281 lcd.print("Temp="); 282 lcd.println(Temp+cm2,1); 283 lcd.setCursor(11,0); 284 lcd.print((char) 0xDF); 285 lcd.print("C"); 286 } 287 } 288 } 289} 290unsigned long pingA() 291 { 292 digitalWrite(trigPinA, HIGH); 293 delayMicroseconds(10); 294 digitalWrite(trigPinA, LOW); 295 return pulseIn(echoPinA, HIGH); 296 } 297 298
Downloadable files
untitled
untitled

untitled
untitled

untitled
untitled

Arduino uno
Arduino uno
untitled
untitled

untitled
untitled

untitled
untitled

LCD I2C
LCD I2C

untitled
untitled

untitled
untitled

untitled
untitled

untitled
untitled

93440570_690345341796830_9171491357359865856_n_BrdSnz0YrY.jpg
93440570_690345341796830_9171491357359865856_n_BrdSnz0YrY.jpg

LCD I2C
LCD I2C

untitled
untitled

untitled
untitled

untitled
untitled

93440570_690345341796830_9171491357359865856_n_BrdSnz0YrY.jpg
93440570_690345341796830_9171491357359865856_n_BrdSnz0YrY.jpg

untitled
untitled

untitled
untitled

untitled
untitled

untitled
untitled

untitled
untitled

untitled
untitled

Arduino uno
Arduino uno
img_3821_AAt14LqLe6.JPG
img_3821_AAt14LqLe6.JPG
untitled
untitled

img_3821_AAt14LqLe6.JPG
img_3821_AAt14LqLe6.JPG
Documentation
forehard_gun_cover_w25aZSnwRO.stl
forehard_gun_cover_w25aZSnwRO.stl
forehard_gun_body_XKQMPk443f.stl
forehard_gun_body_XKQMPk443f.stl
forehard_gun_body-1_cfhZ4dC6X5.stl
forehard_gun_body-1_cfhZ4dC6X5.stl
forehard_gun_body_XKQMPk443f.stl
forehard_gun_body_XKQMPk443f.stl
forehard_gun_cover_w25aZSnwRO.stl
forehard_gun_cover_w25aZSnwRO.stl
forehard_gun_body-2_pygYGPc282.stl
forehard_gun_body-2_pygYGPc282.stl
forehard_gun_body-1_cfhZ4dC6X5.stl
forehard_gun_body-1_cfhZ4dC6X5.stl
Comments
Only logged in users can leave comments