صفحه 3 از 3 نخستنخست 123
نمایش نتایج: از 21 به 27 از 27
Like Tree7 لایک

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

  1. #21
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    میخوام فقط یه نوشته بره
    البته دوتا نوشته س
    یکیشو با دستور Return حل کردم که وقتی سنسور بیشتر از 70 نشون داد نوشته Light بره و عمل کرد
    حالا تو نوشته دوم مشکل دارم که وقتی کلید فشار دادم یعنی state = HIGH شد رو صفحه PUMP بنویسه و وقتی LOW شد اون نوشته بره... ولی دستور Return اینجا دیگه کار نمیکنه
    وقتی مینویسم، PUMP و light باهم میاره!
    دوست عزیز به نظر میاد مشکل شما اینه که نمیتونی متن رو تغییر بدین
    کد ریز رو ملاحظه کنین:
    کد:
    void loop(void) {
     
      u8g.firstPage();  
      do {
       u8g.setFont(u8g_font_unifont);
      u8g.drawStr( 0, 22, "Hello ");
      } while( u8g.nextPage() );
      delay(1000);
      
      u8g.firstPage();  
      do {
       u8g.setFont(u8g_font_unifont);
      u8g.drawStr( 0, 22, "World");
      } while( u8g.nextPage() );
       delay(1000);
       
      u8g.firstPage();  
      do {
       u8g.setFont(u8g_font_unifont);
      u8g.drawStr( 0, 22, ":)");
      } while( u8g.nextPage() );
       delay(100);
    }

  2. #22
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    دوست عزیز به نظر میاد مشکل شما اینه که نمیتونی متن رو تغییر بدین
    کد ریز رو ملاحظه کنین:
    کد:
    void loop(void) {
     
      u8g.firstPage();  
      do {
       u8g.setFont(u8g_font_unifont);
      u8g.drawStr( 0, 22, "Hello ");
      } while( u8g.nextPage() );
      delay(1000);
      
      u8g.firstPage();  
      do {
       u8g.setFont(u8g_font_unifont);
      u8g.drawStr( 0, 22, "World");
      } while( u8g.nextPage() );
       delay(1000);
       
      u8g.firstPage();  
      do {
       u8g.setFont(u8g_font_unifont);
      u8g.drawStr( 0, 22, ":)");
      } while( u8g.nextPage() );
       delay(100);
    }
    این کد کل صفحه رو پاک میکنه؟
    مشکل اینجاس که تو صفحه نوشته های ثابت دیگه هم هست که مثلا دما رو نوشته و از Next page استفاده کردنی دما هم میره

    این کدی هستش که کلمه LIGHT رو وقتی سنسور کمتر از 70 نشون میده رو صفحه مینویسه و وقتی بیشتر میشه از صفحه میره و خوب کار میکنه:
    کد:
        int sensorValue = analogRead(sensorPin);
      u8g.setFont(u8g_font_5x8);
      //u8g.setFont(u8g_font_5x8);
       u8g.setPrintPos(106, 60);
       u8g.print(sensorValue);
    
    
       if (sensorValue < 70) {
       u8g.setFont(u8g_font_5x8);
      //u8g.setFont(u8g_font_5x8);
       u8g.drawStr(90, 10, "LIGHT");
    } else {
        return;
    }
    }
    حالا یه نوشته هم میخوام ظاهر شه (PUMP) با فشار دادن کلید که state = HIGH میشه،
    و وقتی دوباره فشار دادیم که LOW شد اون نوشته از صفحه بره (تو همون صفحه)

    وقتی مثل کدهای بالایی براش تعریف میکنم و return استفاده میکنم هر دو دستور رو باهم قاطی میکنه
    یعنی باهم مینویسه LIGHT و PUMP و باهم میرن!
    وقتی شرط هردوتاش برقرار شد هر دورو باهم مینویسه
    ، وقتی برقرار نبود هیچ کدومو نمینویسه!
    ویرایش توسط Smead : 05-04-2016 در ساعت 07:32 PM

  3. #23
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    این کد کل صفحه رو پاک میکنه؟
    مشکل اینجاس که تو صفحه نوشته های ثابت دیگه هم هست که مثلا دما رو نوشته و از Next page استفاده کردنی دما هم میره

    این کدی هستش که کلمه LIGHT رو وقتی سنسور کمتر از 70 نشون میده رو صفحه مینویسه و وقتی بیشتر میشه از صفحه میره و خوب کار میکنه:
    کد:
        int sensorValue = analogRead(sensorPin);
      u8g.setFont(u8g_font_5x8);
      //u8g.setFont(u8g_font_5x8);
       u8g.setPrintPos(106, 60);
       u8g.print(sensorValue);
    
    
       if (sensorValue < 70) {
       u8g.setFont(u8g_font_5x8);
      //u8g.setFont(u8g_font_5x8);
       u8g.drawStr(90, 10, "LIGHT");
    } else {
        return;
    }
    }
    حالا یه نوشته هم میخوام ظاهر شه (PUMP) با فشار دادن کلید که state = HIGH میشه،
    و وقتی دوباره فشار دادیم که LOW شد اون نوشته از صفحه بره (تو همون صفحه)

    وقتی مثل کدهای بالایی براش تعریف میکنم و return استفاده میکنم هر دو دستور رو باهم قاطی میکنه
    یعنی باهم مینویسه LIGHT و PUMP و باهم میرن!
    وقتی شرط هردوتاش برقرار شد هر دورو باهم مینویسه
    ، وقتی برقرار نبود هیچ کدومو نمینویسه!
    برای اینکه تو این کتابخونه بتونی درست از پرینت استفاده کنی باید از اون حلقه و nextpage استفاده کنی
    خب همش رو پاک کنه شما اون قسمتی رو که میخوای همیشه باشه تو همه دستور های پرینتت قرار بده
    لایک کردن

  4. #24
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    برای اینکه تو این کتابخونه بتونی درست از پرینت استفاده کنی باید از اون حلقه و nextpage استفاده کنی
    خب همش رو پاک کنه شما اون قسمتی رو که میخوای همیشه باشه تو همه دستور های پرینتت قرار بده
    ممنون امتحان میکنم.
    یه سوال دیگه؛
    چطور میتونم تو این کد:
    کد:
    if(h > 80 || t > 30) {
          digitalWrite(RELAY1, LOW);
      } else {
         digitalWrite(RELAY1, HIGH); 
      }
    کاری کنم دما وقتی بیشتر از 30 درجه رسید فن کار کنه تا بیاد برسه به 25 درجه بعد خاموش شه؟
    تو حالت عادی که نوشتم ببشتر از 30 شدنی کار میکنه و بلافاصله میاد 30 و دوباره زود میرسه 31 و فن کار میکنه...

  5. #25
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط Smead نمایش پست ها
    ممنون امتحان میکنم.
    یه سوال دیگه؛
    چطور میتونم تو این کد:
    کد:
    if(h > 80 || t > 30) {
          digitalWrite(RELAY1, LOW);
      } else {
         digitalWrite(RELAY1, HIGH); 
      }
    کاری کنم دما وقتی بیشتر از 30 درجه رسید فن کار کنه تا بیاد برسه به 25 درجه بعد خاموش شه؟
    تو حالت عادی که نوشتم ببشتر از 30 شدنی کار میکنه و بلافاصله میاد 30 و دوباره زود میرسه 31 و فن کار میکنه...


    کد:
    int a;
    if( t > 30) 
          a=1;
    if( t <25) 
          a=0;
    if (a==1)
    // turn on the fan ;
    if (a==0)
    // turn off the fan ;
    ویرایش توسط siib : 05-06-2016 در ساعت 11:45 AM
    لایک کردن

  6. #26
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    کد:
    int a;
    if( t > 30) 
          a=1;
    if( t <25) 
          a=0;
    if (a==1)
    // turn on the fan ;
    if (a==0)
    // turn off the fan ;
    خیلی ممنون
    حالا اینو باید بجای دستور بالایی بزارم؟
    h رو هم به همین ترتیب میشه اضافه کرد بهش
    لایک کردن

  7. #27
    Senior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    116
    یه دستور دیگه گذاشتم و چهار تا سیم گذاشتم تو آب تا وضعیت سطح آب رو بنویسه، یکیش مثبته وصله به 5 ولت و 3 تای دیگه پایه های A2,A3,A4 که با فاصله های مشخص وصل کردم به یه ظرف اینم کد یه قسمتش:
    کد:
    int l = A2;
    int a = A3;
    int f = A4;
    
    Void draw(void)
    {
    analogRead(f);
    if (f = LOW) {
    digitalWrite(motor, HIGH);
    u8g.setFont(u8g_font_5x8);
    u8g.drawStr(85, 32, "NO WATER");
    } else {
    digitalWrite(motor, LOW);
    u8g.setFont(u8g_font_5x8);
    u8g.drawStr(85, 32, "FULL");
    }
    البته کد زیاده اینجا خلاصه کردم، قسمت اصلی همینه.
    l و a رو هم به همین ترتیب نوشتم.
    مشکل اینه که تو صفحه فقط FULL مینویسه و با گذاشتن پین A4 کنار 5v اتفاقی نمیوفته!

    لطفا راهنمایی کنین کد رو باید چطور بنویسم
    پایه A4 رو با یه مقاومت 10k وصل میکنم GND بازم اتفاقی نمیوفته
    لایک کردن

صفحه 3 از 3 نخستنخست 123

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

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

SEO by vBSEO