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للقيم خارج النطاق.
مستشعر الضوء المحيط / RGB¶
مستشعر القرب¶
محرك الإيماءات¶
- 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)، والعدّادات، وعدّادات الاقتراب/الابتعاد، والحالة، وآخر حركة مفكوكة الترميز.
عتبات القرب¶
- 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).
- getAmbientLightGain() int¶
تُعيد كسب مستشعر الضوء المحيط. مُرمّز كواحد من قيم
APDS9960_AGAIN_*(0 = 1x، 1 = 4x، 2 = 16x، 3 = 64x).
- setAmbientLightGain(drive: int) None¶
تضبط كسب مستشعر الضوء المحيط.
driveهو واحد من قيمAPDS9960_AGAIN_*.
تعويض كسب القرب وقناع الثنائيات الضوئية¶
تهيئة الإيماءات¶
- getGestureGain() int¶
تُعيد كسب الثنائي الضوئي المستخدم أثناء وضع الإيماءات. مُرمّز كواحد من قيم
APDS9960_GGAIN_*(0 = 1x، 1 = 2x، 2 = 4x، 3 = 8x).
- getGestureLEDDrive() int¶
تُعيد تيار قيادة LED المستخدم أثناء وضع الإيماءات. مُرمّز كواحد من قيم
APDS9960_LED_DRIVE_*.
عتبات مقاطعة الضوء المحيط¶
- getLightIntLowThreshold() int¶
تُعيد العتبة المنخفضة المكوّنة من 16 بت المستخدمة لمقاطعة الضوء المحيط.
- setLightIntLowThreshold(threshold: int) None¶
تضبط العتبة المنخفضة المكوّنة من 16 بت المستخدمة لمقاطعة الضوء المحيط.
تمكين المقاطعات ومسحها¶
- 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_GESTURE_THRESHOLD_OUT: int¶
الحد الأدنى لمقدار العيّنة (لكل ثنائي ضوئي) الذي يستخدمه فاكّ ترميز الإيماءات عند البحث عن أولى/آخر عيّنات FIFO ضمن النطاق.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
عتبة على فروق U/D وL/R المتراكمة، التي فوقها يلتزم فاكّ الترميز باتجاه تمرير.
أوضاع الميزات¶
تُمرَّر هذه القيم إلى APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
قيمة حارسة (
7) تُخبرAPDS9960.setMode()بتمكين أو تعطيل كل بت في سجل ENABLE دفعة واحدة.
تيارات قيادة LED¶
كسب القرب (PGAIN)¶
كسب الضوء المحيط (AGAIN)¶
كسب الإيماءات (GGAIN)¶
تعزيز LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
تعزيز LED بنسبة 300% (
3). يُطبَّق تلقائياً بواسطةAPDS9960.enableGestureSensor().
أزمنة انتظار الإيماءات¶
اتجاهات الإيماءات¶
تُعيد APDS9960.readGesture() هذه القيم.
حالات الإيماءات¶
قيم الحالة الداخلية المُبلَّغ عنها عبر آلة حالة الإيماءات.