apds9960 --- مُشغّل مستشعر القرب والإيماءات واللون#

توفّر هذه الوحدة مُشغّلاً لمستشعر Broadcom/Avago APDS9960 الرقمي للقرب والضوء المحيط ولون RGB والإيماءات عبر I2C. يكشف المُشغّل عن عناصر تحكم بالتمكين/التعطيل لكل ميزة، وقراءات قنوات خام (الصافية، R، G، B، القرب)، وآلة حالة لفك ترميز الإيماءات برمجياً تُصنّف إيماءات التمرير لأعلى/لأسفل/يسار/يمين وإيماءات الاقتراب/الابتعاد من ذاكرة FIFO المكوّنة من 4 ثنائيات ضوئية على الشريحة.

مثال على الاستخدام:

import time
from machine import I2C, Pin
from apds9960 import uAPDS9960 as APDS9960

bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = APDS9960(bus)

sensor.enableLightSensor()
sensor.enableProximitySensor()

while True:
    r = sensor.readRedLight()
    g = sensor.readGreenLight()
    b = sensor.readBlueLight()
    c = sensor.readAmbientLight()
    p = sensor.readProximity()
    print(r, g, b, c, p)
    time.sleep_ms(100)

الأصناف#

class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])#

ينشئ نسخة من مُشغّل APDS9960.

  • bus هو كائن ناقل I2C مُهيّأ يُستخدم للتواصل مع المستشعر. يُصدر الصنف الأساسي استدعاءات بنمط SMBus من نوع read_byte_data وwrite_byte_data وread_i2c_block_data؛ ومن أجل machine.I2C في MicroPython استخدم uAPDS9960 بدلاً منه.

  • address هو عنوان I2C المكوّن من 7 بتات للجهاز. القيمة الافتراضية هي APDS9960_I2C_ADDR (0x39).

  • valid_id هو قائمة بالقيم المقبولة التي يُعيدها سجل المعرّف الخاص بالشريحة. القيمة الافتراضية هي APDS9960_DEV_ID.

يقرأ المُنشئ معرّف الجهاز ويُطلق ADPS9960InvalidDevId إذا لم يكن موجوداً في valid_id. ثم يُعطّل كل ميزة، ويبرمج قيم ATIME/WTIME/PPULSE الافتراضية، ويطبق الإعدادات الافتراضية لقيادة LED، وكسب القرب، وكسب ALS، وعتبات القرب، وعتبات الضوء المحيط، والاستمرارية، وتهيئة محرك الإيماءات (عتبات الدخول/الخروج، وGCONF1، وكسب الإيماءات، وقيادة LED للإيماءات، وزمن انتظار الإيماءات، وإزاحات الإيماءات، وGPULSE، وGCONF3، وتمكين مقاطعة الإيماءات).

وضع التشغيل والتحكم بالطاقة#

getMode() int#

تُعيد القيمة الخام لسجل ENABLE، التي تُرمّز الميزات الممكَّنة حالياً (الطاقة، ALS، القرب، الانتظار، مقاطعة ALS، مقاطعة القرب، الإيماءات).

setMode(mode: int, enable: bool = True) None#

تُمكّن أو تُعطّل ميزة فردية في سجل ENABLE. يجب أن يكون mode واحداً من قيم APDS9960_MODE_* (APDS9960_MODE_POWER ..\ APDS9960_MODE_ALL). عندما يكون mode هو APDS9960_MODE_ALL، تُفعَّل أو تُعطَّل جميع البتات دفعة واحدة. تُطلق ADPS9960InvalidMode للقيم خارج النطاق.

enablePower() None#

تُشغّل طاقة APDS9960 (تضبط بت PON في ENABLE).

disablePower() None#

تُطفئ طاقة APDS9960 (تمسح بت PON في ENABLE).

مستشعر الضوء المحيط / RGB#

enableLightSensor(interrupts: bool = True) None#

تستعيد كسب ALS الافتراضي، وتُهيّئ بت تمكين مقاطعة ALS، وتُشغّل طاقة الجهاز، وتُمكّن محرك الضوء المحيط/اللون.

disableLightSensor() None#

تُعطّل مقاطعة ALS وتوقف محرك الضوء المحيط/اللون.

readAmbientLight() int#

تقرأ مستوى الضوء المحيط للقناة الصافية كقيمة غير موقّعة مكوّنة من 16 بت.

readRedLight() int#

