写一个esp8266读18b20的程序,不使用任何库
时间: 2024-05-04 14:15:38 浏览: 160
以下是一个ESP8266读取18B20温度传感器的示例程序,不使用任何库:
```
#include <Arduino.h>
const int DS18B20_PIN = 2; // 温度传感器连接的GPIO引脚
void setup() {
Serial.begin(9600);
pinMode(DS18B20_PIN, INPUT_PULLUP); // 将引脚设置为上拉输入模式
}
void loop() {
// 发送读取温度的命令
digitalWrite(DS18B20_PIN, LOW); // 拉低引脚
delayMicroseconds(480); // 持续480微秒
digitalWrite(DS18B20_PIN, HIGH); // 释放引脚
delayMicroseconds(40); // 等待40微秒
// 读取温度传感器的响应
pinMode(DS18B20_PIN, INPUT_PULLUP); // 将引脚设置为上拉输入模式
int response = digitalRead(DS18B20_PIN);
delayMicroseconds(80);
if (!response) {
// 温度传感器有响应
pinMode(DS18B20_PIN, OUTPUT); // 将引脚设置为输出模式
// 读取温度值
shiftOut(DS18B20_PIN, 0x33); // 发送读取命令
byte data[9];
for (int i = 0; i < 9; i++) {
data[i] = shiftIn(DS18B20_PIN); // 读取数据
}
// 计算温度值
int16_t raw = (data[1] << 8) | data[0];
float temp = (float)raw / 16.0;
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" °C");
} else {
// 温度传感器没有响应
Serial.println("No response from DS18B20");
}
delay(1000);
}
```
阅读全文