سلام دوستان
بنده یک ترموستات با آردوینو ساختم ک علاوه بر کنترل دما و رطوبت یک 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);
}