به نام خدا : زیباترین دماسنج با lcd گرافیکی نسخه2 : این پروژه رو من و آقای رامین اصیلی (رفیق خودمه ^_^) درست کردیم؛ این پروژه نسخه دوم پروژه [زیباترین دماسنج با lcd گرافیکی] هستش که یه تغییراتی بهش داده شده از جمله : 1) زیبا تر شدن!!! 2) استفاده از یک عکس در پروژه>>>بر خلاف پروژه قبل که توش از N تا عکس استفاده شده بود. 3) کاهش حجم کدهای پروژه. 4) بهبود کدهای پروژه و عملکرد بهتر؛ این پروژه ( دماسنج با lcd گرافیکی ) دمای 0 تا 50 درجه رو اندازه میگیره و درش از سنسور LM35 استفاده شده و LCD گرافیکیش هم KS0108 هستش.
دیگه داستان گفتن بسه>>>بریم سر اصل مطلب o_O
مدار پروژه تو پروتئوس :
کدهای پروژه : کد های پروژه رو توضیح نمیدم>>>چون کسی که میاد سراغ یان پروژه یعنی به حد قابل قبولی رسیده و دیگه لازم نیست کد ها رو براش توضیح بدم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
#include <mega32.h> #include <delay.h> #include <stdlib.h> #include "Includes/GLCD.h" //********************************************************* //////////////////////////////////////////////////////////// flash unsigned char TEMP_1[]={ ۲۵۵,۱,۲۵۳,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵, ۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵, ۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۵,۲۵۳, ۱,۲۵۵,۲۵۵,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰, ۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰, ۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰, ۰,۲۵۵,۰,۲۵۵,۲۵۵,۰,۲۵۵,۰,۰,۰,۱۹۲,۲۲۴,۲۴۰,۲۴۸,۲۵۲,۲۵۲,۲۵۴,۲۵۴,۲۵۴,۲۵۵,۲۵۵,۲۵۵,۲۵۴,۲۵۴, ۲۵۴,۲۵۲,۲۵۲,۲۴۸,۲۴۰,۲۲۴,۱۹۲,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰, ۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰, ۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۲۵۵,۲۵۵,۰,۲۵۵,۰,۵۶,۲۵۵,۲۵۵, ۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵, ۲۵۵,۲۵۵,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹, ۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹, ۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹, ۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹, ۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۱۲۹,۶۶,۶۰,۰,۰,۰,۲۵۵,۰,۲۵۵,۲۵۵,۰,۲۵۵,۰,۰,۱,۷,۱۵,۳۱,۶۳,۱۲۷, ۱۲۷,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۲۵۵,۱۲۷,۱۲۷,۶۳,۳۱,۱۵,۷,۱,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰, ۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰, ۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰,۳,۰,۳,۰,۳,۰,۳۱,۰, ۰,۰,۰,۰,۰,۰,۲۵۵,۰,۲۵۵,۲۵۵,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۱,۱,۱,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰, ۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰, ۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰, ۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۲۵۵,۲۵۵,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۰, ۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰, ۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰, ۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰,۲۵۵,۰,۰,۰,۰,۰,۰,۰, ۲۵۵,۰,۲۵۵,۲۵۵,۱۲۸,۱۹۱,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰, ۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰, ۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰, ۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰, ۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰, ۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰,۱۶۰, ۱۶۰,۱۶۰,۱۹۱,۱۲۸,۲۵۵ }; //********************************************************* int temp() { ADCSRA = 0b11000000; while (ADCSRA.4==0); ADCSRA.4=1; return ADCW;//فرستادن اطلاعات } //******************************************************************** void main(void) { #pragma used+ int i,j,T1,T2=0,color=1; char str[20]; unsigned char str1[] = "www.DMF313.ir"; unsigned char str2[] = "Thermometer with graphical lcd"; #pragma used- DATADDR = 0xff; DDRD.7=1; DDRC = 0x0F; glcd_on(); glcd_clear(); DDRA=0X00; ADMUX=0b11000000; ADCSRA.6=1; bmp_disp(TEMP_1,0,0,127,7); while (1) { T1=temp()/4; glcd_puts("TEMP IS: ",40,1,0,1,0); itoa(T1,str); glcd_puts(str,105,1,0,1,0); switch(T1) { case 0:i=0;break; case 1:i=1;break; case 2:i=2;break; case 3:i=3;break; case 4:i=4;break; case 5:i=5;break; case 6:i=6;break; case 7:i=7;break; case 8:i=8;break; case 9:i=9;break; case 10:i=10;break; case 11:i=12;break; case 12:i=14;break; case 13:i=16;break; case 14:i=18;break; case 15:i=20;break; case 16:i=22;break; case 17:i=24;break; case 18:i=26;break; case 19:i=28;break; case 20:i=30;break; case 21:i=32;break; case 22:i=34;break; case 23:i=36;break; case 24:i=38;break; case 25:i=40;break; case 26:i=42;break; case 27:i=44;break; case 28:i=46;break; case 29:i=48;break; case 30:i=50;break; case 31:i=52;break; case 32:i=54;break; case 33:i=56;break; case 34:i=58;break; case 35:i=60;break; case 36:i=62;break; case 37:i=64;break; case 38:i=66;break; case 39:i=68;break; case 40:i=70;break; case 41:i=72;break; case 42:i=74;break; case 43:i=76;break; case 44:i=78;break; case 45:i=80;break; case 46:i=82;break; case 47:i=84;break; case 48:i=86;break; case 49:i=88;break; case 50:i=89;break; //default : } if(T1>=0 && T1<=50) { //glcd_clear(); //کار تابع زیر اینه که بررسی میکنخ که آیا دما تغییر کرده یا نه //اگه دما تغییر کرده بود کد ها اجرا میشوند. if(T1!=T2) { //پاک کردن دما--منظور اون خط ها هستش for(j=0;j<=90;j++) { if(j>=89)v_line(30+j,26,4,0,0); else{v_line(30+j,25,6,0,0);v_line(30+j+1,25,6,0,0);} } for(j=0;j<=i;j++) { v_line(30+j,25,6,0,1); v_line(30+j+1,25,6,0,1); } T2=T1; } } }; } |
توجه : من برا عملی بستن پروژه یکم این پروژه رو تغییر دادم تا تو بستن مدار کارمون راحت تر بشه ؛ در زیر پروژه ویرایش شده+فیلم عملکرد پروژه رو قرار میدم.
فیلم پروژه :
مهمان
سلام
امکامش هست اموزش راه اندازی سنسور رطوبت sht10یا75 بذارید
مهمان
سلام.
اگر پروزه همش دمای۰ رو نشون میده از lm34کنید.
مهمان
سلام

