|
السلام عليكم
هذه الفكرة طيبة جداا
const char chot =30;
const int price_initial=450;
هل ممكن عمل
char
لحساب الامتار مثلا مئت متر
const char meter =100;
واخرى لحساب
النتبضات لنا كل سيارة لها نبضات لدخل كل نوع لهو نبضات و التعديل على كل سيارة
const char pulse =1000;
و دالة اخرى للثواني
const char seconde =10;
طيب اخي ساشرح لكم موضوع
الحريف ياخذ السيارة في النهار من الساعة 5 صباحا الى 9 ليلا بثمن
0.125 لركوب و 30 كل نلت متر او 10 ثواني
و من الساعة 9 ليلا الى 5 صباحا يتغير العد اوتومتيكي
ليصبح 200 لركوب و 45 لكل من المترار المقطوعة و ل10 ثواني انتضار
اصبح الامر معقد بعض الشيئ
اخي اشرح لي منفضلكم الكود
void calculate_price()
{
// value_start=125 start value
// car is stop then Price =125 , add 30 every 10sec
// car running then Price =125 , add 30 every 100 meter
// speed =m/s, speed =no. puls per second . then if speed=100 add to Price 30
if(distance>=100){value_start=value_start+(chot*(d istance/100)); distance=distance%100;} // ex if distance =150m then distance/100=1 and must be put 50 in distance not put 0
else if(distance<2 && Price_cont>5000){price_cont=0; value_start +=chot;}
//value_start=123456
Price[0]=value_start/100000;//123456/100000= 1
Price[1]=value_start/10000 %10;//123456/10000= 12 %10=2
Price[2]=value_start/1000%10;//123456/1000= 123 %10=3
Price[3]=value_start/100%10;//123456/100= 1234 %10=4
Price[4]=value_start/10%10;//123456/10= 12345 %10=5
Price[5]=value_start%10;// %10=6
// cance number if last number =0 ==> mean oFF 7seg
if(Price[0]==0 && Price[1]==0) Price[0]=11;// 11 mean 7seg oFF
if(Price[0]==11 && Price[1]==0)Price[1]=11;// 11 mean 7seg oFF
check_price=0
|
السلام عليكم
كود:
void calculate_price()
مهمتها احتساب اسعار وهنا سوف نقارن المسافه هل هي اكبر من 100 متر او اقل من 2متر او 0 وضعت مسافه اقل من 2 يكون افضل من قول شوف هل مسافه ==0 لانه قد لايتحقق شرط وبتالي توجد مرونه في تنفيذ الشرط
كود:
if(distance>=100){value_start=value_start+(chot*(distance/100)); distance=distance%100;}
اذا مانت سياره تتحرك فانه كل 100 متر سوف يتم أحتساب سعر
ملاحظه اذا كانت مسافه =150 متر طبعا هي اكبر من 100 اذن سعر يصبح
(value_start=value_start+(chot*(distance/100 سوف تلاحظ ان 150/100=1 لماذا لان distance عدد صحيح وبتالي صار هناك خطأ في سعر وهو 50 متر ولحل هذه مشكله علينه اضافه ماتبقى من امتار ليجمع عليها امتار الجديده
ولهذا تلاحظ
كود:
distance=distance%100;
وبتالي سوف تصبح قيمه مسافه =50 وسوف يتم اضافه عليها مسافه جديده وبتالي نعالج خطأ في احتساب اسعار
اما هذا الكود راح يخزن قيمه السعر في مصفوفه لكي نعرضها في ما بعد على سفن سكمنت
كود:
Price[0]=value_start/100000;//123456/100000= 1
Price[1]=value_start/10000 %10;//123456/10000= 12 %10=2
Price[2]=value_start/1000%10;//123456/1000= 123 %10=3
Price[3]=value_start/100%10;//123456/100= 1234 %10=4
Price[4]=value_start/10%10;//123456/10= 12345 %10=5
Price[5]=value_start%10;// %10=6
اذا عرضت هذه القيم على سفن سكمنت فأنها سوف تظهر بهذا الشكل
000.125 وبتالي يوجد 00 لايوجد داعي لوضعهما لذا علينا حذفهما
كود:
if(Price[0]==0 && Price[1]==0) Price[0]=11;// 11 mean 7seg oFF
if(Price[0]==11 && Price[1]==0)Price[1]=11;// 11 mean 7seg oFF
هنا اخبرته اذا كان 0 = [price[0 وكان 0 = [price[1 اذن اطفئ سفن سكمنت رقم واحد وتلاحظ كتبت 11 = [price[0 سؤال لماذا لم اكتب 255 = [price[0 لان 255 تطفئ سفن سكمنت
لاحظ الكود العرض على سفن سكمنت
كود:
else if(transfer_display==5)
{
for(x=0;x<8;x++) //
{
if( colomn==2 )point=127;
else point=255;
if(Check_bit((segment[price[colomn]]& point) ,7-x))DS1=1;
else DS1=0;
SH1=0;SH1=1;
}
}
ماذا تلاحظ بلون احمر ستجد اني اساسا اتعامل مع مصفوفه اساسيه لتشغيل سفن سكمنت وهي segment
كود:
const char segment[]={192,249,164,176,153,146,130,248,128,144,191,255};
تلاحظ 255 في مصفوفه segment موقع 255 هو 11
اما
هو يمنع دخول مايكرو الى calculate_price() لان طالما مسافه تحتسب كل 3 ثواني اذن لايوجد داعي لتنفيذ calculate_price() بشكل مستمر
تحياتي