نمایش نتایج: از 1 به 10 از 37
Like Tree13 لایک

موضوع: تنظیم رطوبت و دمای گلخانه توسط آردینو

Hybrid View

  1. #1
    Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران
    نوشته ها
    85
    آقا یکم بیشتر سر کد ها فکر کردم و تونستم که دستورات if رو به نحوی تو برنامه جا بدم

    اینم کدهایی که تا اینجا نوشته شده:

    کد:
    #include "Bounce2.h"
    #include "DHT.h"
    #include "LiquidCrystal.h"
    
    #define setBUTTON 13
    #define upBUTTON 12
    #define downBUTTON 11
    
    Bounce setBUTTONDebouncer;
    Bounce upBUTTONDebouncer;
    Bounce downBUTTONDebouncer;
    
    volatile  int up = 30;
    
    #define DHTPIN 2
    #define DHTTYPE DHT21
    
    DHT dht(DHTPIN, DHTTYPE);
    LiquidCrystal lcd(8, 7, 6, 5, 4, 3);
    
    const int temprelay = 10;
    const int humidityrelay = 9;
    
    
    void setup() {
      lcd.begin(16, 2);
      lcd.clear();
    
      dht.begin();
    
        setBUTTONDebouncer.attach (setBUTTON);
        setBUTTONDebouncer.interval(50);
        
        upBUTTONDebouncer.attach (upBUTTON);
        upBUTTONDebouncer.interval(50);
    
        downBUTTONDebouncer.attach (downBUTTON);
        downBUTTONDebouncer.interval(50);
    
        
          pinMode (setBUTTON, INPUT_PULLUP);
          pinMode (upBUTTON, INPUT_PULLUP);
          pinMode (downBUTTON, INPUT_PULLUP);
    }
    
    void loop() {
      
    setBUTTONDebouncer.update();
    upBUTTONDebouncer.update();
    downBUTTONDebouncer.update();
    
      
    if (setBUTTONDebouncer.fell ())
    {
       lcd.clear();
       lcd.print("Set Humidity:");
       delay(10000);
       lcd.clear();
    }
    
     if(upBUTTONDebouncer.fell())
     {
      up++;
      
       lcd.setCursor(7,2);
       lcd.print(up);
    
     }
    
       
      
    
      delay(1000);
    
      float h = dht.readHumidity();
      float t = dht.readTemperature();
    
      if (isnan(h) || isnan(t)) {
        lcd.clear();
        lcd.setCursor(1,0);
        lcd.print("Failed to read ");
        lcd.setCursor(0,1);
        lcd.print("from DHT sensor!");
        delay(2000);
        lcd.clear();
        return;
      }
    
      if ((t) >= 28){
      digitalWrite (temprelay, HIGH);
      }
           else if ((t) <= 24) 
           {
           digitalWrite (temprelay, LOW);
           }
      
           if ((h) <= 78){
           digitalWrite (humidityrelay, HIGH);
           }
           else if ((h) >=92)
           {
           digitalWrite (humidityrelay, LOW);
           }
    
      
       lcd.print("Humidity:");
       lcd.setCursor(10,0);
       lcd.print(h);
       lcd.setCursor(15,0);
       lcd.print("%");
       lcd.setCursor(1,1);
       lcd.print("Temp:");
       lcd.setCursor(7,1);
       lcd.print(t);
       lcd.setCursor(12,1);
       lcd.print(" *C ");
    }

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط cjmj نمایش پست ها
    آقا یکم بیشتر سر کد ها فکر کردم و تونستم که دستورات if رو به نحوی تو برنامه جا بدم

    اینم کدهایی که تا اینجا نوشته شده:

    کد:
    #include "bounce2.h"
    #include "dht.h"
    #include "liquidcrystal.h"
    
    #define setbutton 13
    #define upbutton 12
    #define downbutton 11
    
    bounce setbuttondebouncer;
    bounce upbuttondebouncer;
    bounce downbuttondebouncer;
    
    volatile  int up = 30;
    
    #define dhtpin 2
    #define dhttype dht21
    
    dht dht(dhtpin, dhttype);
    liquidcrystal lcd(8, 7, 6, 5, 4, 3);
    
    const int temprelay = 10;
    const int humidityrelay = 9;
    
    
    void setup() {
      lcd.begin(16, 2);
      lcd.clear();
    
      dht.begin();
    
        setbuttondebouncer.attach (setbutton);
        setbuttondebouncer.interval(50);
        
        upbuttondebouncer.attach (upbutton);
        upbuttondebouncer.interval(50);
    
        downbuttondebouncer.attach (downbutton);
        downbuttondebouncer.interval(50);
    
        
          pinmode (setbutton, input_pullup);
          pinmode (upbutton, input_pullup);
          pinmode (downbutton, input_pullup);
    }
    
    void loop() {
      
    setbuttondebouncer.update();
    upbuttondebouncer.update();
    downbuttondebouncer.update();
    
      
    if (setbuttondebouncer.fell ())
    {
       lcd.clear();
       lcd.print("set humidity:");
       delay(10000);
       lcd.clear();
    }
    
     if(upbuttondebouncer.fell())
     {
      up++;
      
       lcd.setcursor(7,2);
       lcd.print(up);
    
     }
    
       
      
    
      delay(1000);
    
      float h = dht.readhumidity();
      float t = dht.readtemperature();
    
      if (isnan(h) || isnan(t)) {
        lcd.clear();
        lcd.setcursor(1,0);
        lcd.print("failed to read ");
        lcd.setcursor(0,1);
        lcd.print("from dht sensor!");
        delay(2000);
        lcd.clear();
        return;
      }
    
      if ((t) >= 28){
      digitalwrite (temprelay, high);
      }
           else if ((t) <= 24) 
           {
           digitalwrite (temprelay, low);
           }
      
           if ((h) <= 78){
           digitalwrite (humidityrelay, high);
           }
           else if ((h) >=92)
           {
           digitalwrite (humidityrelay, low);
           }
    
      
       lcd.print("humidity:");
       lcd.setcursor(10,0);
       lcd.print(h);
       lcd.setcursor(15,0);
       lcd.print("%");
       lcd.setcursor(1,1);
       lcd.print("temp:");
       lcd.setcursor(7,1);
       lcd.print(t);
       lcd.setcursor(12,1);
       lcd.print(" *c ");
    }

    با تابع نویسی آشنایی؟
    الان تمام اتفاقات کدت داره تو loop میفته یه کم کدتو خوانا تر کن و براش تابع بنویس تا بعد سوئیچ ها رو به عنوان به تابع به مجموعه تابع هات اصافه کنیم

  3. #3
    Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران
    نوشته ها
    85
    با تابع نویسی زیاد آشنا نیستم ولی اگه لینکی دارین که آموزش تابع نویسی رو داره قرار بدید تا برم یاد بگیرم.
    از تمام کسانی که تا اینجا توی انجمن بهم کمک کردن بسیار سپاس گزارم.
    ویرایش توسط cjmj : 02-04-2016 در ساعت 08:45 PM
    لایک کردن

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO