Arduino UNO
MLX90614非接觸式紅外線溫度感測器 (Infrared Temperature Sensor)
LCD顯示器
9V 電池及電池扣
按鈕
電源開關
杜邦線
LED燈
電阻
1. 依照著上面的圖把 button, LED, Arduino Uno 接起來
2. 程式解釋
先把Arduino IDE裡原本的zip用程式叫出來
#include <Wire.h>
int Button = 3; <---- 按鈕接在Arduino板上的3
int LED = 2; <---- LED接在Arduino板上的2
pinMode(Button, INPUT); <---- 程式叫Arduino的3接電
pinMode(LED, OUTPUT); <---- 程式叫Arduino的2不要接電
ButtonValue = digitalRead(Button); <---- ButtonValue = button是否按。如果按,ButtonValue 不等於0。如果沒按,ButtonValue 等於0。
1. 下載 https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home 的 NewliquidCrystal_1.3.4.zip(記得解壓縮)
2. 打開 Arduino IDE,選上面的草稿碼->匯入程式庫->加入.ZIP程式庫,選擇剛剛下載的 NewliquidCrystal_1.3.4.檔案
3. Code time!
先把剛剛下載的zip用程式叫出來
#include <LiquidCrystal_I2C.h>
寫下面這個程式,我來一一解釋
LiquidCrystal_I2C lcd(0X27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
lcd.clear(); <---- 把lcd上的字清除
lcd.begin(16, 2);
lcd.setCursor(0, 0); <---- 從第一行第一格開始
lcd.print("Forehead:") <---- 寫Forehead:
lcd.setCursor(0, 1); <---- 從第二行第一格開始
1. 照著上面的圖把 MLX 和 Arduino Uno 接起來
2. 下載 https://github.com/adafruit/Adafruit-MLX90614-Library 的 NewliquidCrystal_1.3.4.zip(記得解壓縮)
3. 打開 Arduino IDE,選上面的草稿碼->匯入程式庫->加入.ZIP程式庫,選擇剛剛下載的 NewliquidCrystal_1.3.4.檔案
4. 程式解釋
#include <Adafruit_MLX90614.h> <---- 先把剛剛下載的zip用程式叫出來
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
mlx.begin(); <---- mlx開始
小解釋:
mlx.readAmbientTempC() <---- mlx °C
mlx.readObjectTempF() <---- mlx °F
Serial.print(mlx.readObjectTempC()); Serial.println("*C");
Serial.print(mlx.readObjectTempF()); Serial.println("*F");
Serial.println(); <---- 寫出上面兩行字。要看到這兩行字到Arduino IDE上的工具 -> 序列檢控視窗
delay(500); <---- 暫停半秒
重要提醒:
一開始插好LCD顯示器 時,LCD顯示器 會顯示如下圖
i2c address:0x5a
如不是0x5a,只要把程式裡的0x5a改成你的LCD 顯示內容即可。
Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_MLX90614.h>
int ButtonValue = 0;
int Button = 3;
int LED = 2;
LiquidCrystal_I2C lcd(0X27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
void setup() {
Serial.begin(9600);
pinMode(Button, INPUT);
pinMode(LED, OUTPUT);
lcd.clear();
lcd.begin(16, 2);
mlx.begin();
}
void loop() {
ButtonValue = digitalRead(Button);
if(ButtonValue != 0){
digitalWrite(LED,HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Forehead:");
lcd.setCursor(0, 1);
lcd.print(mlx.readObjectTempC());
}else{
digitalWrite(LED,LOW);
}
delay(500);
}