这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » Arduino+AS6221-EK实现I2C温度串口打印

共1条 1/1 1 跳转至

Arduino+AS6221-EK实现I2C温度串口打印

工程师
2025-04-08 07:11:25     打赏

image.png

//void setup() {

//  // put your setup code here, to run once:

//

//}

//

//void loop() {

//  // put your main code here, to run repeatedly:

//

//}


//void setup() {

//  pinMode(LED_BUILTIN, OUTPUT);  // 初始化 LED 引脚为输出模式

//}

//

//void loop() {

//  digitalWrite(LED_BUILTIN, HIGH);  // 点亮 LED

//  delay(1000);                      

//  digitalWrite(LED_BUILTIN, LOW);   // 熄灭 LED

//  delay(1000);                      

//}


#include <Wire.h>

#define AS6221_ADDR 0x48  // 默认 I²C 地址


void setup() {

  Serial.begin(9600);

  Wire.begin();// 初始化I²C总线

}


void loop() {

  float temp = readAS6221();

  Serial.print("Temperature: ");

  Serial.print(temp, 2);  // 保留两位小数

//  const char* str = "'temp','*C'"; // 十六进制转义

//  uint8_t data[] = ('temp',0xC2,0xB0,'C');// 

  Serial.println("  `C");

//  Serial.write(data, sizeof(data)); // Arduino

  delay(1000);

}


float readAS6221() {

  Wire.beginTransmission(AS6221_ADDR);

  Wire.write(0x00);  // 温度数据寄存器地址(高字节)

  Wire.endTransmission();

  

  Wire.requestFrom(AS6221_ADDR, 2);

  if (Wire.available() >= 2) {

    uint8_t msb = Wire.read();

    uint8_t lsb = Wire.read();

    int16_t raw = (msb << 8) | lsb;

    return (raw >> 2) * 0.0078125/2-5.77; //0.03125;  // 转换公式(见数据手册)

  }

  return -999;  // 错误值

}



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]