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