تقرأ مستوى القناة الحمراء كقيمة غير موقّعة مكوّنة من 16 بت.

readGreenLight() int#

تقرأ مستوى القناة الخضراء كقيمة غير موقّعة مكوّنة من 16 بت.

readBlueLight() int#

تقرأ مستوى القناة الزرقاء كقيمة غير موقّعة مكوّنة من 16 بت.

مستشعر القرب#

enableProximitySensor(interrupts: bool = True) None#

تستعيد كسب القرب الافتراضي وقيادة LED، وتُهيّئ بت تمكين مقاطعة القرب، وتُشغّل طاقة الجهاز، وتُمكّن محرك القرب.

disableProximitySensor() None#

تُعطّل مقاطعة القرب وتوقف محرك القرب.

readProximity() int#

تقرأ مستوى القرب كقيمة غير موقّعة مكوّنة من 8 بتات.

محرك الإيماءات#

enableGestureSensor(interrupts: bool = True) None#

تُعيد ضبط حالة الإيماءات، وتضبط WTIME وعدد نبضات الإيماءة، وتعزز LED إلى 300%، وتُهيّئ بت تمكين مقاطعة الإيماءات، وتدخل آلة حالة الإيماءات، وتُشغّل طاقة الجهاز، وتُمكّن أوضاع الانتظار والقرب والإيماءات.

disableGestureSensor() None#

تُعيد ضبط حالة الإيماءات، وتُعطّل مقاطعة الإيماءات وآلة الحالة، وتوقف محرك الإيماءات.

isGestureAvailable() bool#

تُعيد True إذا كان بت GVALID في سجل حالة الإيماءات مضبوطاً، مما يشير إلى أن بيانات FIFO للإيماءات جاهزة للقراءة.

readGesture() int#

تُفرّغ ذاكرة FIFO للإيماءات، وتُشغّل فاكّ ترميز الإيماءات الموجود على اللوحة، وتُعيد واحداً من ثوابت الاتجاه APDS9960_DIR_*. تُعيد APDS9960_DIR_NONE إذا لم يكن المحرك قيد التشغيل، أو لم تتوفر بيانات صالحة، أو لم تُحلّ البيانات إلى إيماءة معروفة.

resetGestureParameters() None#

تمسح المخزن المؤقت الداخلي لـ FIFO الإيماءات، والفروق (deltas)، والعدّادات، وعدّادات الاقتراب/الابتعاد، والحالة، وآخر حركة مفكوكة الترميز.

processGestureData() bool#

تعالج عيّنات U/D/L/R الخام من FIFO المخزّنة حالياً لتحديث فروق U/D وL/R وعدّادات الاقتراب/الابتعاد. تُعيد True إذا اكتُشف حدث اقتراب أو ابتعاد، وFalse فيما عدا ذلك.

decodeGesture() bool#

تحوّل أعداد U/D وL/R الحالية والفروق المتراكمة إلى اتجاه يُخزَّن في الحقل الداخلي gesture_motion_. تُعيد True عند التعرّف على اتجاه، وFalse فيما عدا ذلك.

عتبات القرب#

getProxIntLowThresh() int#

تُعيد العتبة المنخفضة لمقاطعة القرب (سجل PILT).

setProxIntLowThresh(threshold: int) None#

تضبط العتبة المنخفضة لمقاطعة القرب.

getProxIntHighThresh() int#

تُعيد العتبة المرتفعة لمقاطعة القرب (سجل PIHT).

setProxIntHighThresh(threshold: int) None#

تضبط العتبة المرتفعة لمقاطعة القرب.

getProximityIntLowThreshold() int#

اسم بديل لـ getProxIntLowThresh().

setProximityIntLowThreshold(threshold: int) None#

اسم بديل لـ setProxIntLowThresh().

getProximityIntHighThreshold() int#

اسم بديل لـ getProxIntHighThresh().

setProximityIntHighThreshold(threshold: int) None#

اسم بديل لـ setProxIntHighThresh().

قيادة LED والكسب والتعزيز#

getLEDDrive() int#

تُعيد قوة قيادة LED المستخدمة للقرب وALS. مُرمّزة كواحدة من قيم APDS9960_LED_DRIVE_* (0 = 100 mA، 1 = 50 mA، 2 = 25 mA، 3 = 12.5 mA).

setLEDDrive(drive: int) None#

تضبط قوة قيادة LED المستخدمة للقرب وALS. drive هو واحد من قيم APDS9960_LED_DRIVE_*.

