สวัสดีค่ะ ตอนนี้ทำโปรเจ็ค Infrared thermometer กับarduino pro mini ,oled อยากจะให้มีฟังชั่นการบันทึกค่าก่อนหน้าสัก3ค่า แล้วกดปุ่มbutton switch จะแสดงค่าที่บันทึกไว้3ค่าค่ะ อยากจะให้ช่วยเขียนโค้ดให้ดูหน่อยอะค่ะ ถามอาจารย์มาเขาบอกให้ใช้arrayเก็บค่า แต่ไม่เข้าใจ
/***********************************
Arduino Contactless thermometer
MLX90614 I2C connection
OLED 4-wire SPI connection
Dated: 7-6-2019
Code by: Aswint Raj
**********************************/
#include <Wire.h>
#include <SparkFunMLX90614.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// If using software SPI (the default case):
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
IRTherm therm;
void setup()
{
Serial.begin(9600);
therm.begin();
therm.setUnit(TEMP_C);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.setRotation(2);
}
String temperature;
char runner;
void loop()
{
if (therm.read()) // On success, read() will return 1, on fail 0.
{
temperature = String(therm.object(), 1);
Serial.print("Object: ");
Serial.print(temperature); Serial.println("C");
display.clearDisplay();
runner++;
delay(5);
}
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(display.width()/4,display.height()/12);
if (therm.object()>=25)
{
display.setCursor(display.width()/4,display.height()/12);
display.println(temperature);
display.drawLine(display.width()/runner,display.height() - display.height()/2.5, display.width()/runner+1, display.height() - display.height()/2.5, WHITE);
display.setCursor(0,display.height()-display.height()/4);
display.setTextSize(1);
display.println(" Fever");
display.setCursor(display.width()- display.width()/4,display.height()/12);
display.println("deg C");
display.display();
}
else{
display.setCursor(display.width()/4,display.height()/12);
display.println(temperature);
display.drawLine(display.width()/runner,display.height() - display.height()/2.5, display.width()/runner+1, display.height() - display.height()/2.5, WHITE);
display.setCursor(0,display.height()-display.height()/4);
display.setTextSize(1);
display.println(" Normal");
display.setCursor(display.width()- display.width()/4,display.height()/12);
display.println("deg C");
display.display();
}
if (runner>20)
runner=0;
}
ทดสอบโปรแกรมง่าย ๆ ก่อน เขียนฟิกค่าไว้ใน array แล้วทดลองเก็บค่า ดึงจากตัวแปรมาแสดง
คอนเซฟตัวอย่างโคดดังนี้ครับ
double val[3];
void setup() {
}
void loop() {
for(int i=0;i<3;i++){
val[i] = readTemp(); // เก็บค่าอุณหภูมิในตัวแปรก่อนหน้า 3 ค่าล่าสุด
delay(1000); // หน่วงเวลา 1 วินาทีแล้วเก็บค่าใหม่
}
}
// ฟังก์ชั่นอ่านค่าอุณหภูมิ
double readTemp(){
return temp;
}