一、打开arduino添加Adafruit_MLX90614.h库,使用库中给出的示例进行修改
二、通过前一个程序添加示例中的某些初始化程序即可
三、完整代码:
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_MLX90614.h>
#include "U8glib.h"
#define ONE_WIRE_BUS 2
#define button1 13 //触摸按键接口定义
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
uint8_t openState = 0;
uint8_t c = 0;
float TempC = 0;
static unsigned char deng[] U8G_PROGMEM = {0x00,0x00,0x7E,0x3E,0x40,0x22,0x40,0x12,0x42,0x12,0x24,0x0A,0x28,0x12,0x10,0x12,
0x10,0x22,0x28,0x22,0x28,0x22,0x44,0x16,0x42,0x0A,0x01,0x02,0x00,0x02,0x00,0x02,/*"邓",0*/};
static unsigned char zhao[] U8G_PROGMEM = {0x00,0x00,0xBE,0x3F,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x29,0xBE,0x10,0x22,0x3F,
0x22,0x21,0x22,0x21,0x22,0x21,0x3E,0x3F,0x00,0x00,0x12,0x11,0x22,0x22,0x21,0x22,/*"照",1*/};
static unsigned char quan[] U8G_PROGMEM = {0x08,0x00,0xC8,0x3F,0x88,0x20,0x88,0x20,0xBF,0x20,0x08,0x11,0x0C,0x11,0x1C,0x11,
0x2A,0x0A,0x2A,0x0A,0x09,0x04,0x08,0x04,0x08,0x0A,0x08,0x11,0x88,0x20,0x68,0x40,/*"权",2*/};
void button_State()
{
//A
if(digitalRead(button1)){ //检测按键是否按下
delay(20); //延时去抖动
if(digitalRead(button1)){//判断长短键
openState++;
}
while(digitalRead(button1));
}
}
void draw0(void) {
u8g.drawXBMP( 0, 0, 16, 16, deng);
u8g.drawXBMP( 16, 0, 16, 16, zhao);
u8g.drawXBMP( 32, 0, 16, 16, quan);
u8g.setFont(u8g_font_unifont);
// u8g.drawStr( 0, 45, "DengZhaoquan:");
// u8g.drawStr( 0, 12, "190306238");
u8g.setPrintPos(0,45);
u8g.print("Ambient= ");
u8g.print(mlx.readAmbientTempC());
u8g.setPrintPos(0,60);
u8g.print("Object = ");
u8g.print(mlx.readObjectTempC());
sensors.requestTemperatures();
TempC = sensors.getTempCByIndex(0);
u8g.setPrintPos(0,30);
u8g.print("DS18B20:");
u8g.print(TempC);
u8g.print(" C");
}
void draw1(void) {
// u8g.drawXBMP( 0, 16, 16, 16, deng);
// u8g.drawXBMP( 16, 16, 16, 16, zhao);
// u8g.drawXBMP( 32, 16, 16, 16, quan);
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 0, 45, "Numb:");
u8g.setPrintPos(42,45);
u8g.print(c++);
}
void draw2(void) {
// u8g.drawXBMP( 0, 0, 128, 64, bmp);
// u8g.drawXBMP( 16, 16, 16, 16, zhao);
// u8g.drawXBMP( 32, 16, 16, 16, quan);
u8g.setFont(u8g_font_unifont);
// u8g.drawStr( 0, 45, "190306238:");
u8g.setPrintPos(42,45);
// u8g.print(c++);
}
void mode_0()
{
u8g.firstPage();
do {
draw0();
} while( u8g.nextPage() );
}
void mode_1()
{
u8g.firstPage();
do {
draw1();
} while( u8g.nextPage() );
}
void mode_2()
{
u8g.firstPage();
do {
draw2();
} while( u8g.nextPage() );
}
void setup() {
Serial.begin(115200);
pinMode(button1, INPUT);
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
Serial.println("Adafruit MLX90614 test");
sensors.begin();
mlx.begin();
}
void loop() {
Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC());
Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
// Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF());
// Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");
Serial.println();
delay(500);
button_State();
switch (openState)
{
case 0:
// openState = 0;
mode_0(); //
break;
case 1:
mode_1(); //
break;
case 2:
mode_2(); //
break;
case 3:
// mode_3(); //
break;
default:
break;
}
if(openState == 3) openState = 0;
Serial.println(openState);
}