pxt-maqueen الكامن وراءه.maqueen.ts — maqueen.ts — مراجع DigitalPin.PXX و I2C 0x10 سطراً بسطر، مذكورة في قسم « كيف نعرف » أدناه.maqueenIR.cpp — maqueenIR.cpp — وسيط C++ لمستقبل الأشعّة تحت الحمراء. المنفذ قابل للتخصيص من المستخدم عبر maqueenIR.initIR(pin) ؛ على Maqueen Lite v4 المستقبل المدمج موصول بـ P16.DigitalPin.PXX يطابق أيّ pad فيزيائيّ على موصل الحافّة، وأيّ pads مشتركة مع مصفوفة LED.pxt-maqueen هو امتداد MakeCode الرسميّ من DFRobot لعائلة روبوتات Maqueen التعليميّة (بما فيها Maqueen Lite v4). أَضِفه في MakeCode عبر Extensions ← بحث « maqueen » أو الصق رابط GitHub. يُتيح namespace باسم maqueen يُغلِّف عمليّات المنافذ و I2C منخفضة المستوى خلف blocks ودودة للأطفال:
maqueen.motorRun(motor, dir, speed) — يقود متحكّم المحرّك I2C على العنوان 0x10.maqueen.motorStop(motor) — مكبح.maqueen.servoRun(servo, angle) — يكتب في سجلّات I2C 0x14 (S1) و 0x15 (S2).maqueen.writeLED(led, switch) — يبدّل LEDs البسيطة على P8 (يسار) و P12 (يمين).maqueen.readPatrol(sensor) — يقرأ حسّاسات تتبّع الخط على P13 (يسار) و P14 (يمين).maqueen.Ultrasonic(unit) — يقود P1 (trig) / P2 (echo) لـ SR04.maqueen.IR_read() — يقرأ رموز NEC من مستقبل IR المدمج عبر وسيط C++ maqueenIR.cpp.0x32 من نفس الشريحة 0x10 — ليست NeoPixels قياسيّة.firmware v1 الخاصّ بـ Maqueen Lab (firmware/v1-maqueen-lib.ts) يستخدم استدعاءات maqueen.* هذه مباشرةً. firmware v2 المستقبليّ سيستبدلها باستدعاءات pins.* و I2C خامة — نفس البروتوكول السلكيّ، نفس تطبيق الويب، كود منخفض المستوى يُعرَض جنباً إلى جنب في كلّ Component Explorer للتقدّم التعليميّ.
| المنفذ | مستخدم بواسطة | الاتجاه | ملاحظات |
|---|---|---|---|
| P0 | صفّارة | خرج (PWM) | منفذ music الافتراضيّ ؛ كذلك منفذ Gravity — تعارض عند إعادة التخصيص |
| P1 | أمواج فوق صوتيّة TRIG | خرج | كذلك منفذ Gravity — تعارض مع حسّاس خارجيّ |
| P2 | أمواج فوق صوتيّة ECHO | دخل | كذلك منفذ Gravity — تعارض مع حسّاس خارجيّ |
| P3 | — | حرّ | مشترك مع col1 من مصفوفة LED (تجنّب استخدامه كخرج رقميّ) |
| P4 | — | حرّ | مصفوفة LED col2 |
| P5 | الزرّ A | دخل | مدمج في micro:bit |
| P6 | — | حرّ | مصفوفة LED col9 |
| P7 | — | حرّ | مصفوفة LED col8 |
| P8 | LED اليسار (بسيط) | خرج | رقميّ ON/OFF |
| P9 | — | حرّ | مصفوفة LED col7 |
| P10 | — | حرّ | مصفوفة LED col3 |
| P11 | الزرّ B | دخل | مدمج في micro:bit |
| P12 | LED اليمين (بسيط) | خرج | رقميّ ON/OFF |
| P13 | حسّاس خط اليسار | دخل | رقميّ 0/1 |
| P14 | حسّاس خط اليمين | دخل | رقميّ 0/1 |
| P15 | — | حرّ | — |
| P16 | — | حرّ | — |
| P19 | I2C SCL | — | متحكّم المحرّك + 4× RGB + servos S1/S2 (العنوان 0x10) |
| P20 | I2C SDA | — | نفس ناقل I2C |
| المكوّن | المنفذ / العنوان | ملاحظات |
|---|---|---|
| متحكّم المحرّك | I2C 0x10 | السجلّ 0x00 = M1، 0x02 = M2 (الاتجاه + السرعة) |
| 4× RGB محيطيّة | I2C 0x10، السجلّ 0x32 | ليست NeoPixel قياسيّة — مُتحكّم بها عبر شريحة متحكّم المحرّك |
| LED اليسار (بسيط) | P8 رقميّ | ON/OFF |
| LED اليمين (بسيط) | P12 رقميّ | ON/OFF |
| حسّاس خط اليسار | P13 رقميّ | 0 / 1 |
| حسّاس خط اليمين | P14 رقميّ | 0 / 1 |
| أمواج فوق صوتيّة TRIG | P1 | SR04 / SR04P |
| أمواج فوق صوتيّة ECHO | P2 | SR04 / SR04P |
| صفّارة | P0 | الخرج الافتراضيّ لمكتبة music في micro:bit |
| servos S1 / S2 | I2C 0x10 (عبر الامتداد) | استخدم maqueen.servoRun(S1|S2, angle) |
| مستقبل IR | P16 (افتراضيّ Maqueen Lite v4) | maqueenIR.initIR(Pins.P16) + onPressEvent(...) لكلّ زرّ |
| السجلّ | الوظيفة |
|---|---|
0x00 | المحرّك M1 (يسار): الاتجاه + السرعة |
0x02 | المحرّك M2 (يمين): الاتجاه + السرعة |
0x14 | زاوية servo S1 |
0x15 | زاوية servo S2 |
0x32 | بيانات 4× LED RGB (16 مليون لون لكلّ منها) |
P3, P4, P6, P7, P9, P10, P15, P16
P3/P4/P6/P7/P9/P10 تشترك مع مصفوفة عرض LED — عطّل العرض أوّلاً قبل استخدامها كخروج رقميّ:
led.enable(false)
P0 = صفّارة. توصيل أيّ شيء آخر بمنفذ Gravity P0 يُسكت الصفّارة (والعكس صحيح).
P1 / P2 = أمواج فوق صوتيّة. توصيل حسّاس Gravity على P1 أو P2 يعطّل الأمواج فوق الصوتيّة. التطبيق يُحذّر عند استخدام الاثنين معاً.
ناقل I2C (P19/P20) مشترك. الإضافات على عناوين غير 0x10 آمنة ؛ تصادم العناوين مميت.
كلّ تخصيص منفذ أدناه مستخرج من شفرة امتداد pxt-maqueen. أرقام السطور تشير إلى maqueen.ts وقت الكتابة.
| المنفذ / العنوان | المكوّن | الدليل |
|---|---|---|
P1 | أمواج فوق صوتيّة TRIG | maqueen.ts:164 — pins.digitalWritePin(DigitalPin.P1, 1) داخل Ultrasonic() |
P2 | أمواج فوق صوتيّة ECHO | maqueen.ts:172 — d = pins.pulseIn(DigitalPin.P2, PulseValue.High, 500 * 58) |
P8 | LED اليسار (بسيط) | maqueen.ts:287 — pins.digitalWritePin(DigitalPin.P8, ledswitch) داخل writeLED(LEDLeft, ...) |
P12 | LED اليمين (بسيط) | maqueen.ts:289 — pins.digitalWritePin(DigitalPin.P12, ledswitch) داخل writeLED(LEDRight, ...) |
P13 | حسّاس خط اليسار | maqueen.ts:267 — return pins.digitalReadPin(DigitalPin.P13) داخل readPatrol(PatrolLeft) |
P14 | حسّاس خط اليمين | maqueen.ts:269 — return pins.digitalReadPin(DigitalPin.P14) داخل readPatrol(PatrolRight) |
I2C 0x10 | شريحة المحرّك + RGB + servos | maqueen.ts:19 — const MOTER_ADDRESSS = 0x10، تستخدمه pins.i2cWriteBuffer(0x10, buf) في كلّ مكان |
I2C 0x10 reg 0x14 | زاوية servo S1 | maqueen.ts:308 — buf[0] = 0x14 ثم pins.i2cWriteBuffer(0x10, buf) داخل servoRun(S1, angle) |
I2C 0x10 reg 0x15 | زاوية servo S2 | maqueen.ts:311 — buf[0] = 0x15 لـ S2 |
I2C 0x10 reg 0x00 | المحرّك M1 | maqueen.ts:202–205 — buf[0] = 0x00; ...; pins.i2cWriteBuffer(0x10, buf) داخل motorRun(M1, ...) |
I2C 0x10 reg 0x02 | المحرّك M2 | maqueen.ts:208–211 — buf[0] = 0x02 لـ M2 |
I2C 0x10 reg 0x32 | 4× LEDs RGB محيطيّة | maqueen.ts:659 — pins.i2cWriteNumber(I2CADDR, 0x32, NumberFormat.Int8LE) داخل block كتابة RGB |
| مستقبل IR (P16) | NEC IR | maqueenIR.cpp يُعرّف الـ API لكنّه لا يكتب منفذاً ثابتاً — على المستخدم استدعاء maqueenIR.initIR(maqueenIR.Pins.P16). P16 هو الاتفاق على Maqueen Lite v4. |
P0 | صفّارة | ليست في pxt-maqueen. Maqueen Lite v4 توصل الصفّارة المدمجة بـ P0، الخرج الافتراضيّ لمكتبة music في micro:bit. مُؤكَّد عبر أمثلة DFRobot على الويكي، ومتوافق مع السمّاعة المدمجة في micro:bit V2. |
P19 / P20 | I2C SCL / SDA | ليست في pxt-maqueen. منافذ I2C القياسيّة لموصل حافّة micro:bit حسب tech.microbit.org/hardware/edgeconnector ؛ استدعاءات pins.i2c* في pxt-maqueen تستخدمها افتراضيّاً. |
P5 / P11 | الزرّ A / B | ليست في pxt-maqueen. مدمجة في لوحة micro:bit نفسها، ليس في حامل Maqueen. |
P3, P4, P6, P7, P9, P10 | أعمدة مصفوفة LED | ليست في pxt-maqueen. تنتمي لعرض LED 5×5 المدمج في micro:bit ؛ صالحة كدخل/خرج رقميّ فقط بعد led.enable(false). |
لإعادة التحقّق: استنسخ المستودع و grep عن DigitalPin.P و 0x10:
git clone https://github.com/DFRobot/pxt-maqueen
grep -nE "DigitalPin\.|0x10|0x14|0x15|0x32" pxt-maqueen/maqueen.ts
| الفعل (عبر BLE) | كود micro:bit |
|---|---|
M:L,R | maqueen.motorRun(M1, dir, |L|) + كذلك لـ M2 |
STOP | maqueen.motorStop(All) |
LED:i,s | maqueen.writeLED(i, s) |
SRV:i,a | maqueen.servoRun(Si, a) |
BUZZ:f,ms | music.playTone(f, ms) |
LINE? | maqueen.readPatrol(L/R) ← LINE:l,r |
DIST? | maqueen.Ultrasonic(cm) ← DIST:cm |
IR? | maqueen.IR_read() ← IR:code |
RGB:i,r,g,b | كتابة I2C على 0x10 reg 0x32 |
| (تلقائي) | input.acceleration(X/Y/Z) ← ACC:x,y,z |
انظر firmware/v1-maqueen-lib.ts للتنفيذ الكامل.
المرحلة 2 من firmware (firmware/v2-raw-pins.ts) ستستبدل استدعاءات maqueen.* بعمليّات pins.* و pins.i2cWriteBuffer(...) مباشرة — نفس البروتوكول السلكيّ، كود منخفض المستوى للمتعلّمين المتقدّمين. Component Explorers ستعرض الإصدارَين جنباً إلى جنب في لوحة الكود.