/*
* MLX90614 Infrared Temperature Sensor and SSD1306 Oled display Module with Arduino
* Non-Contact Thermometer
*/
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_MLX90614.h>
#include "QuickStats.h"
int numreadings = 60;
float readings[60];
float n;
// For the SSD1306 I2C supported Oled Display Module
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
double temp_amb;
double temp_obj;
void setup()
{
Serial.begin(9600);
mlx.begin(); //Initialize MLX90614
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
Serial.println("MLX90614 Infrared Temperature and Oled display with Arduino");
display.clearDisplay();
display.setCursor(25,15);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("Temp Monitor");
display.setCursor(25,35);
display.setTextSize(1);
display.print("For g1");
display.display();
delay(5000);
}
void loop()
{
for (int i = 0; i <= 59; i++)
{
readings[i] = i;
}
QuickStats stats;//QuickStatsを初期化
//Serial.print("Median:");
//Serial.println(stats.median(readings, numreadings));//中央値を表示
temp_amb = mlx.readAmbientTempC();
temp_obj = mlx.readObjectTempC()+0.8;
display.clearDisplay();
display.setCursor(5,10);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("Temp:");
display.setCursor(60,10);//25,30
display.setTextSize(2);//2
display.print(temp_obj);
display.print((char)247);
display.print("C");
display.setCursor(5,20);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("(Real)");
display.drawLine(2,30,128,30, WHITE);
display.setCursor(5,40);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("Temp:");
display.setCursor(60,40);//25,30
display.setTextSize(2);//2
Serial.println(stats.median(readings, numreadings));//中央値を表示
//display.print(temp_ave);
display.print((char)247);
display.print("C");
display.setCursor(0,50);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("(Median)");
display.display();
delay(1000);
}