小白求助-三个温度传感器控制3个风扇-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2838|回复: 8

[未解决] 小白求助-三个温度传感器控制3个风扇

[复制链接]
发表于 2021-3-26 20:26 | 显示全部楼层 |阅读模式
本人小白一枚  白痴问题请谅解

使用三个18B20温度传感器  控制三个电机   现在的问题是只有一组管用(传感器到达设置温度后风扇停止),其他两组风扇一直在转个不停 是不是缺少什么语句
我用的是米思齐码的程序
2345截图20210326202409.png

翻译的代码如下

#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire_A0(A0);
DallasTemperature sensors_A0(&oneWire_A0);
DeviceAddress insideThermometer;
OneWire oneWire_A2(A2);
DallasTemperature sensors_A2(&oneWire_A2);
OneWire oneWire_A3(A3);
DallasTemperature sensors_A3(&oneWire_A3);

float ds18b20_A0_getTemp(int w) {
  sensors_A0.requestTemperatures();
  if(w==0) {
    return sensors_A0.getTempC(insideThermometer);
  }
  else {
    return sensors_A0.getTempF(insideThermometer);
  }
}

float ds18b20_A2_getTemp(int w) {
  sensors_A2.requestTemperatures();
  if(w==0) {
    return sensors_A2.getTempC(insideThermometer);
  }
  else {
    return sensors_A2.getTempF(insideThermometer);
  }
}

float ds18b20_A3_getTemp(int w) {
  sensors_A3.requestTemperatures();
  if(w==0) {
    return sensors_A3.getTempC(insideThermometer);
  }
  else {
    return sensors_A3.getTempF(insideThermometer);
  }
}

void setup(){
  sensors_A0.getAddress(insideThermometer, 0);
  sensors_A0.setResolution(insideThermometer, 9);
  pinMode(8, OUTPUT);
  sensors_A2.getAddress(insideThermometer, 0);
  sensors_A2.setResolution(insideThermometer, 9);
  sensors_A3.getAddress(insideThermometer, 0);
  sensors_A3.setResolution(insideThermometer, 9);
  pinMode(6, OUTPUT);
}

void loop(){
  if (ds18b20_A0_getTemp(0) < 26) {
    digitalWrite(8,HIGH);

  } else {
    digitalWrite(8,LOW);

  }
  if (ds18b20_A2_getTemp(0) < 26) {
    pinMode(A5, OUTPUT);
    digitalWrite(A5,HIGH);

  } else {
    pinMode(A5, OUTPUT);
    digitalWrite(A5,LOW);

  }
  if (ds18b20_A3_getTemp(0) < 26) {
    digitalWrite(6,HIGH);

  } else {
    digitalWrite(6,LOW);

  }

}


发表于 2021-3-26 22:35 | 显示全部楼层
本帖最后由 XlinliY.Zhang 于 2021-3-26 22:36 编辑

串口打印温度,然后看串口输出
 楼主| 发表于 2021-3-26 22:44 | 显示全部楼层
XlinliY.Zhang 发表于 2021-3-26 22:35
串口打印温度,然后看串口输出

温度没问题  大于26度电机停   小于26度电机转
发表于 2021-3-27 00:03 | 显示全部楼层
本帖最后由 topdog 于 2021-3-28 18:25 编辑

OneWare总线,意思就是一条数据线就可以工作,而且支持多个传感器,看下示例Multiple。
 楼主| 发表于 2021-3-27 20:46 | 显示全部楼层
topdog 发表于 2021-3-27 00:03
程序没有问题,需要看一下18B20的输出正常吗。根据你的程序,冬天环境温度都低于26摄氏度,所以两个风扇一 ...

温度没问题  每一组单独试都没问题   三组同时使用 就不受控制了
 楼主| 发表于 2021-3-28 16:41 | 显示全部楼层
congyeyoumin 发表于 2021-3-26 22:44
温度没问题  大于26度电机停   小于26度电机转

找到问题了  之前是单独打印传感器温度都正常,今天三个传感器同时打印只有一个温度是正常的,其他都是-127 ℃,这是怎么回事呀
 楼主| 发表于 2021-3-28 16:42 | 显示全部楼层
XlinliY.Zhang 发表于 2021-3-26 22:35
串口打印温度,然后看串口输出

找到问题了  之前是单独打印传感器温度都正常,今天三个传感器同时打印只有一个温度是正常的,其他都是-127 ℃,这是怎么回事呀
 楼主| 发表于 2021-3-28 17:06 | 显示全部楼层

找到问题了  之前是单独打印传感器温度都正常,今天三个传感器同时打印只有一个温度是正常的,其他都是-127 ℃,这是怎么回事呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 10:49 , Processed in 0.078035 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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