数字温度计

数字温度计

材料清单

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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值