首页 > 解决方案 > 如何设置 Arduino 重置功能以仅读取 DHT11 传感器

问题描述

在玩 DHT11 传感器时,我意识到 Arduino 在硬重置后发现传感器断开连接。我的问题是如何在保持变量不变的情况下每分钟重置 Arduino,因为我有很多变量取决于先前的状态。例如,当 Arduino 检测到传感器断开连接时,我希望变量 (i) 变为等于 2。这就是我尝试过的。(这绝对是错误的,并且仍处于开发阶段)。可能吗?

#include <dht11.h>
    int led1=10; //Green Light (Working)
    int  i=0;//Status variable
    int l=13;//Button Press indicator
dht11 DHT11;
#define DHT11PIN 7
    int  led2=12;//Red Light (Not working)
    int led3=11;//Warning Light (Yellow)
    int input=2; //LED Reset Button  
    int oldButtonState = LOW;
void setup()
{
   Serial.begin(9600);
   pinMode(input,INPUT);
   pinMode(led1,OUTPUT);
   pinMode(led2,OUTPUT);
   pinMode(led3,OUTPUT);
   pinMode(l,OUTPUT);  
}
void(* resetFunc) (void) = 0;
  void loop() {
for (int j=0;j<60;j++){
  int chk = DHT11.read(DHT11PIN);
Serial.print("Temperature (C): ");
  int temp=DHT11.temperature;   
  Serial.println((float)temp,2);
delay(100);
}
resetFunc();
  int newButtonState = digitalRead(input);
        if (newButtonState == HIGH && oldButtonState == LOW) {
    digitalWrite(l,HIGH);
    i+=1;}

    else if (newButtonState == LOW && oldButtonState == HIGH) digitalWrite(l,LOW);
    if (i == 3) {
      i = 0;
    }

    if(i==0){
      digitalWrite(led1,HIGH);
      digitalWrite(led3,LOW);
      digitalWrite(led2,LOW);
    }
    else if (i==1){
      digitalWrite(led1,LOW);
      digitalWrite(led3,HIGH);
      digitalWrite(led2,LOW);
    }
    else if(i==2){
      digitalWrite(led1,LOW);
      digitalWrite(led3,LOW);
      digitalWrite(led2,HIGH);
    }

     oldButtonState = newButtonState;

   }

谢谢您的帮助。

标签: arduino

解决方案


推荐阅读