خیلی ممنون
پروژه ی خوب و کاملی به نظر میرسه .
همچنین از قرار دادن عکس و توضیح ها کوچیک توی کد خیلی ممنونم . خیلی کمک می کنه که متوجه بشیم پروژه رو
مهمان
کارت درست، به حق امام حسین (ع) ، خداوند خیر دنیا و آخرت به شما بده.
مهمان
نکته 1 :
بین 10 تا 50 رو خوب رو ال سی دی گرافیکیت نمایش میدی
اما بین 0 تا 9 رو نه : مثلا دمای 6 رو 60 نشون میده و این یعنی اون صفر بعد از 9 رو تو نمایش باید پاک کنی.
نکته 2 :
یه برنامه نویس حرفه ای این جمله رو اینطوری مینویسه :
ADCSRA.4=1
به جاش در ساده ترین فرمش میتونی بنویسی :
ADCSRA=(1<<4);
نکته 3 : مسئله switch رو هم که مشخصه . این همه کد نیاز نداری.
اینکار یعنی اتلاف زمان و مصرف ROM
نکته 4 :
به یاد داشته باش که در کامپایلرت هیچ وقت توضیحات رو فارسی ننویسی
تو از کجا میدونی که من میتونم توضیحات فارسی نوشته شده در پروژه ت رو به صورت فارسی تو کامپایلر خودم مشاهده کنم.
خیلی وقتا یه برنامه نویس به جای استفاده از کامپایلر از نوت پد ممکنه برای بازبینی فایلهای هدر خودش استفاده کنه.
نکته 5 :
نمیدونم رشته های str1 ,str2 رو برای دل خودت تعریف کردی.
عمدا هم اومدی اونا رو بین pragma used+ , pragma used – قرار دادی . و با اینکار به کامپایلرت گفتی که تو بیا اینا رو تعریف کن ولی اگر من جایی ازشون استفاده نکردم یه وقت بهم گیر ندی ( هشدار) که چرا تعریف کردی و استفاده نکردی…
ببین دادا اگه میخوای مثلا سایتت رو ویا هر چیزی رو تبلیغ کنی تو هدر فایلهات بهترین راهش استفاده از کامنته . خیلی شیک و مجلسی و حرفه ای اینکار رو انجام بده . نه تعریف کردن یک رشته که خودش باعث مصرف بی رویه حافظه sram ت میشه.
نکته 6 :
بببین متغیر T1 ت بالفرض مثال یه عددی همینجوری مثل 120 گرفت . اون وقت تو قسمت switch ت چه برنامه ای براش داری ؟ طبیعتا هیچی .
من نمیدونم چرا قسمت default ش رو پاک کردی ولی نباید پاک میکردی. همیشه به یاد داشته باش که ممکنه ورودی switch تو غیر از اون چیزی باشه که تو توقع داری . اگه default رو نذاری ممکنه بعی اوقات bug های ناخواسته برای برنامه ت پیش بیاد.
نکته 7 :
برای خوانایی برنامه ت میتونستی متغیر TEMP_1 رو که تو حافظه ROM یا program space و یا flash هست رو تویه یه هدر فایل دیگه ای تعریف میکردی . اینطوری به خوانایی برنامه ت کمک کردی.
نکته 8 :
متغیر color رو کجا استفاده کردی ؟
نکته 9 :
این خیلی قشنگ بوده . چون شما از کتابخانه عربی / فارسی / انگلیسی برای ال سی دی گرافیکی با چیپ KS0108 استفاده کردی ، از عکس فارسی – متون فارسی . البته فقط برای نمایش متن روی ال سی دی استفاده می کردی. (نه برای توضیحات داخل کامنت )
شما توضیحاتت رو فارسی نوشتی ولی اون چیزی که قراره رو ال سی دی نشون بدی انگلیسیه.
نکته 10 :
به دل نگیری .خودت گفتی نظر بده . منم نظر دادم و خواستم یه کم منم کمک کرده باشم .
موفق باشی
نویسنده این مطلب
سلام
ممنون از شما
هر کسی این قدر وقت نمیزاره که این نکات رو به کسی تذکر بده.
مهمان
سلام واقعا خسته نباشید، سایتتون خیلی عالیه
مهمان
سلام آقا مهدی :
داداش من این تصویر دماسنج رو روی lcd دیدم و الان برای خودم با بسکام و به قول خودتون با n تا عکس درست کردم بدون این که ذره ای از مطالب شما کپی کنم ، فقط عکس رو دیدم و دیدم ایده ی جالبیه ، راضی هستین این پروژه ای رو که من درست کردم با بسکام انتشار بدم ؟
نویسنده این مطلب
سلام
مشکلی نداره
اگه پولی ارائه بدین به پیشرفت در این حوزه کمک کردین و اگه هم رایگان ارائه بدین بازم کمک کردین
فقط یه عکس از پروژت هم اینجا برا ما بار تا ببینم پروژه ات رو و کیف کنیم
مهمان
ممنون ، پس به من هم یک سر بزنین ، اونجا گذاشتم الان ، منتظر تایید شما بودم از صبح والا . . .
نظر هم بدین که دیگه هیچی . . .
AVRMICRO.BLOG.IR
تازه راش انداختم ، انشالله کاملش میکنم . . .
مهمان
آقا دمت گرم . . .
چشم کارایی که گفتین رو انجام میدم . . .
بازم ممنون
مهمان
تشکر
به نیابت از شما برای شادی روح شهدای مدافع حرم فاتحه نثار میکنیم
مهمان
خسته نباشی داداش
مهمان
سلام ممنون از سایت خوبتون
یه سوال دارم اسم این برنامه ای که عکس میدید و کد میگیرید چیه ؟
واینکه مثلا من عکس دماسنجو از کجا باید بیارم بدم به برنامه؟
راهنماییم کنید ممنون میشم
نویسنده این مطلب
سلام
تو مطلب مربوط به آموزش این lcd توی سایت کامل توضیح دادم(lcd گرافیکی)
مهمان
بله چند بار دیدم اما اون نرم افزار تبدیل عکس به کدو ندیدم
نویسنده این مطلب
مطلب زیر رو ببین
ته مطلب در باره نرم افزار گفتم و تو فایلی که برا دانلود گزاشتم فایل نرم افزار رو هم گزاشتم
https://dmf313.ir/%D9%BE%D8%B1%D9%88%DA%98%D9%87-lcd-%DA%AF%D8%B1%D8%A7%D9%81%DB%8C%DA%A9%DB%8C-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D9%85%D9%84/
مهمان
سلام
واقعا که سایت عالی و کاملی دارید
ازتون خیلی ممنونم
من که خیلی از مطالبتون استفاده کردم
مهمان
عالی عزیز دل
خیلی خوشگله
البته اگه رنگی بود که دیگه قشنگتر هم میشد
مهمان
خیلیییییییییییییییییییییییییییییییییییییییییییییییییییی ازتون ممنوووووووووووووووووووووووووونم دمتووووووووووووووووووون گرررررررررررررررررررررم

