数字温度计
材料清单
Arduino Due 开发板
Adafruit MAX31855 接口板
Adafruit 公司的K型热电偶线
#include <SPI.h>
const int slaveSelectPin = 10;
void setup()
{
Serial.begin(9600);
// 在10引脚上初始化设备的总线
SPI.begin(slaveSelectPin);
}
void loop()
{
// 读取4个字节
byte data1 = SPI.transfer(slaveSelectPin, 0, SPI_CONTINUE);
byte data2 = SPI.transfer(slaveSelectPin, 0, SPI_CONTINUE);
byte data3 = SPI.transfer(slaveSelectPin, 0, SPI_CONTINUE);
byte data4 = SPI.transfer(slaveSelectPin, 0, SPI_LAST); // Release the slave after the transfer
// 创建两个16位变量
word temp1 = word(data1, data2);
word temp2 = word(data3, data4);
// 读数是否为负数
bool neg = false;
if (temp1 & 0x8000)
{
neg = true;
}
// MAX31855 是否报告错误
if (temp1 & 0x1)
{
Serial.println("Thermocouple error!");
if (temp2 & 0x1)
Serial.println("Open circuit");
if (temp2 & 0x2)
Serial.println("VCC Short");
if (temp2 & 0x4)
Serial.println("GND short");
}
// 只保留我们感兴趣的位
temp1 &= 0x7FFC;
// 移动数据
temp1 >>= 2;
// 创建一个celsius变量,热电偶温度的值
double celsius = temp1;
// 热电偶返回0.25℃
celsius *= 0.25;
if (neg == true)
celsius *= -1;
//现在打印出数据
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println();
// 休息两秒
delay(2000);
}