نقل قول نوشته اصلی توسط cjmj نمایش پست ها
توی این کد هیچ مشکلی نیست ، قبلا هم گفتم که میخوام سه تا کلید وصل کنم به آردینو یک کلید بالا و یک کلید پایین برای کم و زیاد کردن و یک کلید هم برای رفتن به تنظیمات.
در واقع میخوام وقتی که دفعه ی اول که کلید تنظیمات رو فشار دادم تنظیمات temp نمایش داده بشه و با دو کلید up و down دما رو کم و زیاد کنم و دفعه ی دوم که کلید تنظیمات رو فشار دادم بتونم رطوبت رو توش تنظیم کنم با کلید up و down.
حالا چرا میخوام دما و رطوبت رو تنظیم کنم؟؟؟
چون توی این گلخانه ای که قراره سنسور نصب بشه رطوبت باید 80 تا 90 درصد باشه و دما هم باید 20 تا 25 درجه. برای مثال ما دما رو روی 20 درجه توسط کلید تنظیم و کلید های up و down و رطوبت رو روی 85 درصد تنظیم میکنیم. خوب آردینو این اعداد رو که بهش دادیم رو میگیره و یه عمل مقایسه بین این اعدادی که ما بهش دادیم و اعدادی که سنسور dht21 نشون میده انجام میده. خوب ما دما رو روی 20 درجه تنظیم کرده بودیم حالا اگر دمای گلخانه بالای 20 رفت مثلا شد 25 ، اردینو یک رله رو که به یکی از این پین ها متصله فعال کرده و رله هواکش رو روشن میکنه و تهویه انجام میشه تا دما به چند درجه زیر 20 برسه مثلا 16 یا 17. حالا چرا زیر 20؟ چون اگه دما دوباره روی 20 بیاد و آردینو تهویه رو خاموش کنه خوب مسلمه که دقت سنسور نیم درجه است و اگه یک لحظه بیشتر از 20 درجه تشخیص بده دوباره فن روشن میشه.

حالا در مورد رطوبت: خوب ما رطوبت رو روی 85 درصد تنظیم کرده بودیم ، حالا فرض کنید رطوبت محیط 50 درصد باشه خوب مسلمه که آردینو رله ی مخصوص رطوبت رو فعال میکنه و بدین ترتیب دستگاه رطوبت ساز فعال میشه و اونقدر رطوبت تولید میکنه تا رطوبت برسه به 85 درصد و رله قطع بشه و دستگاه رطوبت ساز خاموش شه و تا وقتی دوباره رطوبت به زیر 80 نرسیده رطوبت ساز توسط آردینو روشن نشه.
من فقط تونستم تا یه جایی کد نویسی کنم که کد هم گذاشتم واستون. و تمام چیز هایی که اینجا گفتم رو دیگه در توان من نیست برنامه نویسی کنم چون بیش از یک ماه نیست که دارم با آردینو کار میکنم لطفا کمکم کنید و راه های نوشتن این برنامه رو بگید که از چه دستوراتی میتونم استفاده کنم تا پروژه رو تکمیل کنم.

سپاس فراوان از شما و ببخشید که زیاد نوشتم.

ببین کدت رو به شکل تابع نویسی در آوردم
اینو آپلود کن ببین همه چیز درسته یا نه
و این که یه نکته تو وقتی از شرط خارج میشی داری به پین دیجیتال متصل به رله دستور high میدی مگه رله تو 1 فعاله ؟
مدل رله ای که استفاده می کنی چیه؟
کد:
#include <Bounce2.h>
#include <DHT.h>
#include <LiquidCrystal.h>




#define setBUTTON 13
#define upBUTTON 12
#define downBUTTON 11
#define DHTPIN 2
#define DHTTYPE DHT21


Bounce set;
Bounce up;
Bounce down;


DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(8, 7, 6, 5, 4, 3);


float h, t, tset = 25, hset = 80;




void setup() {
  project_config();
}
//*******************
void loop() {
  button_update();
  DHT_Read();
  compare_setpoint(tset, hset, t, h);
  data_Show(h, t);


}
//*******************
void project_config() {
  lcd.begin(16, 2);
  lcd.clear();
  dht.begin();
  set.attach (setBUTTON);
  set.interval(50);
  up.attach (upBUTTON);
  up.interval(50);
  down.attach (downBUTTON);
  down.interval(50);
  pinMode (setBUTTON, INPUT_PULLUP);
  pinMode (upBUTTON, INPUT_PULLUP);
  pinMode (downBUTTON, INPUT_PULLUP);
}
//*******************
void DHT_Read() {
  h = dht.readHumidity();
  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;
  }
}
//*******************
void data_Show(float temprature, float humidity) {
  lcd.print("Humidity:");
  lcd.setCursor(10, 0);
  lcd.print(humidity);
  lcd.setCursor(15, 0);
  lcd.print("%");
  lcd.setCursor(1, 1);
  lcd.print("Temp:");
  lcd.setCursor(7, 1);
  lcd.print(temprature);
  lcd.setCursor(12, 1);
  lcd.print(" *C ");
}
//*******************
void compare_setpoint(float tempsetpint , float humidsetpoint, float tempr, float humidi) {
  const int temprelay = 10, humidityrelay = 9;
  if (tempr >= tempsetpint) {
    digitalWrite (temprelay, HIGH);
  }
  else if (tempr <= tempsetpint - 5)
  {
    digitalWrite (temprelay, LOW);
  }


  if (humidi >= humidsetpoint) {
    digitalWrite (humidityrelay, LOW);
  }
  else if (humidi <= humidsetpoint - 12)
  {
    digitalWrite (humidityrelay, HIGH);
  }
}
//*******************
void button_update() {
  set.update();
  up.update();
  down.update();


}