مهمان
سلام من به پروژه اتمل نیاز دارم میشه کمکم کنید؟
نویسنده این مطلب
سلام
من با اتمل کار نمیکنم
مهمان
مرسی دمت گرم
نویسنده این مطلب
خواهش…دم شما هم گرم
نویسنده سایت
اسم مدار ۴ لایه خوبه و راحت. اما هزینه اش خیلی بالاتره نسبت به بقیه. والبته اکثرا میدند خارج و میدن به مشتری داخلی.
برای کشیدن PCB هم نکات خاصی رو باید لحاظ کنید.
نویسنده سایت
آره یک و دو رو که میزنن
ولی اونجوری که منم شنیدم چند لایه رو تو ایران نمیتونن بزنن
دمت گرم
مهمان
دمت گرم زحمت کشیدی
میگم خبر داری برد چند لایه رو تو ایران میزنن یا نه ؟
نویسنده این مطلب
۱ و ۲ رو مطمئن هستن……۲ به بالا نمیدونم…..از یکی شنیدم که تجهیزاتش تو ایران نیست و اونا سفارش میدن به چین…..البته شنیدم و مطمئن نیستم
مهمان
عالي بود مرسي
نویسنده این مطلب
به چه عجب کسی نظر داد…….
…….دمت گرم داش که نظر دادی 
خداییش نظر بدید بابا …آدم این طوری حال کار کردن نداره وقتی میبینه کسی برا کاراش ارزش قائل نیست و حتی یه نظر کوچولو نمیده
مهمان
خیلی پروژه خوبیه ممنون
مهمان
خیلی زحمت کشیدی دستت درد نکنه .ممنون
نویسنده این مطلب
خواهش داش….
نویسنده سایت
از خط 37 تا خط 137 رو میشه با 5 خط جمعش کرد.

اگر T بین 0 تا 9 بود، i میشه خود T.
اگر T بین 10 تا 50 بود، i میشه دو تا منهای 10.
البته قصدم فقط اینه که کسی که کد رو نگاه میکنه نترسه
اون ثابت TEMP_1 رو هم اگر در یک فایل جدا نوشته و به برنامه اضافه کنید، بهتره. کد خواناتر میشه.
نویسنده این مطلب
آره به جای switch هم میشد از چند تا حلقه ملقه استفاده کرد تا حجم کد ها کمتر بشه…
در مورد TEMP_1 هم چی بگم والا…