motor-shield-pwm.py
# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# مثال PWM لدرع المحرك
#
# يوضح هذا المثال كيفية التحكم في درع المحرك الموجود على
# كاميرا OpenMV الخاصة بك. يتم التحكم في درع المحرك باستخدام وحدة PYB
# التي تتيح لك استخدام PWM للتحكم في السرعة وضبط حالة دبابيس
# الإدخال/الإخراج الرقمية. يحتاج درع المحرك إلى 6 دبابيس إدخال/إخراج لكلا المحركين.
import pyb
# تتحكم هذه الدبابيس في الاتجاه بينما دبابيس PWM الأخرى
# أدناه تتحكم في السرعة. يتم ضبط اتجاه كل محرك
# بواسطة جسر H (H-Bridge) حيث يمثل A0/1 الجانبين
# لمشغل جسر H واحد. B0/1 هما جسر H آخر.
pinADir0 = pyb.Pin("P3", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinADir1 = pyb.Pin("P2", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir0 = pyb.Pin("P1", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir1 = pyb.Pin("P0", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
# يجب ألا يكون Dir0/1 متساويين للحصول على حركة للأمام أو للخلف
# فإذا كانا متساويين فهذه عملية فرملة.
# إذا لم يكونا متساويين فسيدور المحرك في اتجاه واحد أو
# الآخر حسب طريقة توصيله وقيمة dir 0.
pinADir0.value(0)
pinADir1.value(1)
# يجب ألا يكون Dir0/1 متساويين للحصول على حركة للأمام أو للخلف
# فإذا كانا متساويين فهذه عملية فرملة.
# إذا لم يكونا متساويين فسيدور المحرك في اتجاه واحد أو
# الآخر حسب طريقة توصيله وقيمة dir 0.
pinBDir0.value(0)
pinBDir1.value(1)
# إنشاء كائن مؤقت (timer) يعمل بتردد 1 كيلوهرتز سيقوم بتشغيل
# إخراج PWM على كاميرا OpenMV الخاصة بنا. يكفي إنشاؤه مرة واحدة فقط.
tim = pyb.Timer(4, freq=1000)
# استخدام كائن المؤقت لإنشاء إخراجي PWM على كاميرا OpenMV.
# تتحكم هذه المؤقتات في سرعة المحركات. ستقوم بضبط
# نسبة PWM لهذه المؤقتات بشكل متكرر داخل الحلقة (loop) الخاصة بك.
chA = tim.channel(1, pyb.Timer.PWM, pin=pyb.Pin("P7"))
chB = tim.channel(2, pyb.Timer.PWM, pin=pyb.Pin("P8"))
while True:
for i in range(100):
pyb.delay(100)
chA.pulse_width_percent(i)
chB.pulse_width_percent(99 - i)
for i in range(100):
pyb.delay(100)
chA.pulse_width_percent(99 - i)
chB.pulse_width_percent(i)