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

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

abdalalabu5
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 55
نشاط [ abdalalabu5 ]
قوة السمعة:0
قديم 30-08-2012, 01:09 PM المشاركة 1   
ha مساعدة بكود بسيط Twitter FaceBook Google+



مشروع على روبوت يتتبع طريق ولكن لي استفسار وهو
عندما اتحكم بماتورين اجعلهم يمشو للامام اريد انه اذا استمر تنفيذ pic لامر معين اكثر من مثلا اربع ثواني ان يتوقف ويجعل الماتورين يرجعو للخلف.
مع العلم اني استخدم pic 16f877a وبرنامج mikrobasic

اعلانات

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 30-08-2012, 05:26 PM المشاركة 2   
افتراضي


بسم الله الرحمن الرحيم

للاسف انت تستخدم الميكروبيزيك وليس الميكروسى

ولكن اظن ان اللغتان قريبين من بعض

لكن انا هكتبلك الخطواط وانت تنفذها على لغتك

هناك حلان

الاول هو
استخدام التايمر زيرو والمقاطعة تعد فى كل مرة لمدة 4 ثوانى وعند اكتمال العد
تحدث المقاطعه وهى ارجاع المواتير للخلف
ويمكن البحث ىف القرية عن مواضيع التايمر زيرو وهى كثيرة

الحل الثانى هو
عمل جملة تكرارية for وبداخلها اوامر التشغل وامر انتظار لعدد معين من المللى ثانية وليكن 5 مللى ثانية

وبداخل اوامر التكرار هذه تضع امر التحرك يمين او يسار ومر انتظار 5 مللى ثانية

وهكذا يتم اختبار شروطك كل 5 مللى ثانية وفى نفس الوقت اذا تم تكرارها

800 مرة تكون حصلت على 4 ثوانى
وعندها تكتب امر رجوع المواتير

وهذه طريقتان فقط وبالتاكيد هناك حلول اخرى

بالتوفيق ان شاء الله

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

abdalalabu5
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 55
نشاط [ abdalalabu5 ]
قوة السمعة:0
قديم 31-08-2012, 10:57 AM المشاركة 3   
افتراضي


مشكور اخي اعملتها على طريقة زي for loop زي ما قولتلي لاني صراحة مو كتيير ب timer
وهيك طلع معي ان شاء الله يطلع صحيح بجزء الي طلبت مساعدة فيه
x=0
while (portd.0=1) and (portd.1=1) and (y=0)
while x<14
if (portd.0=1) and (portd.1=1) and (y=0) then
pwm1_change_duty(120)
pwm1_change_duty(120)
portb=%00000101
pwm1_start
pwm2_start
delay_ms(250)
end if
if ((portd.0=0) or (portd.1=0)) and (y=0) then
x=14
end if
if x=12 then
portb=%00001010
delay_ms(3000)
y=1
x=14
end if
x=x+1
wend
wend


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 31-08-2012, 06:23 PM المشاركة 4   
افتراضي


بسم الله الرحمن الرحيم

الحقيقة انا مش فاهم الجزء دة اوى لان فى اختلافات فى اللغه

ولكن الحمد لله انك فهمت الفكرة وان شاء الله تشتغل معاك كويس

إضافة رد

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

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

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


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

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