getProximityGain() int#

تُعيد كسب مستقبِل القرب. مُرمّز كواحد من قيم APDS9960_PGAIN_* (0 = 1x، 1 = 2x، 2 = 4x، 3 = 8x).

setProximityGain(drive: int) None#

تضبط كسب مستقبِل القرب. drive هو واحد من قيم APDS9960_PGAIN_*.

getAmbientLightGain() int#

تُعيد كسب مستشعر الضوء المحيط. مُرمّز كواحد من قيم APDS9960_AGAIN_* (0 = 1x، 1 = 4x، 2 = 16x، 3 = 64x).

setAmbientLightGain(drive: int) None#

تضبط كسب مستشعر الضوء المحيط. drive هو واحد من قيم APDS9960_AGAIN_*.

getLEDBoost() int#

تُعيد تعزيز تيار LED. مُرمّز كواحد من قيم APDS9960_LED_BOOST_* (0 = 100%، 1 = 150%، 2 = 200%، 3 = 300%).

setLEDBoost(boost: int) None#

تضبط تعزيز تيار LED. boost هو واحد من قيم APDS9960_LED_BOOST_*.

تعويض كسب القرب وقناع الثنائيات الضوئية#

getProxGainCompEnable() bool#

تُعيد True إذا كان تعويض كسب القرب ممكَّناً.

setProxGainCompEnable(enable: bool) None#

تُمكّن أو تُعطّل تعويض كسب القرب.

getProxPhotoMask() int#

تُعيد القناع المكوّن من 4 بتات للثنائيات الضوئية المعطّلة للقرب. تُربط البتات على النحو 3=UP و2=DOWN و1=LEFT و0=RIGHT؛ حيث 1 يُعطّل ثنائياً ضوئياً و0 يُمكّنه.

setProxPhotoMask(mask: int) None#

تضبط القناع المكوّن من 4 بتات للثنائيات الضوئية المعطّلة للقرب (انظر الترميز أعلاه).

تهيئة الإيماءات#

getGestureEnterThresh() int#

تُعيد عتبة القرب المطلوبة للدخول إلى وضع الإيماءات.

setGestureEnterThresh(threshold: int) None#

تضبط عتبة القرب المطلوبة للدخول إلى وضع الإيماءات.

getGestureExitThresh() int#

تُعيد عتبة القرب المطلوبة للخروج من وضع الإيماءات.

setGestureExitThresh(threshold: int) None#

تضبط عتبة القرب المطلوبة للخروج من وضع الإيماءات.

getGestureGain() int#

تُعيد كسب الثنائي الضوئي المستخدم أثناء وضع الإيماءات. مُرمّز كواحد من قيم APDS9960_GGAIN_* (0 = 1x، 1 = 2x، 2 = 4x، 3 = 8x).

setGestureGain(gain: int) None#

تضبط كسب الثنائي الضوئي المستخدم أثناء وضع الإيماءات.

getGestureLEDDrive() int#

تُعيد تيار قيادة LED المستخدم أثناء وضع الإيماءات. مُرمّز كواحد من قيم APDS9960_LED_DRIVE_*.

setGestureLEDDrive(drive: int) None#

تضبط تيار قيادة LED المستخدم أثناء وضع الإيماءات.

getGestureWaitTime() int#

تُعيد زمن الانتظار منخفض الطاقة بين عمليات كشف الإيماءات. مُرمّز كواحد من قيم APDS9960_GWTIME_* (0 = 0 ms .. 7 = 39.2 ms).

setGestureWaitTime(time: int) None#

تضبط زمن الانتظار منخفض الطاقة بين عمليات كشف الإيماءات.

getGestureMode() bool#

تُعيد True إذا كانت آلة حالة الإيماءات قيد التشغيل حالياً.

setGestureMode(enable: bool) None#

تدخل آلة حالة الإيماءات أو تخرج منها.

عتبات مقاطعة الضوء المحيط#

getLightIntLowThreshold() int#

تُعيد العتبة المنخفضة المكوّنة من 16 بت المستخدمة لمقاطعة الضوء المحيط.

setLightIntLowThreshold(threshold: int) None#

تضبط العتبة المنخفضة المكوّنة من 16 بت المستخدمة لمقاطعة الضوء المحيط.

getLightIntHighThreshold() int#

تُعيد العتبة المرتفعة المكوّنة من 16 بت المستخدمة لمقاطعة الضوء المحيط.

