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

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

محمد زكي معتز
:: مهندس ::
تاريخ التسجيل: Nov 2018
المشاركات: 46
نشاط [ محمد زكي معتز ]
قوة السمعة:0
قديم 24-09-2019, 11:04 AM المشاركة 1   
افتراضي إلى الخبراء في لغة السي يرجى توضيح آلية عمل هذا الكود Twitter FaceBook Google+



السلام عليكم ..

انا احاول استخدام حساس الالتراسونيك لقياس المسافة مع المايكرو pic18f45k22

بدون استخدام المؤقتات الداخلية للمايكرو ...

عند البحث في النت وجدت هذه المكتبة ..

كود:
float time_library ;
void HCSR04_Init(){
       time_library=1./(float)(250*Clock_kHz());
       SR04_Tigger_Direction=0;
       SR04_Tigger=0;
       SR04_Echo_Direction=1;
                 }

float HCSR04_Get_Distance(const code char cm_or_inch){
    float time_ultrasonic=0;    long SHRC04_time_conter=0;
SR04_Tigger=1;
Delay_us(10);
SR04_Tigger=0;
while(SR04_Echo==0);
while(SR04_Echo==1)SHRC04_time_conter++;
     time_ultrasonic=time_library*(float)SHRC04_time_conter*10000000;
     switch(cm_or_inch){
     case 0: time_ultrasonic=time_ultrasonic/58.823; break;
     case 1: time_ultrasonic=time_ultrasonic/149.41042;   break;
                       }

     return time_ultrasonic;
السؤال الأول : كيف يتنفذ هذا الأمر

كود:
time_library=1./(float)(250*Clock_kHz());
اتمنى لو احد الاخوة يشرحه لي بشيء من التفصيل .

السؤال الثاني : كيف يتنفذ هذا الأمر ايضاً

كود:
time_ultrasonic=time_library*(float)SHRC04_time_conter*10000000;
من يستطيع المساعدة له الأجر والثواب .

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 25-09-2019, 06:21 AM المشاركة 2   
افتراضي


السلام عليكم ..

انا احاول استخدام حساس الالتراسونيك لقياس المسافة مع المايكرو pic18f45k22

بدون استخدام المؤقتات الداخلية للمايكرو ...

عند البحث في النت وجدت هذه المكتبة ..

كود:
float time_library ;
void HCSR04_Init(){
       time_library=1./(float)(250*Clock_kHz());
       SR04_Tigger_Direction=0;
       SR04_Tigger=0;
       SR04_Echo_Direction=1;
                 }

float HCSR04_Get_Distance(const code char cm_or_inch){
    float time_ultrasonic=0;    long SHRC04_time_conter=0;
SR04_Tigger=1;
Delay_us(10);
SR04_Tigger=0;
while(SR04_Echo==0);
while(SR04_Echo==1)SHRC04_time_conter++;
     time_ultrasonic=time_library*(float)SHRC04_time_conter*10000000;
     switch(cm_or_inch){
     case 0: time_ultrasonic=time_ultrasonic/58.823; break;
     case 1: time_ultrasonic=time_ultrasonic/149.41042;   break;
                       }

     return time_ultrasonic;
السؤال الأول : كيف يتنفذ هذا الأمر

كود:
time_library=1./(float)(250*Clock_kHz());
اتمنى لو احد الاخوة يشرحه لي بشيء من التفصيل .
أخى الكريم
على حسب تقديرى للأمور فإن المتغير time_library قد تم تعريفه داخل المكتبة الخاصة باستخدام الموديول وقد تم ضمه لبرنامجك مع الأمر الذى أضافها و تم تعريفة مع void HCSR04_Init
الآن الباقى مجرد علاقة رياضية تحدد قيمة لهذا المتغير بدلالة متغير آخر هو الكريستال المستخدم و تم تحديده فى Clock_kHz()

السؤال الثاني : كيف يتنفذ هذا الأمر ايضاً

كود:
time_ultrasonic=time_library*(float)SHRC04_time_conter*10000000;
من يستطيع المساعدة له الأجر والثواب .
كاها متغيرات تم تعريفها فى المكتبة

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

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

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

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


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

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