قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 17-01-2017, 03:24 AM المشاركة 1   
افتراضي برجاء المساعدة في أمر الشرط Twitter FaceBook Google+



السلام عليكم ورحمه الله


انا محتاج اختبر قيمة متغيرين داخل أمر شرط

للتوضيح .. اكثر ..


انا عندي متغيران الأول اسمة X والثاني اسمه M

مثال المتغير x قيمتة 100 والمتغير M قيمتة 100 ايضااا .. واريد اختبار المتغير X لو ذاد بعشرة ارقام واصبح 110 أو قل بعشرة ارقام وأصبح 90 يتحقق الشرط ..


والمطلوب بشكل أوضح هو مقارنة قيمة متغيرين متساويان في القيمة ولكن لا معلوم قيمتهم .. ووضع المتغيرين في مقارنة داخل أمر شرط ووضع رنج أو مدي مسموح به وهو ايذا قلة أو ذادت قيمة المتغير الأول بنسبة 10% من قيمتة يتحقق الشرط

ارجو ان يكون السؤال واضح





اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 17-01-2017, 04:23 AM المشاركة 2   
افتراضي


هل الفرق نسبة أم قيمة مطلقة؟؟ و ما هى اللغة المستخدمه؟؟
لو نسبة يكون
كود:
M <  0.9X ||M >1.1X
معلهش العلامات ربما انعكست لأنى اجد صعوبة فى الكتابة بالكود هنا
هى بالكلام تكون بفرض أن X هو الأساسى و M هو اللذى يفرق عنه سيكون الشرط
لو M زاد عن 1.1 X أو أقل من 0.8 X

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 18-01-2017, 11:31 PM المشاركة 3   
افتراضي


هل الفرق نسبة أم قيمة مطلقة؟؟ و ما هى اللغة المستخدمه؟؟
لو نسبة يكون
كود:
M <  0.9X ||M >1.1X
معلهش العلامات ربما انعكست لأنى اجد صعوبة فى الكتابة بالكود هنا
هى بالكلام تكون بفرض أن X هو الأساسى و M هو اللذى يفرق عنه سيكون الشرط
لو M زاد عن 1.1 X أو أقل من 0.8 X

السلام عليكم ورحمه الله

شكرااا جزيلا مهندسنا الغالى " ماجد عباس"


حاولت وضع الطريقة اللتي ذكرتها أعلاة ولكن لم تشتغل ..

ياريت مساعدة حتي لو بمثال صغير


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 19-01-2017, 02:01 AM المشاركة 4   
افتراضي


كان نفسي اساعد لكن ما فهمت ما تريد ؟
ممكن شرح الحالة بمثال اوضح !


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 19-01-2017, 05:34 AM المشاركة 5   
افتراضي


السلام عليكم ورحمه الله

شكرااا جزيلا مهندسنا الغالى " ماجد عباس"


حاولت وضع الطريقة اللتي ذكرتها أعلاة ولكن لم تشتغل ..

ياريت مساعدة حتي لو بمثال صغير
و انت لم تجب على اسئلتى


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 19-01-2017, 11:52 PM المشاركة 6   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


هل الفرق نسبة أم قيمة مطلقة؟؟ و ما هى اللغة المستخدمه؟؟
لو نسبة يكون


السلام عليكم ورحمة الله


شكرااا جزيلا علي الإهتمام ..


أولا اللغه المستخدمه ...." ميكرو سي برو فور بيك " " mikroc pro for pic "


وطريقة المقارنة .. هي بالنسبه % ..


الموضوع بإختصار ودون اطالة ...


هو استخدام المقاومه الضوئيه .. فى مشروع تحسس للحركة ..


وفكرة الكود هي ..




كود:
      
     
     //  PIC12F675  //

unsigned timer=0,m=0,x =0,temp=0;

  /*#define  LED1_ON  GP4_bit = 1;
   #define  LED2_ON  GP5_bit = 1;
   #define  LED3_ON  GP2_bit = 1;
   #define  LED4_ON  GP1_bit = 1;

   #define  LED1_OF  GP4_bit = 0;
   #define  LED2_OF  GP5_bit = 0;
   #define  LED3_OF  GP2_bit = 0;
   #define  LED4_OF  GP1_bit = 0;*/
    #define allof    GP4_bit = 0; GP5_bit = 0; GP2_bit = 0; GP1_bit = 0;

   //********************************************************************//
               // Start here
               void main() {
                TRISIO = 1;
                ADC_Init();
                allof

          //GPIO = 54; delay_ms(5000);

      for(m=0;m<5;m++)  
    {
       GPIO = 32; delay_ms(250);    allof  delay_ms(250);      // M <  0.9X ||M >1.1X
    }

        while(1) {
             
           temp = ADC_Read(0);  // Read analog value from channel 0
           delay_ms(2);
           
           x = temp ;
           
           delay_ms(2);
            
            for(m=0;m<250;m++)  {
          
            delay_ms(1);
            
            temp= ADC_Read(0);  // Read analog value from channel 0
            
            if( !!!!!!!!!!!!!!!! ){ GPIO = 32; for(m=0;m<50;m++){delay_ms(2);} GPIO = 0; }

        }
      
  }
}