setLightIntHighThreshold(threshold: int) None#

تضبط العتبة المرتفعة المكوّنة من 16 بت المستخدمة لمقاطعة الضوء المحيط.

تمكين المقاطعات ومسحها#

getAmbientLightIntEnable() bool#

تُعيد True إذا كانت مقاطعات الضوء المحيط ممكَّنة.

setAmbientLightIntEnable(enable: bool) None#

تُمكّن أو تُعطّل مقاطعات الضوء المحيط.

getProximityIntEnable() bool#

تُعيد True إذا كانت مقاطعات القرب ممكَّنة.

setProximityIntEnable(enable: bool) None#

تُمكّن أو تُعطّل مقاطعات القرب.

getGestureIntEnable() bool#

تُعيد True إذا كانت مقاطعات الإيماءات ممكَّنة.

setGestureIntEnable(enable: bool) None#

تُمكّن أو تُعطّل مقاطعات الإيماءات.

clearAmbientLightInt() None#

تمسح مقاطعة ضوء محيط معلّقة.

clearProximityInt() None#

تمسح مقاطعة قرب معلّقة.

class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])#

صنف فرعي في MicroPython من APDS9960. واجهة برمجة تطبيقات عامة مطابقة، لكن الوصول إلى السجلات الأساسي يستخدم استدعاءات readfrom_mem وwriteto_mem بنمط machine.I2C بدلاً من الطرق بنمط SMBus. هذا هو الصنف الذي يُستخدم على أهداف OpenMV / MicroPython.

الاستثناءات#

exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)#

صنف فرعي من ValueError. يُطلقه مُنشئ APDS9960 عندما لا تكون القيمة المقروءة من سجل المعرّف الخاص بالشريحة موجودة في القائمة valid_id.

exception apds9960.ADPS9960InvalidMode(mode: int)#

صنف فرعي من ValueError. تُطلقه APDS9960.setMode() عندما يكون وسيط mode خارج النطاق APDS9960_MODE_POWER..\ APDS9960_MODE_ALL.

الثوابت#

عنوان I2C ومعرّفات الجهاز#

apds9960.APDS9960_I2C_ADDR: int#

عنوان I2C الافتراضي المكوّن من 7 بتات لـ APDS9960 (0x39).

apds9960.APDS9960_DEV_ID: list#

القائمة الافتراضية لقيم سجل معرّف الجهاز الصالحة ([0xAB, 0x9C, 0xA8, -0x55]).

ضبط الإيماءات#

apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int#

الحد الأدنى لمقدار العيّنة (لكل ثنائي ضوئي) الذي يستخدمه فاكّ ترميز الإيماءات عند البحث عن أولى/آخر عيّنات FIFO ضمن النطاق.

apds9960.APDS9960_GESTURE_SENSITIVITY_1: int#

عتبة على فروق U/D وL/R المتراكمة، التي فوقها يلتزم فاكّ الترميز باتجاه تمرير.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int#

عتبة على فروق U/D وL/R لكل خطوة، التي تحتها يعتبر فاكّ الترميز العيّنة مرشحة للاقتراب/الابتعاد بدلاً من التمرير.

apds9960.APDS9960_TIME_FIFO_PAUSE: int#

عدد المللي ثانية التي تنام فيها حلقة الإيماءات بين عمليات تفريغ FIFO.

أوضاع الميزات#

تُمرَّر هذه القيم إلى APDS9960.setMode().

apds9960.APDS9960_MODE_POWER: int#

