找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5|回复: 0
收起左侧

MicroPython写ESP32测温代码

[复制链接]
ID:1162851 发表于 2026-1-27 20:16 | 显示全部楼层 |阅读模式
用普中ESP32开发板,板载DS18B20温度传感器、4位数码管,只有三根外接线,如图:
  1. from machine import Pin
  2. import time
  3. import tm1637
  4. import onewire
  5. import ds18x20

  6. # 定义数码管控制对象
  7. smg = tm1637.TM1637(clk=Pin(16), dio=Pin(17))

  8. # DS18B20数据线连接到GPIO15
  9. ds_pin = Pin(15)
  10. ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))

  11. # 扫描DS18B20设备
  12. roms = ds_sensor.scan()
  13. print('发现DS18B20设备:', roms)

  14. def display_temperature(temp):
  15.     """显示整数温度,格式为 ±XXC 或 ±XC,共3位"""
  16.     temp_int = round(temp)  # 四舍五入到整数
  17.    
  18.     if -99 <= temp_int <= 999:
  19.         # 构造显示字符串
  20.         temp_str = str(temp_int) + 'C'

  21.         if len(temp_str) < 4:  # 例如: "5C"
  22.             display_str = ' ' + temp_str

  23.         elif len(temp_str) == 4:  # 例如: "-15C"
  24.             display_str = temp_str
  25.             smg.show(display_str)
  26.     else:
  27.         smg.show(' Err')  # 错误信息也保持4位

  28. # 程序入口
  29. if __name__ == "__main__":
  30.     if not roms:
  31.         print("未找到DS18B20设备")
  32.         smg.show('  NO')  # 保持4位显示
  33.     else:
  34.         while True:
  35.             try:
  36.                 # 启动温度转换
  37.                 ds_sensor.convert_temp()
  38.                 # 等待转换完成
  39.                 time.sleep_ms(750)
  40.                
  41.                 # 读取温度
  42.                 for rom in roms:
  43.                     temp = ds_sensor.read_temp(rom)
  44.                     print(f'原始温度: {temp}°C')
  45.                     
  46.                     # 在数码管上显示温度
  47.                     display_temperature(temp)
  48.                     
  49.             except Exception as e:
  50.                 print(f'读取温度失败: {e}')
  51.                 smg.show(' Err')  # 保持4位显示
  52.             
  53.             # 延时2秒后再次读取
  54.             time.sleep(2)
复制代码
Shell栏显示如下: 原始温度: 10.4375°C原始温度: 10.4375°C
原始温度: 10.4375°C
原始温度: 10.375°C
原始温度: 10.4375°C
原始温度: 10.375°C

533.jpg

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表