!Hooman 10133 اشتراک گذاری ارسال شده در 7 اردیبهشت، ۱۳۹۶ سلام یه کمکی از دوستان میخواستم ، پیشاپیش از لطفتون ممنونم من دارم یه برنامه برای یه برد الکترونیکی مینویسم که تو قسمت برنامش مشکل اساسی دارم! هر کاری میکنم بازم مشکلم حل نمیشه ( البته در حد ابتدایی بلدم ولی این موضوع خیلی پیچیده هم نیست!) زبانش به زبان ++C شبیه هست. و چیزی که از برنامه میخوام اینه که ماکزیمم و مینیمم رو در طول اجرای برنامه ثابت نگه داشته باشه ولی الان آخرین تغییرات رو لحاظ میکنه! بطور مثال اگه دمای ماکزیمم 20 باشه و دما افت کنه بیاد 15 ، صفحه نمایش Max=20 و Min=15 رو نشون میده و اگه دما بازم افت کنه تا 12 بیاد Max=20 و Min=12 رو نشون میده ( که تا اینجاش درسته ) ولی همین که دما بشه 13 خروجی اینطور میشه Max=13 و Min=12 ، ماکزیمم عدد 20 رو بیخیال میشه و 13 رو ماکزیمم فرض یکنه !!! که این اشتباه هست! امیدوارم منظورمُ خوب رسونده باشم. کل چیزی که مد نظر هست اینه ک کمترین و بیشترین مقدار تو کل پروسه اجرا حفظ بشه کد برنامه ( کد های رنگ سبز برای LCD برد و تو منطق برنامه تاثیری نداره و کد های رنگ قرمز به منطق برنامه بر می گرده ! کل برنامه با 2 تا IF نوشته شده ولی نمیدونم چرا جواب نمیده ) #include LiquidCrystal lcd (14,15,16,17,18,19,20); float reading , temperature; float maximum , minimum , space ; byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; void setup() { lcd.begin(20,4); lcd.createChar(1, degree); lcd.setCursor(0,0); lcd.print(" DIGITAL "); lcd.setCursor(0,1); lcd.print(" TEMPERATURE "); delay(5000); lcd.clear(); } void loop() { /*---------Temperature-------*/ reading=analogRead(A0); temperature=((reading*5.0)/1023.0)*100; delay(1000); /*------Display Result------*/ //lcd.clear(); lcd.setCursor(1,0); lcd.print("Temp Now: "); lcd.setCursor(11,0); lcd.print(temperature); lcd.write(1); lcd.print("C"); delay(1000); maximum = space ; minimum = space ; space = temperature ; if ( space > maximum ){ maximum = space ; lcd.setCursor(0,1); lcd.print(" Max.Temp: "); lcd.setCursor(11,1); lcd.print(maximum); lcd.write(1); lcd.print("C"); delay(1000); } if ( space minimum = space ; lcd.setCursor(0,2); lcd.print(" Min.Temp: "); lcd.setCursor(11,2); lcd.print(minimum); lcd.write(1); lcd.print("C"); delay(1000); } } 6 لینک به دیدگاه
Mehdi.Aref 26780 اشتراک گذاری ارسال شده در 8 اردیبهشت، ۱۳۹۶ سلام یه کمکی از دوستان میخواستم ، پیشاپیش از لطفتون ممنونم من دارم یه برنامه برای یه برد الکترونیکی مینویسم که تو قسمت برنامش مشکل اساسی دارم! هر کاری میکنم بازم مشکلم حل نمیشه ( البته در حد ابتدایی بلدم ولی این موضوع خیلی پیچیده هم نیست!) زبانش به زبان ++C شبیه هست. و چیزی که از برنامه میخوام اینه که ماکزیمم و مینیمم رو در طول اجرای برنامه ثابت نگه داشته باشه ولی الان آخرین تغییرات رو لحاظ میکنه! بطور مثال اگه دمای ماکزیمم 20 باشه و دما افت کنه بیاد 15 ، صفحه نمایش Max=20 و Min=15 رو نشون میده و اگه دما بازم افت کنه تا 12 بیاد Max=20 و Min=12 رو نشون میده ( که تا اینجاش درسته ) ولی همین که دما بشه 13 خروجی اینطور میشه Max=13 و Min=12 ، ماکزیمم عدد 20 رو بیخیال میشه و 13 رو ماکزیمم فرض یکنه !!! که این اشتباه هست! امیدوارم منظورمُ خوب رسونده باشم. کل چیزی که مد نظر هست اینه ک کمترین و بیشترین مقدار تو کل پروسه اجرا حفظ بشه کد برنامه ( کد های رنگ سبز برای LCD برد و تو منطق برنامه تاثیری نداره و کد های رنگ قرمز به منطق برنامه بر می گرده ! کل برنامه با 2 تا IF نوشته شده ولی نمیدونم چرا جواب نمیده ) #include LiquidCrystal lcd (14,15,16,17,18,19,20); float reading , temperature; float maximum , minimum , space ; byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; void setup() { lcd.begin(20,4); lcd.createChar(1, degree); lcd.setCursor(0,0); lcd.print(" DIGITAL "); lcd.setCursor(0,1); lcd.print(" TEMPERATURE "); delay(5000); lcd.clear(); } void loop() { /*---------Temperature-------*/ reading=analogRead(A0); temperature=((reading*5.0)/1023.0)*100; delay(1000); /*------Display Result------*/ //lcd.clear(); lcd.setCursor(1,0); lcd.print("Temp Now: "); lcd.setCursor(11,0); lcd.print(temperature); lcd.write(1); lcd.print("C"); delay(1000); maximum = space ; minimum = space ; space = temperature ; if ( space > maximum ){ maximum = space ; lcd.setCursor(0,1); lcd.print(" Max.Temp: "); lcd.setCursor(11,1); lcd.print(maximum); lcd.write(1); lcd.print("C"); delay(1000); } if ( space minimum = space ; lcd.setCursor(0,2); lcd.print(" Min.Temp: "); lcd.setCursor(11,2); lcd.print(minimum); lcd.write(1); lcd.print("C"); delay(1000); } } تو این برنامه ماکزیمم و مینیمم رو هردو برابر مقدار space در نظر گرفتید و به نوعی ماکزیمم مینیمم ثابت در نظر گرفته شده و تو هردو برابر space هست و مقایسه ای بین ورودی و ماکزیمم و مینیممهای قبلی صورت نگرفته پیشنهاد من اینه که نیازی نیست از ابتدا ماکزیمم مینیمم رو تعیین کنید بلکه تو خود برنامه بدست بیارید من همون قسمتهای قرمز رو با این کد عوض میکنم برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام با این کد تو هربار فرخوانی دما اول مقدار ماکزیمم و مینیمم رو بدست میاریم بعد میتونیم تو نقاط مختلف برنامه ازش استفاده کنیم 6 لینک به دیدگاه
!Hooman 10133 مالک اشتراک گذاری ارسال شده در 8 اردیبهشت، ۱۳۹۶ تو این برنامه ماکزیمم و مینیمم رو هردو برابر مقدار space در نظر گرفتید و به نوعی ماکزیمم مینیمم ثابت در نظر گرفته شده و تو هردو برابر space هست و مقایسه ای بین ورودی و ماکزیمم و مینیممهای قبلی صورت نگرفته پیشنهاد من اینه که نیازی نیست از ابتدا ماکزیمم مینیمم رو تعیین کنید بلکه تو خود برنامه بدست بیارید من همون قسمتهای قرمز رو با این کد عوض میکنم برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام با این کد تو هربار فرخوانی دما اول مقدار ماکزیمم و مینیمم رو بدست میاریم بعد میتونیم تو نقاط مختلف برنامه ازش استفاده کنیم من ی تغییراتی دادم درست شد اول اومدم طبق گفته شما این قسمت رو حذف کردم خب مشکل اصلی حل شد برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام ولی مشکل اینجا بود که مقدار اولیه نداشتن! برای همین خارج از لوپ ماکزیمم رو 0 و مینیمم رو 100 قرار دارم از طرفی شما space = minimum; قرار دارین که باید بر عکسش قرار بگیره! چون اینطوری مقدارش تو خروجی صفر نشون داده میشد ممنوونم 4 لینک به دیدگاه
!Hooman 10133 مالک اشتراک گذاری ارسال شده در 8 اردیبهشت، ۱۳۹۶ اگر بخوام ی برنامه شمارنده بسازم دقیقا چطور میشه ؟ شمارنده معکوس به طور مثال از 500 به سمت صفر بیاد و بعدش ادامه برنامه ! 3 لینک به دیدگاه
سارا-افشار 36437 اشتراک گذاری ارسال شده در 8 اردیبهشت، ۱۳۹۶ مثل اينكه مشكلتون حل شد ه ولي براي من يه سوالي ايجاد شد نقش متغير space اينجا چيه ؟ temperature داره مدام دماي محيط رو ميگيره درسته ؟ 4 لینک به دیدگاه
!Hooman 10133 مالک اشتراک گذاری ارسال شده در 8 اردیبهشت، ۱۳۹۶ مثل اينكه مشكلتون حل شد ه ولي براي من يه سوالي ايجاد شد نقش متغير space اينجا چيه ؟ temperature داره مدام دماي محيط رو ميگيره درسته ؟ الان که دقت کردم واقعا نقشی نداره ! حرفتون درسته در واقع یه برنامه نوشته شده رو ویرایش کردم ، میتونم حذفش کنم منظورتون اینه متغیر temperature خودش میتونه داده ها رو مستقیم تو maximum و minimum قرار بده دیگه ؟ ___________________________________________________________________________________ پست قبلی که فرستادم ، اگه بخوام با حلقه For بنویسم و شمارنده من به عدد مورد نظر رسید ، برنامه از For رد میشه یا باید شرط بذارم و بعدش دستور Break راسش میخوام علمی و با منطق درست یاد بگیرم 2 لینک به دیدگاه
!Hooman 10133 مالک اشتراک گذاری ارسال شده در 8 اردیبهشت، ۱۳۹۶ شمارنده رو ب بالا درست کار میکنه و بر عکسش رو نمیتونم جواب بگیرم! برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 1 لینک به دیدگاه
!Hooman 10133 مالک اشتراک گذاری ارسال شده در 9 اردیبهشت، ۱۳۹۶ مشکل پست قبلیم حل شده ! الان چند روزه رو این قسمت مشکل دارم مثلا میخوام بگم تو یک سری دماها مثلا 25 و 26 عبارت نرمال رو نمایش بده ولی الان رو همه ی دماها نمایش میده !! حتی رو 20 هم که واسش شرط گذاشتم نرمال نشون میده ی راه حل دیگه داره که ازش جواب گرفتم، برای هر عدد ی شرط بذارم که خیلی برنامه طولانی میشه!! یه متغیر temp با int تعریف کردم برای اینکه اعشار رو برداره و عدد صحیح بده مگه این علامت || OR نیست؟!! که بشه گفت یا 25 یا 26 اومد فلان کار رو بکن برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام لینک به دیدگاه
Babak.PHP 565 اشتراک گذاری ارسال شده در 15 اردیبهشت، ۱۳۹۶ برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 2 لینک به دیدگاه
!Hooman 10133 مالک اشتراک گذاری ارسال شده در 15 اردیبهشت، ۱۳۹۶ برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام خیلی خیلی ممنوون که جواب دادین ببخشید ی سوال دیگه ! سنسور برای اینکه ضریب خطا اندازه گیریش پایین بیاد میگن بهتره 10 بار ورودی رو بخونه و میانگینش رو تو خروجی نمایش بده طبق برنامه زیر چطور باید بعدش حلقه FOR بنویسم ؟ من دو تا متغیر avg و sum تعریف کردم و حلقه رو نوشتم ، ولی جواب نداد .. برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 1 لینک به دیدگاه
ارسال های توصیه شده