查看: 1964|回复: 3

arduino断电重连后有一部分程序不执行

[复制链接]
  • TA的每日心情
    奋斗
    2017-7-30 11:22
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2017-6-23 08:50 | 显示全部楼层 |阅读模式
    本帖最后由 疯魔的雪橇犬 于 2017-6-23 09:22 编辑

    三个子程序,前一天断电重连之后,温湿度检测子程序不执行,今早又可以执行了,下方是程序。
    #include <Wire.h>
    #include<dht11.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x3F,20,4);
    dht11 DHT11;
    #define DHT11PIN 6
    int i;
    int S;
    int K=1;
    int J=1;

    void setup()
    {
      lcd.init();
      lcd.backlight();
      lcd.begin(16, 2);
      Serial.begin(9600);
    }
    void loop()
    {
      /*lcd.setCursor(6,1);
      lcd.print("W=");*/
      temperature();//温湿度检测,6号引脚检测,10引脚控制风扇
      soil();//土壤湿度,A1号引脚检测,8号引脚控制水泵
      infrared();//红外感应,A0号引脚检测,7号引脚输出控制蜂鸣器,9引脚控制灯光
      
      delay(1000);
    }

    void soil(void)
    {
      int D8 = 8;
      pinMode(D8,OUTPUT);
      S = analogRead(A1);
      Serial.println(S);
      if(S > 800)
      {
         K=0;
         digitalWrite(D8,K);
         lcd.setCursor(6,0);
         lcd.print("!!");
         lcd.setCursor(8,0);
         lcd.print(" ");
         if(S > 1000)
         {
           lcd.setCursor(9,0);
           lcd.print("S%=");
           lcd.setCursor(12,0);
           S = analogRead(A1);
           lcd.print(S);
         }
         else
         {
           lcd.setCursor(9,0);
           lcd.print("S%=");
           lcd.setCursor(12,0);
           S = analogRead(A1);
           lcd.setCursor(15,0);
           lcd.print(" ");
           lcd.print(S);
         }
      }
      else if(S < 800&&S > 700)
      {
        digitalWrite(D8,K);
        if(K == 1)
        {
          lcd.setCursor(6,0);
          lcd.print("S%=");
          lcd.setCursor(9,0);
          lcd.print(S);
          lcd.setCursor(12,0);
          lcd.print("    ");
          S = analogRead(A1);
        }
        else if(K == 0)
        {
         lcd.setCursor(6,0);
         lcd.print("!!");
         lcd.setCursor(8,0);
         lcd.print(" ");
         lcd.setCursor(9,0);
         lcd.print("S%=");
         lcd.setCursor(12,0);
         S = analogRead(A1);
         lcd.print(S);
        }
      }
      else if(S < 700)
      {
        K=1;
        digitalWrite(D8,K);
        lcd.setCursor(6,0);
        lcd.print("S%=");
        lcd.setCursor(9,0);
        lcd.print(S);
        lcd.setCursor(12,0);
        lcd.print("    ");
        S = analogRead(A1);
      }
    }

    void infrared(void)
    {
        int D9 = 9;
        pinMode(D9,OUTPUT);
        float X;
        float i;
         X = analogRead(A0);
         Serial.println(X);
         if(X>500)
         {
           digitalWrite(D9,LOW);
           for(i=-14;X>500;i++)
           {
             noTone(7);
             tone(7, 500, 300);
             delay(300);  
             lcd.setCursor(6,1);
             lcd.print("Here");
             delay(1000);
             lcd.setCursor(11,1);
             lcd.print(i);
             X = analogRead(A0);
           }   
         }
         else
         {
            digitalWrite(D9,HIGH);
            lcd.setCursor(6,1);
            lcd.print("None");
            /*lcd.setCursor(11,1);
            lcd.print(i);
            delay(1000);
            X = analogRead(A0);*/
         }
    }

    void temperature(void)
    {
      int D10 = 10;
      pinMode(D10,OUTPUT);
    /* lcd.setCursor(2,0);
      lcd.print(DHT11.humidity);
      lcd.setCursor(2,1);
      lcd.print(DHT11.temperature);*/
      int chk = DHT11.read(DHT11PIN);
      if(DHT11.temperature > 42)
      {
         J=0;
         digitalWrite(D10,J);
         lcd.setCursor(0,0);
         lcd.print("!!!!");
         lcd.setCursor(0,1);
         lcd.print("T=");
         lcd.setCursor(2,1);
         lcd.print(DHT11.temperature);
      }
      else if(DHT11.temperature < 42 && DHT11.temperature > 26)
      {
        digitalWrite(D10,J);
        if(J == 1)
        {
          lcd.setCursor(0,0);
          lcd.print("%=");
          lcd.setCursor(0,1);
          lcd.print("T=");
          lcd.setCursor(2,0);
          lcd.print(DHT11.humidity);
          lcd.setCursor(2,1);
          lcd.print(DHT11.temperature);
        }
        else if(J == 0)
        {
          lcd.setCursor(0,0);
          lcd.print("!!!!");
          lcd.setCursor(0,1);
          lcd.print("T=");
          lcd.setCursor(2,1);
          lcd.setCursor(2,1);
          lcd.print(DHT11.temperature);
        }
      }
      else if(DHT11.temperature < 26)
      {
        J=1;
        digitalWrite(D10,J);
        lcd.setCursor(0,0);
        lcd.print("%=");
        lcd.setCursor(0,1);      
        lcd.print("T=");
        lcd.setCursor(2,0);
        lcd.print(DHT11.humidity);
        lcd.setCursor(2,1);  
        lcd.print(DHT11.temperature);
      }
    }





  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2017-6-23 08:59 | 显示全部楼层
    几乎不可能是程序不执行,更可能是你程序逻辑问题,或者硬件问题,让你以为他没执行。
    简单的判断方法:在你认为没执行的程序中插入 Serial.println输出字符,看看是否有输出,如果有,说明已经执行,如果没有,说明你加入的位置逻辑有问题
  • TA的每日心情
    奋斗
    2017-7-30 11:22
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2017-6-23 09:24 | 显示全部楼层
    奈何col 发表于 2017-6-23 08:59
    几乎不可能是程序不执行,更可能是你程序逻辑问题,或者硬件问题,让你以为他没执行。
    简单的判断方法:在 ...

    程序在电脑上链接数据线时跑没啥问题。昨天用外部供电尝试了 也可以 问题就发生在断电之后  在供电就有一部分程序不执行,温湿度不执行,今早又好使了 是什么原因
  • TA的每日心情
    奋斗
    2017-7-30 11:22
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2017-6-23 09:25 | 显示全部楼层
    奈何col 发表于 2017-6-23 08:59
    几乎不可能是程序不执行,更可能是你程序逻辑问题,或者硬件问题,让你以为他没执行。
    简单的判断方法:在 ...

    程序在电脑上链接数据线时跑没啥问题。昨天用外部供电尝试了 也可以 问题就发生在断电之后  在供电就有一部分程序不执行,温湿度不执行,今早又好使了 是什么原因
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    ESP8266电池供电如何接线?
    ESP8266电池供电如何接线
    小白一枚,最近捣腾ESP8266-12F[/backcolor],在烧录架上烧录好Blinker程序是正常运行
    莫斯精灵
    莫斯精灵
      在抗战和谍情影片中无线电台发出的嘀嘀嗒嗒声大家一定印象深刻吧?其实就是将信
    AM广播环境监测仪
    AM广播环境监测仪
    #描述 之前在论坛看到一个帖子,可以让UNO产生1MHz-AM 调幅波并短距离发送电报。
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表