نمایش نتایج: از 1 به 3 از 3

موضوع: watchdog

  1. #1
    Junior Member
    تاریخ عضویت
    May 2016
    نوشته ها
    22

    watchdog

    سلام دوستان
    بنده یک ترموستات با آردوینو ساختم ک علاوه بر کنترل دما و رطوبت یک led را به هر 5 ثانیه به مدت 2 ثانیه به حرکت در میاره.
    میخوام برای زمان هنگ کردن میکرو برنامه watchdog رو به برنامم اضافه کنم.مطالبی ک خوندم(متوجه نشدم)کمکی بهم نکرد.امکان داره از دوستان زحمت وارد کردنش رو بکشه؟
    کد:
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    #include <SHT1x.h>
    LiquidCrystal_I2C lcd(0x27,16,2);
    #define dataPin  A0
    #define clockPin A1
    SHT1x sht1x(dataPin, clockPin);
    int hitter=4;
    int humm=3;
    int ledPin =  13;      // the number of the LED pin
    int ledState = LOW;             // ledState used to set the LED
    unsigned long previousMillis = 0;        // will store last time LED was updated
    long OnTime = 2000;           // milliseconds of on-time
    long OffTime = 5000;          // milliseconds of off-time
     
    
    void setup()
    {
    lcd.init();                      // initialize the lcd 
     
      // Print a message to the LCD.
    lcd.backlight();
    lcd.setCursor(1,0);
      lcd.print("IN THE NAME OF ");
    lcd.setCursor(7,1);
      lcd.print("GOD");
    Serial.begin(9600);
    pinMode(4,OUTPUT); //hiter relay
    pinMode(3,OUTPUT); // humm fan relay
    pinMode(ledPin, OUTPUT);   
    
    }
    void loop()
    {
      lcd.setCursor(0,1);
       float temp_c;
      float humidity;
    
      // Read values from the sensor
      temp_c = sht1x.readTemperatureC();
      humidity = sht1x.readHumidity();
      lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("tmp: ");
      lcd.print(temp_c);
      lcd.setCursor(2,1);
      lcd.print("Hum: ");
      lcd.print(humidity);
      lcd.print("%");
      
       Serial.print("Temp: ");
      Serial.print(temp_c, DEC);
      Serial.print("Humidity: ");
      Serial.print(humidity);
      Serial.println("%");
    
     
     if(temp_c<33.5){ //lighting up the led
        digitalWrite(4,HIGH);
      }
        
    if(temp_c>33.9){ //lighting up the led
        digitalWrite(4,LOW);
      }
     
    
     if(humidity<57){
     digitalWrite(3,HIGH);
     }
    
    if(humidity>61){
      digitalWrite(3,LOW); 
    }
    unsigned long currentMillis = millis();
     
      if((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
      {
        ledState = LOW;  // Turn it off
        previousMillis = currentMillis;  // Remember the time
        digitalWrite(ledPin, ledState);  // Update the actual LED
        
      }
      else if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
      {
        ledState = HIGH;  // turn it on
        previousMillis = currentMillis;   // Remember the time
        digitalWrite(ledPin, ledState);    // Update the actual LED
        lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("MOTOR >>> ON ");
      lcd.setCursor(2,1);
      lcd.print("EVRY  >>> 5S");
     
    
      }
      delay(1000);
    }

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    این فایل رو مطالعه کنید
    http://forum.arduino.cc/index.php?ac....0;attach=3585

    میاد
    watchdog رو روی 2 ثانیه ست می کنه . خیلی راحته چون تابع کانفیگش رو جدا کرده

    کافیه تابع
    watchdogSetup رو به برنامه اضافه کنید و هرجا که خواستید wdt_reset رو صدا بزنید
    ویرایش توسط magmagmary : 06-23-2016 در ساعت 06:29 AM

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    شبکه آموزش یکی از دوستان با کتابخانه ادافروت که شکیل تر هست توضیح داده
    خیلی راحته:
    http://i.aftabrayaneh.com/#!/3-senso...-watchdog.html

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

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

SEO by vBSEO