يوجد عدد 2 متغير الأول اسمه "
كود:
  temp
والثاني "
كود:
  X

أولا في بداية البرنامج يبأ في تنفيذ برنامج فلاش داخل حلقة FOR وبعد الخروج من حلقة FOR يدخل الى حلقة
كود:
  while(1)
لا نهائية ..

ومن ثم قرأة الإشارة الموجودة علي المدخل محول الإشارة ADC وحفظ القيمة فى متغير
كود:
   temp = ADC_Read(0);  // Read analog value from channel 0
وبعد ذالك نسخ محتويات المتغير
كود:
   temp
الى المتغير
كود:
  X

كود:
   x = temp ;
وبعد ذالك الدخول في حلقة FOR القرأة مرة ثانيه من حول الإشارة ADC وحفظ القيمه فى المتغير
كود:
  temp= ADC_Read(0);
وبعد ذالك ... يوجد أمر شرط ..


والي هنا نأتي الي أهم نقطة في البرنامج ....

وهي اريد عمل مقارنة بين المتغير temp و المتغير X إذا ذادت نسبة المتغير temp أو نقصت بنسبة 10 % يتحقق الشرط

كود:
  if( !!!!!!!!!!!!!!!! ){ GPIO = 32; for(m=0;m<50;m++){delay_ms(2);} GPIO = 0; }


وفكرة المشروع هو كما نعرف أن المقاومة الضوئية تتغير بشدة الضوء الواقع عليها ..


وهنا فى البرنامج المستخدم عنما يعمل يأخذ القيمه الفولتية الخارجه من المقاومه وتبديلها من إشارة تماثلية الى دجيتال .. وحفظ قيمتها داخل متغير temp ... و نسخ قيمة المتغير temp الي المتغير X

وهنا ندخل فى قرأة الإ شارة التماثلية من جديد ومقارنتها مع المتغير X الذى يحمل نفس قيمة المتغير temp وهنا إيذا قطع أحد الأشخاص المقاومه الضوئيه .. وحدث تغير فى الضوء الواقع عليها سوف تتغير قيمه المتغير temp ويتحقق الشرط ... ويضئ الليد أو جهاز الإنذار ...

..

وشكراااا جزيلا لك أخى ...

كان نفسي اساعد لكن ما فهمت ما تريد ؟
ممكن شرح الحالة بمثال اوضح !

لحرصك على تقديم الدعم ..


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 20-01-2017, 06:22 AM المشاركة 7   
sun


السلام عليكم و رحمة الله و بركاته

اخ عبد الله , بالنسبة لصيغة المقارنة فانها كالتالى :
كود:
 if( temp > (1.1 * x) || temp < (0.9 * x) )
اما اقترح عليك تعديل بالكود لانى الان فهمت الهدف من المشروع , و هو كالتالى :

كود:
    //  PIC12F675  //

 unsigned timer=0,m=0,x =0,temp=0;

   /*#define  LED1_ON  GP4_bit = 1;
    #define  LED2_ON  GP5_bit = 1;
    #define  LED3_ON  GP2_bit = 1;
    #define  LED4_ON  GP1_bit = 1;

    #define  LED1_OF  GP4_bit = 0;
    #define  LED2_OF  GP5_bit = 0;
    #define  LED3_OF  GP2_bit = 0;
    #define  LED4_OF  GP1_bit = 0;*/
     #define allof    GP4_bit = 0; GP5_bit = 0; GP2_bit = 0; GP1_bit = 0;

    //********************************************************************//
                // Start here
 void main() {
 TRISIO = 1;
 ADC_Init();
 allof

           //GPIO = 54; delay_ms(5000);

     for(m=0;m<5;m++)
     {
        GPIO = 32; delay_ms(250);    allof  delay_ms(250);      // M <  0.9X ||M >1.1X
     }

     while(1)
     {
        temp = ADC_Read(0);  // Read analog value from channel 0
        delay_ms(2);
        x = temp ;
        delay_ms(2);

        while (1)
        {
            temp= ADC_Read(0);  // Read analog value from channel 0
            if( temp > (1.1 * x) || temp < (0.9 * x) )
        {
              GPIO = 32;
          for(m=0;m<50;m++){delay_ms(2);}
          GPIO = 0;
          break;
           }
        }

     }
 }
التعديل باللون الاحمر ,

و الله ولى التوفيق



إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 09:55 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025