极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16643|回复: 5

《求助》 关于电机的一个问题

[复制链接]
发表于 2014-11-14 21:56:08 | 显示全部楼层 |阅读模式
我在做温湿度上下限实验,在湿度调节上软件有点问题,这是程序

#include <dht11.h>
dht11 DHT11;
int IN1=4;
int IN2=5;
int buzzer=8;
int i,q;
float temperature = 0;  //设置temperature为浮点变量  
#define DHT11PIN 3 //DHT11 PIN 3 连接UNO 3

void setup()
{
   pinMode(IN1,OUTPUT);
   pinMode(IN2,OUTPUT);
   digitalWrite(IN1,HIGH);
   digitalWrite(IN2,HIGH);
   pinMode(buzzer,OUTPUT);
  Serial.begin(9600);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
}

void loop()
{
  Serial.println("\n");
  int chk = DHT11.read(DHT11PIN);
  Serial.print("Read sensor:OK ");
  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);
  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature-2, 2);
  if(DHT11.humidity<60.00)   
  {
    for(i=0;i<80;i++)//辒出一个频率的声音
    {
      digitalWrite(buzzer,HIGH);//发声音     
      delay(15);//延时1ms      
      digitalWrite(buzzer,LOW);//不发声音     
      delay(1);//延时ms   
    }
  }
else if(60.00<DHT11.humidity<80.00)
{   
   digitalWrite(IN1,LOW);
   digitalWrite(IN2,LOW);      
}  
else
{
   digitalWrite(IN1,HIGH);
   digitalWrite(IN2,LOW);
}
}

按这个程序下载后当湿度DHT11.humidity>80.00后电机没有转动,也没有声音。
但是我又发现了一个现象,当我把elseif这段程序去掉后,电机就正常转动了
#include <dht11.h>
dht11 DHT11;
int IN1=4;
int IN2=5;
int buzzer=8;
int i,q;
float temperature = 0;  //设置temperature为浮点变量  
#define DHT11PIN 3 //DHT11 PIN 3 连接UNO 3

void setup()
{
   pinMode(IN1,OUTPUT);
   pinMode(IN2,OUTPUT);
   digitalWrite(IN1,HIGH);
   digitalWrite(IN2,HIGH);
   pinMode(buzzer,OUTPUT);
  Serial.begin(9600);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
}

void loop()
{
  Serial.println("\n");
  int chk = DHT11.read(DHT11PIN);
  Serial.print("Read sensor:OK ");
  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);
  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature-2, 2);
  if(DHT11.humidity<60.00)   
  {
    for(i=0;i<80;i++)//辒出一个频率的声音
    {
      digitalWrite(buzzer,HIGH);//发声音     
      delay(15);//延时1ms      
      digitalWrite(buzzer,LOW);//不发声音     
      delay(1);//延时ms   
    }
  }
else
{
   digitalWrite(IN1,HIGH);
   digitalWrite(IN2,LOW);
}
}
这是为什么? arduino不满足这样的条件句?但我其他实验用可以啊!


求解
回复

使用道具 举报

发表于 2014-11-14 23:33:14 来自手机 | 显示全部楼层
else if 要分开写?
else
{if
  {}
}
回复 支持 反对

使用道具 举报

发表于 2014-11-15 01:06:13 | 显示全部楼层
yenan1001 发表于 2014-11-14 23:33
else if 要分开写?
else
{if

你是在發問, 還是在在說明?

else if {} 是正確的語法.
else { if {} } 可是沒錯, 但是多此一舉的語法.
回复 支持 反对

使用道具 举报

发表于 2014-11-15 01:20:30 | 显示全部楼层
  1. else if(60.00<DHT11.humidity<80.00)
复制代码


這個不等式, 應該怎樣理解?

連續的比較, 應該會成是  (a < b) < c 吧.
而 (a < b) = 1 if (a < b), 0 if (a >= b).

換句話說, 你的比較式永遠也是 成立的.

回复 支持 反对

使用道具 举报

发表于 2014-11-15 07:45:08 | 显示全部楼层
不知道arduino的语法是怎样的,但我感觉这种连续的不等式应该写成
DHT11.humidity>60.00 and DHT11.humidity<80.00
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-15 15:43:43 | 显示全部楼层
本帖最后由 初夏的风 于 2014-11-15 15:51 编辑

{:soso_e179:}
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 20:48 , Processed in 0.035126 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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