بت تشغيل الطاقة (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int#

بت تمكين محرك الضوء المحيط/اللون (1).

apds9960.APDS9960_MODE_PROXIMITY: int#

بت تمكين محرك القرب (2).

apds9960.APDS9960_MODE_WAIT: int#

بت تمكين حالة الانتظار (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int#

بت تمكين مقاطعة الضوء المحيط (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int#

بت تمكين مقاطعة القرب (5).

apds9960.APDS9960_MODE_GESTURE: int#

بت تمكين محرك الإيماءات (6).

apds9960.APDS9960_MODE_ALL: int#

قيمة حارسة (7) تُخبر APDS9960.setMode() بتمكين أو تعطيل كل بت في سجل ENABLE دفعة واحدة.

تيارات قيادة LED#

apds9960.APDS9960_LED_DRIVE_100MA: int#

قيادة LED بتيار 100 mA (0).

apds9960.APDS9960_LED_DRIVE_50MA: int#

قيادة LED بتيار 50 mA (1).

apds9960.APDS9960_LED_DRIVE_25MA: int#

قيادة LED بتيار 25 mA (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int#

قيادة LED بتيار 12.5 mA (3).

كسب القرب (PGAIN)#

apds9960.APDS9960_PGAIN_1X: int#

كسب قرب 1x (0).

apds9960.APDS9960_PGAIN_2X: int#

كسب قرب 2x (1).

apds9960.APDS9960_PGAIN_4X: int#

كسب قرب 4x (2). الافتراضي الذي يطبقه المُنشئ.

apds9960.APDS9960_PGAIN_8X: int#

كسب قرب 8x (3).

كسب الضوء المحيط (AGAIN)#

apds9960.APDS9960_AGAIN_1X: int#

كسب ALS بمقدار 1x (0).

apds9960.APDS9960_AGAIN_4X: int#

كسب ALS بمقدار 4x (1). الافتراضي الذي يطبقه المُنشئ.

apds9960.APDS9960_AGAIN_16X: int#

كسب ALS بمقدار 16x (2).

apds9960.APDS9960_AGAIN_64X: int#

كسب ALS بمقدار 64x (3).

كسب الإيماءات (GGAIN)#

apds9960.APDS9960_GGAIN_1X: int#

كسب إيماءات 1x (0).

apds9960.APDS9960_GGAIN_2X: int#

كسب إيماءات 2x (1).

apds9960.APDS9960_GGAIN_4X: int#

كسب إيماءات 4x (2). الافتراضي الذي يطبقه المُنشئ.

apds9960.APDS9960_GGAIN_8X: int#

كسب إيماءات 8x (3).

تعزيز LED#

apds9960.APDS9960_LED_BOOST_100: int#

تعزيز LED بنسبة 100% (0).

apds9960.APDS9960_LED_BOOST_150: int#

تعزيز LED بنسبة 150% (1).

apds9960.APDS9960_LED_BOOST_200: int#

تعزيز LED بنسبة 200% (2).

apds9960.APDS9960_LED_BOOST_300: int#

تعزيز LED بنسبة 300% (3). يُطبَّق تلقائياً بواسطة APDS9960.enableGestureSensor().

أزمنة انتظار الإيماءات#

apds9960.APDS9960_GWTIME_0MS: int#

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int#

2.8 ms (1). الافتراضي الذي يطبقه المُنشئ.

apds9960.APDS9960_GWTIME_5_6MS: int#

5.6 ms (2).

apds9960.APDS9960_GWTIME_8_4MS: int#

8.4 ms (3).

apds9960.APDS9960_GWTIME_14_0MS: int#

14.0 ms (4).

apds9960.APDS9960_GWTIME_22_4MS: int#

22.4 ms (5).

apds9960.APDS9960_GWTIME_30_8MS: int#

30.8 ms (6).

apds9960.APDS9960_GWTIME_39_2MS: int#

39.2 ms (7).

اتجاهات الإيماءات#

تُعيد APDS9960.readGesture() هذه القيم.

apds9960.APDS9960_DIR_NONE: int#

لم تُكتشف أي إيماءة (0).

apds9960.APDS9960_DIR_LEFT: int#

تمرير يساري (1).

apds9960.APDS9960_DIR_RIGHT: int#

تمرير يميني (2).

apds9960.APDS9960_DIR_UP: int#

تمرير لأعلى (3).

apds9960.APDS9960_DIR_DOWN: int#

تمرير لأسفل (4).

apds9960.APDS9960_DIR_NEAR: int#

حدث اقتراب (5).

apds9960.APDS9960_DIR_FAR: int#

حدث ابتعاد (6).

apds9960.APDS9960_DIR_ALL: int#

قيمة حارسة (7) تُستخدم داخلياً لتمثيل "أي اتجاه".

حالات الإيماءات#

قيم الحالة الداخلية المُبلَّغ عنها عبر آلة حالة الإيماءات.

apds9960.APDS9960_STATE_NA: int#

لا حالة (0).

apds9960.APDS9960_STATE_NEAR: int#

اكتُشفت حالة اقتراب (1).

apds9960.APDS9960_STATE_FAR: int#

اكتُشفت حالة ابتعاد (2).

apds9960.APDS9960_STATE_ALL: int#

قيمة حارسة (3) تُستخدم داخلياً لتمثيل "أي حالة".