白羊羊罐头AS 发表于 2018-6-21 22:23:08

程序频繁出现bug!急!明天就要用!

本帖最后由 白羊羊罐头AS 于 2018-6-22 01:38 编辑

我在测试一个程序的时候,经常出现一个问题:串口发送打开继电器的数据之后,继电器先是打开,然后串口有好一阵子没传回数据;再发送关闭的数据后继电器就不动了,串口也有好一阵子没反应。这是代码:

#include <SoftI2CMaster.h>
#include <LiquidCrystal_SoftI2C.h>
#include <dht11.h>

volatile int alarm;

LiquidCrystal_SoftI2C mylcd(0x3F,16,2,A5,A4);
dht11 myDHT_2;
int dht_2_gettemperature() {
int chk = myDHT_2.read(2);
int value = myDHT_2.temperature;
return value;
}

int dht_2_gethumidity() {
int chk = myDHT_2.read(2);
int value = myDHT_2.humidity;
return value;
}

void setup(){
Serial.begin(38400);
alarm = 0;
pinMode(4, INPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
pinMode(8, OUTPUT);
digitalWrite(8,HIGH);
pinMode(9, OUTPUT);
digitalWrite(9,HIGH);
pinMode(10, OUTPUT);
digitalWrite(10,HIGH);
pinMode(11, OUTPUT);
digitalWrite(11,HIGH);
pinMode(12, OUTPUT);
digitalWrite(12,HIGH);
pinMode(13, OUTPUT);
digitalWrite(13,HIGH);
mylcd.init();
mylcd.backlight();
}

void loop(){
Serial.println(String("Temperature:") + String(dht_2_gettemperature()));
Serial.println(String("Humidity:") + String(dht_2_gethumidity()));
Serial.println(String("Alarm:") + String(alarm));
if (digitalRead(4) == 1 && analogRead(A0) >= 450) {
    alarm = 1;

}
if (alarm == 1) {
    digitalWrite(5,HIGH);

} else {
    digitalWrite(5,LOW);

}
if (Serial.available() > 0) {
    if (Serial.readString() == "OpenSwitch1") {
      digitalWrite(6,LOW);

    }
    if (Serial.readString() == "OpenSwitch2") {
      digitalWrite(7,LOW);

    }
    if (Serial.readString() == "OpenSwitch3") {
      digitalWrite(8,LOW);

    }
    if (Serial.readString() == "OpenSwitch4") {
      digitalWrite(9,LOW);

    }
    if (Serial.readString() == "OpenSwitch5") {
      digitalWrite(10,LOW);

    }
    if (Serial.readString() == "OpenSwitch6") {
      digitalWrite(11,LOW);

    }
    if (Serial.readString() == "OpenSwitch7") {
      digitalWrite(12,LOW);

    }
    if (Serial.readString() == "OpenSwitch8") {
      digitalWrite(13,LOW);

    }
    if (Serial.readString() == "CloseSwitch1") {
      digitalWrite(6,HIGH);

    }
    if (Serial.readString() == "CloseSwitch2") {
      digitalWrite(7,HIGH);

    }
    if (Serial.readString() == "CloseSwitch3") {
      digitalWrite(8,HIGH);

    }
    if (Serial.readString() == "CloseSwitch4") {
      digitalWrite(9,HIGH);

    }
    if (Serial.readString() == "CloseSwitch5") {
      digitalWrite(10,HIGH);

    }
    if (Serial.readString() == "CloseSwitch6") {
      digitalWrite(11,HIGH);

    }
    if (Serial.readString() == "CloseSwitch7") {
      digitalWrite(12,HIGH);

    }
    if (Serial.readString() == "CloseSwitch8") {
      digitalWrite(13,HIGH);

    }
    if (Serial.readString() == "AlarmReset") {
      alarm = 0;

    }

}

mylcd.setCursor(0, 0);
mylcd.print("SmartHome");
mylcd.setCursor(0, 1);
mylcd.print(String(dht_2_gettemperature()) + String("C ")+String(dht_2_gethumidity())+String("%"));



}

这个是整个代码(智能家居),明天就要用!
而且报警部分也无法正常运行!

白羊羊罐头AS 发表于 2018-6-21 22:26:44

使用的库:



白羊羊罐头AS 发表于 2018-6-22 01:39:25

自己改了一下,已经能用了
页: [1]
查看完整版本: 程序频繁出现bug!急!明天就要用!