صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از 1 به 10 از 27
Like Tree7 لایک

موضوع: کنترل دما و رطوبت با اردوینو Uno ؟؟؟

  1. #1
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116

    Question کنترل دما و رطوبت با اردوینو Uno ؟؟؟

    سلام، وقت بخیر
    من تو مبحث اردوینو مبتدی هستم و چیز زیادی بلد نیستم ولی برای یک کاری به شدت به اردوینو نیاز دارم.

    بزارین اول با یک سوال شروع کنم... میشه با اردوینو Uno چند کار همزمان انجام داد؟ یعنی چند برنامه بدی بهش و برات چند کار همزمان انجام بده؟
    اولین و مهم ترین کاری که میخوام انجام بده کنترل رطوبت و دما با سنسور DHT11 و نمایش دما و رطوبت روی صفحه نمایش OLED تک رنگ هستش و اینکه دما و رطوبتو در یک حد مشخصی نگهداره. یعنی به دوتا رله که یکی برای رطوبت ساز هست و یکی دیگه فن متصل بشه و وقتی دما و رطوبت بالا رفت فن شروع کنه به کار کردن و وقتی رطوبت از 75% پایینتر اومد رطوبت ساز رو فعال کنه و فن خاموش باشه.
    از اونجایی که تو کد نویسی اردوینو حرفه ای هستم... رفتم سایت های خارجی و یه چرخ زدم و سورس کد وکتابخانه اینو پیدا کردم به شرح زیر(البته دارم سعی میکنم یاد بگیرم ولی این مورد اضطراریه) :
    کد:
    #include <U8glib.h>  // U8glib library
    #include <dht.h>     // DHT library
    
    #define dht_apin A5  // Analog pin to which the sensor is connected
    dht DHT;
                   /*Uncomment and comment*/
    U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8);  // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    
    void draw(void) 
    {
       u8g.setFont(u8g_font_fub17r);   // select font
       u8g.drawStr(0, 20, "Temp: ");   // put string of display at position X, Y
       u8g.drawStr(0, 60, "Hum: ");
       u8g.setPrintPos(72, 20);        // set position
       u8g.print(DHT.temperature, 0);  // display temperature from DHT11 in Celsius
       u8g.println("C"); 
       u8g.setPrintPos(60, 60);        // set position
       u8g.print(DHT.humidity, 0);     // display humidity from DHT11
       u8g.println("%");
    }
    void setup(void) 
    {
    
    }
    
    void loop(void)
    {
       DHT.read11(dht_apin);  // Read apin on DHT11
       u8g.firstPage();  
       do 
    {
       draw();
    }  while( u8g.nextPage() );
       delay(2000);  // Delay of 2 sec before accessing DHT11 (min - 2sec)
    }
                               /*END OF FILE*/
    این برای همون سنسور و صفحه نمایش هست ولی مشکلی که داره اینه که هیچ کنترلی بر دما و رطوبت نداره، یعنی براش تعریف نشده که وقتی رطوبت بالای 80% رسید (ینی همون مقدار max سنسور) یا دما بالا رفت رله 1 رو فعال کنه تا درصد بیاد پایین و همینطور کمتر شدنی رله 2 رو فعال کنه....
    ممنون میشم کمکم کنید اینم اضافه کنم، ولتاژ خود دستکاه ها که ربطی به مشخصات رله نداره؟ 220 هم باشه روشن میکنه؟

    کارهای دیگه ای که میخوام انجام بده؛ اضافه کردن یک تایمر برای کنترل رله سوم که برای دستگاه دیگه هست. (روشن کردنش در بازه زمانی مشخص و طولانی مثلا ماهی دوبار به مدت 1 دقیقه)

    و اخری وصل شه به سنسور فتوسل که رله 4 رو کنترل کنه برای کنترل لامپ و روشنایی. شب خاموش شه، روز روشن شه
    با فعال شدن هر کدوم از عملیات هم رو صفحه OLED اهمی چیزی بنویسه.
    و دوتا کلید هم باشه که یکیش خودش روشن شه و دیگری باهاش چیز دیگه رو روشن کنیم و واسه ایناهم نوشته بیاد.
    امکانش هست همچین چیزی؟ یا باید چندتا اردوینو بگیرم؟ بنظرم تعداد پین هاش کفایت میکنه
    پیشاپیش ممنونم.
    ویرایش توسط Smead : 04-21-2016 در ساعت 01:49 PM

  2. #2
    Senior Member
    تاریخ عضویت
    Oct 2014
    محل سکونت
    ایران
    نوشته ها
    178
    سلام وقت شما هم بخیر
    با میکرو کنترل های AVR نمی تونید همزمان چند برنامه مختلف را انجام بدید!!! مگر در برنامه میکرو وقفه ایجاد کنید که اونم زیاد کاربردی نیست!!!
    گفته های شما یک برنامه محسوب می شود. شما می توانید 8 سنسور را بصورت آنالوگ به آردوینو خود متصل کنید و همزمان مقادیر سنسور های خود را مشاهده کنید.
    برای اینکه برنامه نویسی با آردوینو را مسلط بشید پیشنهاد میکنم از کتابخانه خود آردوینو استفاده کنید تو قسمت file بعد قسمت examples برنامه های مربوط به خواندن آنالوگ را کار کنید
    برای این کار هم پیشنهاد میکنم قسمت بیسیک رفته قسمت آنالوگ رید سریال را باز کنید و تست کنید . در این برنامه یک سنسور آنالوگ را خوانده و مقدارهای آن را در قسمت سریال مانیتور نشان می دهد.

    سوالات بعدی خود را مطرح کنید تا روی برنامه نویسی هم تسلط کامل پیدا کنید

    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    سلام، وقت بخیر
    من تو مبحث اردوینو مبتدی هستم و چیز زیادی بلد نیستم ولی برای یک کاری به شدت به اردوینو نیاز دارم.

    بزارین اول با یک سوال شروع کنم... میشه با اردوینو Uno چند کار همزمان انجام داد؟ یعنی چند برنامه بدی بهش و برات چند کار همزمان انجام بده؟
    اولین و مهم ترین کاری که میخوام انجام بده کنترل رطوبت و دما با سنسور DHT11 و نمایش دما و رطوبت روی صفحه نمایش OLED تک رنگ هستش و اینکه دما و رطوبتو در یک حد مشخصی نگهداره. یعنی به دوتا رله که یکی برای رطوبت ساز هست و یکی دیگه فن متصل بشه و وقتی دما و رطوبت بالا رفت فن شروع کنه به کار کردن و وقتی رطوبت از 75% پایینتر اومد رطوبت ساز رو فعال کنه و فن خاموش باشه.
    از اونجایی که تو کد نویسی اردوینو حرفه ای هستم... رفتم سایت های خارجی و یه چرخ زدم و سورس کد وکتابخانه اینو پیدا کردم به شرح زیر(البته دارم سعی میکنم یاد بگیرم ولی این مورد اضطراریه) :
    کد:
    #include <U8glib.h>  // U8glib library
    #include <dht.h>     // DHT library
    
    #define dht_apin A5  // Analog pin to which the sensor is connected
    dht DHT;
                   /*Uncomment and comment*/
    U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8);  // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    
    void draw(void) 
    {
       u8g.setFont(u8g_font_fub17r);   // select font
       u8g.drawStr(0, 20, "Temp: ");   // put string of display at position X, Y
       u8g.drawStr(0, 60, "Hum: ");
       u8g.setPrintPos(72, 20);        // set position
       u8g.print(DHT.temperature, 0);  // display temperature from DHT11 in Celsius
       u8g.println("C"); 
       u8g.setPrintPos(60, 60);        // set position
       u8g.print(DHT.humidity, 0);     // display humidity from DHT11
       u8g.println("%");
    }
    void setup(void) 
    {
    
    }
    
    void loop(void)
    {
       DHT.read11(dht_apin);  // Read apin on DHT11
       u8g.firstPage();  
       do 
    {
       draw();
    }  while( u8g.nextPage() );
       delay(2000);  // Delay of 2 sec before accessing DHT11 (min - 2sec)
    }
                               /*END OF FILE*/
    این برای همون سنسور و صفحه نمایش هست ولی مشکلی که داره اینه که هیچ کنترلی بر دما و رطوبت نداره، یعنی براش تعریف نشده که وقتی رطوبت بالای 80% رسید (ینی همون مقدار max سنسور) یا دما بالا رفت رله 1 رو فعال کنه تا درصد بیاد پایین و همینطور کمتر شدنی رله 2 رو فعال کنه....
    ممنون میشم کمکم کنید اینم اضافه کنم، ولتاژ خود دستکاه ها که ربطی به مشخصات رله نداره؟ 220 هم باشه روشن میکنه؟

    کارهای دیگه ای که میخوام انجام بده؛ اضافه کردن یک تایمر برای کنترل رله سوم که برای دستگاه دیگه هست. (روشن کردنش در بازه زمانی مشخص و طولانی مثلا ماهی دوبار به مدت 1 دقیقه)

    و اخری وصل شه به سنسور فتوسل که رله 4 رو کنترل کنه برای کنترل لامپ و روشنایی. شب خاموش شه، روز روشن شه
    با فعال شدن هر کدوم از عملیات هم رو صفحه OLED اهمی چیزی بنویسه.
    و دوتا کلید هم باشه که یکیش خودش روشن شه و دیگری باهاش چیز دیگه رو روشن کنیم و واسه ایناهم نوشته بیاد.
    امکانش هست همچین چیزی؟ یا باید چندتا اردوینو بگیرم؟ بنظرم تعداد پین هاش کفایت میکنه
    پیشاپیش ممنونم.
    درود بر کسانی که دعا دارند و ادعا ندارند
    نیایش دارند و نمایش ندارند
    حیا دارند و ریا ندارند
    رسم دارند و اسم ندارند…

  3. #3
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط tanha71 نمایش پست ها
    سلام وقت شما هم بخیر
    با میکرو کنترل های AVR نمی تونید همزمان چند برنامه مختلف را انجام بدید!!! مگر در برنامه میکرو وقفه ایجاد کنید که اونم زیاد کاربردی نیست!!!
    گفته های شما یک برنامه محسوب می شود. شما می توانید 8 سنسور را بصورت آنالوگ به آردوینو خود متصل کنید و همزمان مقادیر سنسور های خود را مشاهده کنید.
    برای اینکه برنامه نویسی با آردوینو را مسلط بشید پیشنهاد میکنم از کتابخانه خود آردوینو استفاده کنید تو قسمت file بعد قسمت examples برنامه های مربوط به خواندن آنالوگ را کار کنید
    برای این کار هم پیشنهاد میکنم قسمت بیسیک رفته قسمت آنالوگ رید سریال را باز کنید و تست کنید . در این برنامه یک سنسور آنالوگ را خوانده و مقدارهای آن را در قسمت سریال مانیتور نشان می دهد.

    سوالات بعدی خود را مطرح کنید تا روی برنامه نویسی هم تسلط کامل پیدا کنید
    خب پس چطور میتونم رو دما و رطوبت کنترل داشته باشم و کلید بزارم و رو صفحه نمایش بده؟
    چون همچین چیزیو قبلا دیدم

  4. #4
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    سلام، وقت بخیر
    من تو مبحث اردوینو مبتدی هستم و چیز زیادی بلد نیستم ولی برای یک کاری به شدت به اردوینو نیاز دارم.

    بزارین اول با یک سوال شروع کنم... میشه با اردوینو Uno چند کار همزمان انجام داد؟ یعنی چند برنامه بدی بهش و برات چند کار همزمان انجام بده؟
    اولین و مهم ترین کاری که میخوام انجام بده کنترل رطوبت و دما با سنسور DHT11 و نمایش دما و رطوبت روی صفحه نمایش OLED تک رنگ هستش و اینکه دما و رطوبتو در یک حد مشخصی نگهداره. یعنی به دوتا رله که یکی برای رطوبت ساز هست و یکی دیگه فن متصل بشه و وقتی دما و رطوبت بالا رفت فن شروع کنه به کار کردن و وقتی رطوبت از 75% پایینتر اومد رطوبت ساز رو فعال کنه و فن خاموش باشه.
    از اونجایی که تو کد نویسی اردوینو حرفه ای هستم... رفتم سایت های خارجی و یه چرخ زدم و سورس کد وکتابخانه اینو پیدا کردم به شرح زیر(البته دارم سعی میکنم یاد بگیرم ولی این مورد اضطراریه) :
    کد:
    #include <U8glib.h>  // U8glib library
    #include <dht.h>     // DHT library
    
    #define dht_apin A5  // Analog pin to which the sensor is connected
    dht DHT;
                   /*Uncomment and comment*/
    U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8);  // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 8); // DIN=13, CLK=11, CS=10, DC=9, Reset=8
    
    void draw(void) 
    {
       u8g.setFont(u8g_font_fub17r);   // select font
       u8g.drawStr(0, 20, "Temp: ");   // put string of display at position X, Y
       u8g.drawStr(0, 60, "Hum: ");
       u8g.setPrintPos(72, 20);        // set position
       u8g.print(DHT.temperature, 0);  // display temperature from DHT11 in Celsius
       u8g.println("C"); 
       u8g.setPrintPos(60, 60);        // set position
       u8g.print(DHT.humidity, 0);     // display humidity from DHT11
       u8g.println("%");
    }
    void setup(void) 
    {
    
    }
    
    void loop(void)
    {
       DHT.read11(dht_apin);  // Read apin on DHT11
       u8g.firstPage();  
       do 
    {
       draw();
    }  while( u8g.nextPage() );
       delay(2000);  // Delay of 2 sec before accessing DHT11 (min - 2sec)
    }
                               /*END OF FILE*/
    این برای همون سنسور و صفحه نمایش هست ولی مشکلی که داره اینه که هیچ کنترلی بر دما و رطوبت نداره، یعنی براش تعریف نشده که وقتی رطوبت بالای 80% رسید (ینی همون مقدار max سنسور) یا دما بالا رفت رله 1 رو فعال کنه تا درصد بیاد پایین و همینطور کمتر شدنی رله 2 رو فعال کنه....
    ممنون میشم کمکم کنید اینم اضافه کنم، ولتاژ خود دستکاه ها که ربطی به مشخصات رله نداره؟ 220 هم باشه روشن میکنه؟

    کارهای دیگه ای که میخوام انجام بده؛ اضافه کردن یک تایمر برای کنترل رله سوم که برای دستگاه دیگه هست. (روشن کردنش در بازه زمانی مشخص و طولانی مثلا ماهی دوبار به مدت 1 دقیقه)

    و اخری وصل شه به سنسور فتوسل که رله 4 رو کنترل کنه برای کنترل لامپ و روشنایی. شب خاموش شه، روز روشن شه
    با فعال شدن هر کدوم از عملیات هم رو صفحه OLED اهمی چیزی بنویسه.
    و دوتا کلید هم باشه که یکیش خودش روشن شه و دیگری باهاش چیز دیگه رو روشن کنیم و واسه ایناهم نوشته بیاد.
    امکانش هست همچین چیزی؟ یا باید چندتا اردوینو بگیرم؟ بنظرم تعداد پین هاش کفایت میکنه
    پیشاپیش ممنونم.
    علیک سلام
    بستگی به تعریفت از همزمانی داره ، یه موقع هست واقعا دوتا کار همزمان انجام میشن اما یه مواقعی هم هست اون دوتا کار تو بازه های زمانی کوتاه و در کنار هم دارن انجام میشن و به نظر میاد واقعا همزمان هستن (وقتی زیاد بهش فکر میکنم گیج میشم )
    آردوینو توی هر بازه زمانی میاد اون دستوراتی که تو بهش میدی رو انجام میده و از اونجایی که تو این دستورات رو معمولا تو یه حلقه تکرار میذاری (loop) هی پشت سر هم اون کارا رو میکنه و از اونجایی که سرعتش نسبتا بالاس به نظر میاد داره اون کار ها رو با هم انجام میده ، تصور کن آردوینو مثل یه آدم کاراش رو انجام میداد و میتونستی سرعتش رو کم کنی ، اول میرفت سنسور رطوبت رو میخوند بعد دما رو بعد میومد نگاه میکرد ببینه حد مجاز مقادیر چقدره بعد قکر میکرد و مقایسه میکرد مقدار ها رو با حد مجاز بعدم تصمیم میگرفت و دستگاه خنک کننده یا گرم کننده رو روشن میکرد حالا همین رو سرعتش رو ببر بالا توی بازه های خیلی کوچیک این کار رو میکنه و چون ما اونقدر سریع نمیبینیم به نظرمون میاد داره همه کار ها رو با هم میکنه
    در مورد کاری هم که میخوای بکنی همین کدی که از brainy کپی کردی خیلی خوبه هرچی هم کم داشت فکر کن خودت جای آردوینو بودی چیکار میکردی و همونو کد کن
    موفق باشی
    اگه مشکل داشتی یه سر بزن به وبلاگ آموزش آردوینو وبلاگ آردوینو | تازه ترین های آردوینو و دنیای فن آوری
    ویرایش توسط siib : 04-21-2016 در ساعت 02:44 PM

  5. #5
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    علیک سلام
    بستگی به تعریفت از همزمانی داره ، یه موقع هست واقها دوتا کار همزمان انجام میشن اما یه مواقعی هم هست اون دوتا کار تو بازه های زمانی کوتاه و در کنار هم دارن انجام میشن و به نظر میاد واقعا همزمان هستن (وقتی زیاد بهش فکر میکنم گیج میشیم )
    آردوینو توی هر بازه زمانی میاد اون دستوراتی که تو بهش میدی رو انجام میده و از اونجایی که تو این دستورات رو معمولا تو یه حلقه تکرار میذاری (loop) هی پشت سر هم اون کارا رو میکنه و از اونجایی که سرعتش نسبتا بالاس به نظر میاد داره اون کار ها رو با هم انجام میده ، تصور کن آردوینو مثل یه آدم کاراش رو انجام میداد و میتونستی سرعتش رو کم کنی ، اول میرفت سنسور رطوبت رو میخوند بعد دما رو بعد میومد نگاه میکرد ببینه حد مجاز مقادیر چقدره بعد قکر میکرد و مقایسه میکرد مقدار ها رو با حد مجاز بعدم تصمیم میگرفت و دستگاه خنک کننده یا گرم کننده رو روشن میکرد حالا همین رو سرعتش رو ببر بالا توی بازه های خیلی کوچیک این کار رو میکنه و چون ما اونقدر سریع نمیبینیم به نظرمون میاد داره همه کار ها رو با هم میکنه
    در مورد کاری هم که میخوای بکنی همین کدی که از brainy کپی کردی خیلی خوبه هرچی هم کم داشت فکر کن خودت جای آردوینو بودی چیکار میکردی و همونو کد کن
    موفق باشی
    اگه مشکل داشتی یه سر بزن به وبلاگ آموزش آردوینو وبلاگ آردوینو | تازه ترین های آردوینو و دنیای فن آوری
    ممنون از وقتی که گذاشتی
    پس چیزی که میخوام عملا شدنیه؟
    حالا میتونم یکی دو مورد حذف کنم ولی چندتاش ضروریه
    کدوماشو میتونم به راحتی اجرا کنم و چطور؟
    درموردوبلاگ هم اونجارو قبلا بوک مارک کردم عالیه 😊😉
    ممنون

  6. #6
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    ممنون از وقتی که گذاشتی
    پس چیزی که میخوام عملا شدنیه؟
    حالا میتونم یکی دو مورد حذف کنم ولی چندتاش ضروریه
    کدوماشو میتونم به راحتی اجرا کنم و چطور؟
    درموردوبلاگ هم اونجارو قبلا بوک مارک کردم عالیه ������������
    ممنون
    آره کاملا شدنی هست ،
    منظورت از "کلیدی که خودش روشن میشه" رو نفهمیدم اما بازم هرچی باشه با uno که نباید مشکلی داشته باشی و همش شدنیه ، نمایشگر nokia 5110 مناسبه
    رله هم نمیتونی همینجوری یه رله وصل کنی به آردوینو باید از ماژول رله مخصوص آردوینو استفاده کنی (توان آردوینو اونقدا بالا نیست)
    و اینکه باید رله ت رو جوری انتخاب کنی که متناسب اون 220 ولت اختلاف پتانسیل و جریانت باشه که یه وقت خال نزنه (نچسبه)
    اگه رله مناسب رو پیدا کردی میتونی با رله روی ماژول جایگزین کنی یا با یه درایور ازش استفاده کنی
    اینا همه ش تو وبلاگ هست ، لطفا مطالعه فرمایید

  7. #7
    Senior Member
    تاریخ عضویت
    Oct 2014
    محل سکونت
    ایران
    نوشته ها
    178
    برای این کار می توانید از 2 روش استفاده کنید روش اول میتونید 2 عدد adc میکرو را اختصاص بدید به دو پتانسیومتر 10 کیلو اهم که با چرخش هریک از این پتانسیومتر ها (ولوم ها) مقدار دما و رطوبت را برای فعال کردن رله ها تعیین کنید. روش دوم هم میتوانید از 2 عدد کلید فشاری استفاده کنید که مقدار را برای فعال کردن رله ها تعیین کنید ، این برای کنترل روی داده های سنسور ها
    برای راه اندازی ال سی دی هم میتوانید از 5110 استفاده کنید که راه اندازیش هم برای شما راحت می باشد.



    نقل قول نوشته اصلی توسط smead نمایش پست ها
    خب پس چطور میتونم رو دما و رطوبت کنترل داشته باشم و کلید بزارم و رو صفحه نمایش بده؟
    چون همچین چیزیو قبلا دیدم
    درود بر کسانی که دعا دارند و ادعا ندارند
    نیایش دارند و نمایش ندارند
    حیا دارند و ریا ندارند
    رسم دارند و اسم ندارند…

  8. #8
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط tanha71 نمایش پست ها
    برای این کار می توانید از 2 روش استفاده کنید روش اول میتونید 2 عدد adc میکرو را اختصاص بدید به دو پتانسیومتر 10 کیلو اهم که با چرخش هریک از این پتانسیومتر ها (ولوم ها) مقدار دما و رطوبت را برای فعال کردن رله ها تعیین کنید. روش دوم هم میتوانید از 2 عدد کلید فشاری استفاده کنید که مقدار را برای فعال کردن رله ها تعیین کنید ، این برای کنترل روی داده های سنسور ها
    برای راه اندازی ال سی دی هم میتوانید از 5110 استفاده کنید که راه اندازیش هم برای شما راحت می باشد.
    لزومی نداره دستی کنترل بشه میخوام فقط تو کد تعریف کنم براش و خودش انجام بده، صفحه نمایش هم OLED حدودا یک اینچی گرفتم که تک رنگ آبی هستش و فکر نکنم فرق چندانی با 5110 داشته باشه، بنظرم این خوشگلتر بود 😀
    به هر حال کد نمایش رو OLED رو بالا گذاشتم و اینم یه کد دیگه برای تعریف کنترل دما و رطوبت، ولی صفحه نمایش این کد فرق میکنه... کدوما رو باید تغییر بدم؟ و چکار کنم که بجای فعال کردن فن، رله رو فعال کنه؟
    کد:
    #include "DHT.h"
     
    #define DHTPIN 2     // what pin we're connected to
    #define DHTTYPE DHT22   // DHT 22  (AM2302)
    #define fan 4
     
    int maxHum = 60;
    int maxTemp = 40;
     
    DHT dht(DHTPIN, DHTTYPE);
     
    void setup() {
      pinMode(fan, OUTPUT);
      Serial.begin(9600); 
      dht.begin();
    }
     
    void loop() {
      // Wait a few seconds between measurements.
      delay(2000);
     
      // Reading temperature or humidity takes about 250 milliseconds!
      // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
      float h = dht.readHumidity();
      // Read temperature as Celsius
      float t = dht.readTemperature();
      
      // Check if any reads failed and exit early (to try again).
      if (isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
      }
      
      if(h > maxHum || t > maxTemp) {
          digitalWrite(fan, HIGH);
      } else {
         digitalWrite(fan, LOW); 
      }
      
      Serial.print("Humidity: "); 
      Serial.print(h);
      Serial.print(" %\t");
      Serial.print("Temperature: "); 
      Serial.print(t);
      Serial.println(" *C ");
     
    }
    البته تو اینجا سنسور DHT22 تعریف شده که دقیق تره

  9. #9
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    آره کاملا شدنی هست ،
    منظورت از "کلیدی که خودش روشن میشه" رو نفهمیدم اما بازم هرچی باشه با uno که نباید مشکلی داشته باشی و همش شدنیه ، نمایشگر nokia 5110 مناسبه
    رله هم نمیتونی همینجوری یه رله وصل کنی به آردوینو باید از ماژول رله مخصوص آردوینو استفاده کنی (توان آردوینو اونقدا بالا نیست)
    و اینکه باید رله ت رو جوری انتخاب کنی که متناسب اون 220 ولت اختلاف پتانسیل و جریانت باشه که یه وقت خال نزنه (نچسبه)
    اگه رله مناسب رو پیدا کردی میتونی با رله روی ماژول جایگزین کنی یا با یه درایور ازش استفاده کنی
    اینا همه ش تو وبلاگ هست ، لطفا مطالعه فرمایید
    رله ای که تو خود ماژول هست تا چند ولت و چه آمپری میکشه؟ رله مناسب 220 ولت باید چطور باشه؟
    بین هر وظیفه چه کدی باید بنویسم؟
    و اینکه چه کدی باید بنویسم که یک رله رو بصورت دستی هم بشه خاموش کرد (علاوه بر اینکه خودش اتوماتیک روشن خاموش کنه) میخوام کلیدی بزارم که باهاش بشه کلا اونو فعال یا غیر فعال کرد، مثلا وقتی کلیدو فشار دادیم وقتی رطوبت پایین میاد دیگه رطوبت ساز رو روشن نکنه خودش و فقط وقتی فعال بود روشن کنه
    خیلی ممنون

  10. #10
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    من حالا برد هامو اماده کردم و برنامه شو ریختم و الان خودش به صورت اتوماتیک روی دما و رطوبت و روشنایی کنترل داره و عالی کار میکنه ولی مشکلی که هست هنوز نتونستم کاری کنم که رو صفحه OLED نشون بده دما و رطوبت رو (
    از کدهای دیگه استفاده کردم و چیزای دیگه نشون میده ولی خودم نمیتونم کد نمایش دادن میزان رطوبت و دما رو بنویسم لطفا کمکم کنین هرچی امتحان کردم نشد 2 روز وقت گذاشتم
    تو اتصالات و پین مشکلی نیس
    تو خود برنامه هم نشون میده میزان دما و رطوبتو
    7 تا پین داره در کل، تعریف کردم حالا میام void loop مینویسم تا بهش بگم بنویسه قبول نمیکنه
    و اینکه میخوام هر اتفاقی افتاد رو رو صفحه نمایش بنویسه، مثلا بنویسه چراغ روشن شد و...
    لطفا کمکم کنین
    ممنون

صفحه 1 از 3 123 آخرینآخرین

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

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

SEO by vBSEO