สารบัญ:
- ขั้นตอนที่ 1: ภาพรวมวงจร
- ขั้นตอนที่ 2: ภาพรวมซอฟต์แวร์
- ขั้นตอนที่ 3: การทดสอบอุปกรณ์ตรวจจับท่าทางสัมผัส APDS9960 แบบไม่ปิดกั้น
- ขั้นตอนที่ 4: บทสรุป
- ขั้นตอนที่ 5: การอ้างอิง
วีดีโอ: การใช้งานเซนเซอร์ท่าทางสัมผัส APDS9960 แบบไม่ปิดกั้น: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
คำนำ
คำแนะนำนี้มีรายละเอียดเกี่ยวกับวิธีการสร้างการใช้งานเซ็นเซอร์ท่าทางสัมผัส APDS9960 แบบไม่ปิดกั้นโดยใช้ SparkFun_APDS-9960_Sensor_Arduino_Library
บทนำ
ดังนั้นคุณอาจถามตัวเองว่าอะไรคือสิ่งที่ไม่ปิดกั้น? หรือแม้แต่การปิดกั้นในเรื่องนั้น?
ที่สำคัญกว่านั้นทำไมการมีสิ่งที่ไม่ปิดกั้นจึงสำคัญ?
ตกลง ดังนั้นเมื่อไมโครโปรเซสเซอร์รันโปรแกรม มันจะรันบรรทัดของโค้ดตามลำดับ และในการทำเช่นนั้นจะทำการเรียกและส่งคืนจากฟังก์ชันตามลำดับที่คุณเขียน
การบล็อคการโทรเป็นเพียงการเรียกใช้ฟังก์ชันใดๆ ก็ตามที่ทำให้การดำเนินการหยุดชะงัก หมายความว่าการเรียกใช้ฟังก์ชันที่ผู้เรียกจะไม่ดำเนินการดำเนินการต่อไปจนกว่าฟังก์ชันที่เรียกจะเสร็จสิ้นการดำเนินการ
เหตุใดจึงสำคัญ
ในกรณีที่คุณเขียนโค้ดบางโค้ดที่ต้องรันฟังก์ชันหลายๆ อย่างเป็นลำดับ เช่น อ่านอุณหภูมิ อ่านปุ่ม และอัปเดตการแสดงผล หากโค้ดสำหรับอัปเดตการแสดงผลเป็นการโทรบล็อก ระบบของคุณจะไม่ตอบสนองต่อ การกดปุ่มและการเปลี่ยนแปลงของอุณหภูมิ เนื่องจากโปรเซสเซอร์จะใช้เวลาทั้งหมดเพื่อรอให้หน้าจออัปเดตและไม่อ่านสถานะของปุ่มหรืออุณหภูมิล่าสุด
ในส่วนของฉัน ฉันต้องการสร้าง MQTT ผ่านอุปกรณ์เดสก์ท็อป IoT ที่รองรับ WiFi ซึ่งอ่านค่าอุณหภูมิ/ความชื้นในเครื่องและระยะไกล ระดับแสงโดยรอบ ความกดอากาศ ติดตามเวลา แสดงพารามิเตอร์ทั้งหมดเหล่านี้บน LCD บันทึกไปยัง uSD การ์ดแบบเรียลไทม์ อ่านอินพุตของปุ่ม เขียนไปยัง LED เอาต์พุต และตรวจสอบท่าทางสัมผัสเพื่อควบคุมสิ่งต่างๆ ในโครงสร้างพื้นฐาน IoT ของฉัน และทั้งหมดนั้นจะถูกควบคุมโดย ESP8266-12
น่าเสียดายที่ไลบรารี APDS9960 เพียงสองแหล่งเท่านั้นที่ฉันพบได้คือไลบรารี SparkFun และ AdaFruit ซึ่งทั้งคู่คัดลอกมาจากโค้ดแอปพลิเคชันจาก Avago (ผู้ผลิต ADPS9960) และมีการเรียกชื่อ 'readGesture' ซึ่งมีในขณะที่(1){}; วนซ้ำซึ่งเมื่อใช้ในโครงการข้างต้นจะทำให้ ESP8266-12E รีเซ็ตเมื่อใดก็ตามที่เซ็นเซอร์ ADPS9960 อิ่มตัว (เช่น เมื่อวัตถุอยู่ใกล้ ๆ หรือมีแหล่งกำเนิด IR อื่นที่ส่องสว่างเซ็นเซอร์)
ด้วยเหตุนี้ เพื่อแก้ไขพฤติกรรมนี้ ฉันจึงเลือกที่จะย้ายการประมวลผลของ Gestures ไปยังโปรเซสเซอร์ตัวที่สอง โดยที่ ESP8266-12E กลายเป็นไมโครคอนโทรลเลอร์หลัก และระบบนี้เป็นสเลฟ ดังที่แสดงในภาพ 1 & 2 ด้านบน ภาพรวมระบบ และไดอะแกรมองค์ประกอบของระบบตามลำดับ. รูปที่ 3 แสดงวงจรต้นแบบ
เพื่อจำกัดการเปลี่ยนแปลงที่ฉันต้องทำในโค้ดที่มีอยู่ ฉันยังเขียนคลาส/ไลบรารีแรปเปอร์ในจินตนาการที่ชื่อว่า 'APDS9960_NonBlocking'
ต่อไปนี้เป็นคำอธิบายโดยละเอียดของโซลูชันที่ไม่บล็อก
ฉันต้องการชิ้นส่วนอะไร?
หากคุณต้องการสร้างโซลูชัน I2C ซึ่งใช้งานได้กับไลบรารี APDS9960_NonBlocking คุณจะต้องใช้ส่วนต่างๆ ต่อไปนี้
- 1 ส่วนลด ATMega328P ที่นี่
- PCF8574P 1 เครื่องที่นี่
- ลด 6 ตัวต้านทาน 10K ที่นี่
- 4 จากตัวต้านทาน 1K ที่นี่
- 1 ปิด 1N914 Diode ที่นี่
- 1 ปิด PN2222 ทรานซิสเตอร์ NPN ที่นี่
- 1 จากคริสตัล 16MHz ที่นี่
- 2 ปิดตัวเก็บประจุ 0.1uF ที่นี่
- 1 ปิด 1000uF ตัวเก็บประจุด้วยไฟฟ้าที่นี่
- 1 ปิด 10uF ตัวเก็บประจุด้วยไฟฟ้าที่นี่
- 2 ปิดตัวเก็บประจุ 22pF ที่นี่
หากคุณต้องการอ่านเอาต์พุตของเซ็นเซอร์ท่าทางสัมผัสผ่านอินเทอร์เฟซแบบขนาน คุณสามารถวาง PCF8574P และตัวต้านทาน 10K สามตัวออกได้
ฉันต้องการซอฟต์แวร์อะไร
Arduino IDE 1.6.9
ฉันต้องการทักษะอะไร?
ในการตั้งค่าระบบ ให้ใช้ซอร์สโค้ด (ที่ให้มา) และสร้างวงจรที่จำเป็น คุณจะต้องมีสิ่งต่อไปนี้
- เข้าใจอุปกรณ์อิเล็กทรอนิกส์เพียงเล็กน้อย
- ความรู้เกี่ยวกับ Arduino และ IDE
- ความเข้าใจเกี่ยวกับวิธีการตั้งโปรแกรม Arduino แบบฝัง (ดูคำแนะนำ 'การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP')
- อดทนบ้าง.
หัวข้อที่ครอบคลุม
- ภาพรวมโดยย่อของวงจร
- ภาพรวมโดยย่อของซอฟต์แวร์
- การทดสอบอุปกรณ์ตรวจจับท่าทางสัมผัส APDS9960
- บทสรุป
- อ้างอิง
ขั้นตอนที่ 1: ภาพรวมวงจร
วงจรแบ่งออกเป็นสองส่วน
- อย่างแรกคือ I2C แบบอนุกรมเป็นการแปลงแบบขนานที่ทำได้โดยใช้ตัวต้านทาน R8…10 และ IC1 ที่นี่ R8…R10 ตั้งค่าที่อยู่ I2C สำหรับชิปตัวขยาย I/O 8 บิต IC1 และ NXP PCF8574A ช่วงที่อยู่ที่ถูกต้องสำหรับอุปกรณ์นี้คือ 0x38 … 0x3F ตามลำดับ ในตัวอย่างซอฟต์แวร์ I2C ที่ระบุ 'I2C_APDS9960_TEST.ino' '#define GESTURE_SENSOR_I2C_ADDRESS' จะต้องมีการเปลี่ยนแปลงเพื่อให้เหมาะกับช่วงที่อยู่นี้
-
ส่วนประกอบอื่น ๆ ทั้งหมดเป็นทาสที่ฝัง Arduino Uno และมีฟังก์ชันดังต่อไปนี้
- R1, T1, R2 และ D1 ให้อินพุตรีเซ็ตอุปกรณ์รอง ที่นี่พัลส์สูงที่ทำงานอยู่บน IC1 - P7 จะบังคับให้ U1 รีเซ็ต
- R3, R4 เป็นตัวต้านทานจำกัดกระแสสำหรับอุปกรณ์ฝังตัวที่เขียนโปรแกรมสาย TX/RX
- C5 และ R7 อนุญาตให้ Arduino IDE ตั้งโปรแกรม U1 โดยอัตโนมัติผ่านพัลส์บนสาย DTR ของอุปกรณ์ FTDI ที่ต่ออยู่
- R5 และ R6 เป็นตัวต้านทานแบบดึงขึ้น I2C สำหรับ APDS9960 พร้อม C6 ที่ให้การแยกรางจ่ายไฟในท้องถิ่น
- U1, C1, C2 และ Q1 สร้าง Arduino Uno แบบฝังและเป็นนาฬิกาตามลำดับ
- สุดท้าย C3 และ C4 ให้การแยกรางจ่ายไฟในพื้นที่สำหรับ U1
ขั้นตอนที่ 2: ภาพรวมซอฟต์แวร์
คำนำ
ในการรวบรวมซอร์สโค้ดนี้ให้สำเร็จ คุณจะต้องมีไลบรารีเพิ่มเติมต่อไปนี้เพื่อตั้งโปรแกรม Arduino Uno U1 ที่ฝังไว้
SparkFun_APDS9960.h
- โดย: Steve Quinn
- วัตถุประสงค์: นี่เป็นเวอร์ชันแยกของเซ็นเซอร์ SparkFun APDS9960 ที่แยกจาก jonn26/SparkFun_APDS-9960_Sensor_Arduino_Library มีการดัดแปลงเล็กน้อยเพื่อช่วยในการแก้ปัญหาและมีตัวตรวจจับที่ไม่รู้สึกไวเพื่อลดการกระตุ้นที่หลอกลวง
- จาก:
APDS9960_NonBlocking.h
- โดย: Steve Quinn
- วัตถุประสงค์: จัดเตรียมอินเทอร์เฟซที่สะอาดเพื่อฝังการใช้งานเซ็นเซอร์ท่าทางสัมผัส APDS9960 แบบไม่ปิดกั้นลงในโค้ด Arduino ของคุณ
- จาก:
ดูคำแนะนำต่อไปนี้เกี่ยวกับวิธีการตั้งโปรแกรมไมโครคอนโทรลเลอร์ Arduino Uno (ATMega328P) แบบฝัง หากคุณไม่คุ้นเคยกับวิธีการบรรลุเป้าหมายนี้
การเขียนโปรแกรม ATTINY85, ATTINY84 และ ATMEGA328P: ARDUINO AS ISP
ภาพรวมการทำงาน
ไมโครคอนโทรลเลอร์ทาสที่ฝังตัว ATMega328P จะสำรวจบรรทัด INT จาก ADPS9960 เมื่อบรรทัดนี้เหลือน้อย ไมโครคอนโทรลเลอร์จะอ่านการลงทะเบียน ADPS9960 และพิจารณาว่ามีการตรวจจับท่าทางที่ถูกต้องหรือไม่ หากตรวจพบท่าทางที่ถูกต้อง โค้ดสำหรับท่าทางสัมผัส 0x0…0x6, 0xF จะถูกวางบนพอร์ต B และ 'nGestureAvailable' จะถูกยืนยันในระดับต่ำ
เมื่ออุปกรณ์หลักเห็นว่า 'nGestureAvailable' ทำงานอยู่ อุปกรณ์จะอ่านค่าบนพอร์ต B จากนั้นจึงกะพริบ 'nGestureClear' ต่ำชั่วคราวเพื่อรับทราบการรับข้อมูล
จากนั้นอุปกรณ์ทาสจะยกเลิกการยืนยัน 'nGestureAvailable' สูงและล้างข้อมูลในพอร์ต B รูปที่ 5 ด้านบนแสดงการดึงหน้าจอที่นำมาจากตัววิเคราะห์ลอจิกระหว่างรอบการตรวจจับ/อ่านแบบเต็ม
ภาพรวมรหัส
Pic 1 ด้านบนให้รายละเอียดว่าซอฟต์แวร์ใน U1 ทำงานอย่างไรกับ Arduino Uno ทาสที่ฝังตัวพร้อมกับ Pic 2 ว่างานพื้นหลัง / เบื้องหน้าทั้งสองมีปฏิสัมพันธ์กันอย่างไร Pic 3 เป็นส่วนรหัสที่สรุปวิธีใช้ APDS9960_NonBlockinglibrary Pic 4 ให้การจับคู่ระหว่าง Arduino Uno Digital Pins และพินฮาร์ดแวร์จริงบน ATMega328P
หลังจากรีเซ็ตไมโครคอนโทรลเลอร์ทาสที่ฝังไว้จะเริ่มต้น APDS9960 ซึ่งอนุญาตให้ตรวจจับท่าทางเพื่อทริกเกอร์เอาต์พุต INT และกำหนดค่าเป็น I/O โดยแนบรูทีนบริการขัดจังหวะ (ISR) 'GESTURE_CLEAR ()' เพื่อขัดจังหวะเวกเตอร์ INT0 (พินดิจิตอล 2, ฮาร์ดแวร์ IC พิน 4) กำหนดค่าสำหรับทริกเกอร์ขอบตก รูปแบบนี้เป็นอินพุต nGestureClear จากอุปกรณ์หลัก
พินเอาต์พุตขัดจังหวะ 'INT' จาก APDS9960 เชื่อมต่อกับ Digital Pin 4, Hardware IC Pin 6 ซึ่งกำหนดค่าเป็นอินพุตไปยัง U1
สายสัญญาณ 'nGestureAvailable' บนพินดิจิตอล 7, พิน IC ฮาร์ดแวร์ 13 ได้รับการกำหนดค่าเป็นเอาต์พุตและตั้งค่าสูง ไม่ทำงาน (ไม่ยืนยัน)
สุดท้าย Port B บิต 0…3 ตามลำดับได้รับการกำหนดค่าเป็นเอาต์พุตและตั้งค่าต่ำ สิ่งเหล่านี้เป็นข้อมูลแทะซึ่งแสดงถึงประเภทท่าทางสัมผัสต่างๆ ที่ตรวจพบ ไม่มี = 0x0, ข้อผิดพลาด = 0xF, ขึ้น = 0x1, ลง = 0x2, ซ้าย = 0x3, ขวา = 0x4, ใกล้ = 0x5 และ Far = 0x6
งานพื้นหลัง 'Loop' มีกำหนดการซึ่งจะสำรวจ INT เอาต์พุตขัดจังหวะ APDS9960 อย่างต่อเนื่องผ่านการอ่าน Digital Pin 4 เมื่อเอาต์พุต INT จาก APDS9960 ทำงานต่ำแสดงว่าเซ็นเซอร์ถูกทริกเกอร์ ไมโครคอนโทรลเลอร์พยายามตีความท่าทางใด ๆ โดยการเรียก 'readGesture ()' ด้วยในขณะที่ (1) {}; วงไม่มีที่สิ้นสุด
หากตรวจพบท่าทางที่ถูกต้อง ค่านี้จะถูกเขียนไปยังพอร์ต B เอาต์พุต 'nGestureAvailable' จะถูกยืนยันและตั้งค่าสัญญาณบูลีน 'bGestureAvailable' เพื่อป้องกันไม่ให้มีการบันทึกท่าทางสัมผัสเพิ่มเติม
เมื่อต้นแบบตรวจพบเอาต์พุต 'nGestureAvailable' ที่ใช้งานอยู่ ค่าใหม่นี้จะอ่านค่าและพัลส์ 'nGestureClear' ที่ทำงานต่ำ ขอบที่ตกลงมานี้จะทริกเกอร์งานเบื้องหน้า 'ISR GESTURE_CLEAR()' เพื่อจัดกำหนดการระงับการดำเนินการของงานเบื้องหลัง 'Loop' การล้างพอร์ต B สัญญาณ 'bGestureAvailable' และเอาต์พุต 'nGestureAvailable'
งานเบื้องหน้า 'GESTURE_CLEAR()' ถูกระงับ และงานเบื้องหลัง 'Loop' ถูกจัดกำหนดการใหม่ ขณะนี้สามารถสัมผัสท่าทางเพิ่มเติมจาก APDS9960 ได้แล้ว
โดยการใช้อินเตอร์รัปต์ทริกเกอร์งานเบื้องหน้า/พื้นหลังในลักษณะนี้ ลูปอนันต์ที่อาจเกิดขึ้นใน 'readGesture()' ของอุปกรณ์สเลฟจะไม่ส่งผลกระทบต่ออุปกรณ์หลักจากการทำงานและจะไม่ขัดขวางการทำงานของอุปกรณ์สเลฟเช่นกัน นี่เป็นพื้นฐานของระบบปฏิบัติการแบบเรียลไทม์ (RTOS) ที่ง่ายมาก
หมายเหตุ: คำนำหน้า 'n' หมายถึงแอ็คทีฟต่ำหรือถูกยืนยันเช่นเดียวกับใน 'nGestureAvailable'
ขั้นตอนที่ 3: การทดสอบอุปกรณ์ตรวจจับท่าทางสัมผัส APDS9960 แบบไม่ปิดกั้น
คำนำ
แม้ว่าโมดูล APDS9960 จะมาพร้อมกับ +5v แต่จะใช้ตัวควบคุมออนบอร์ด +3v3 ซึ่งหมายความว่าสาย I2C นั้นสอดคล้องกับ +3v3 และไม่ใช่ +5v นี่คือเหตุผลที่ฉันเลือกใช้ Arduino Due ที่สอดคล้องกับ +3v3 เป็นตัวควบคุมไมโครทดสอบ เพื่อขจัดความจำเป็นในการเปลี่ยนระดับ
อย่างไรก็ตาม หากคุณต้องการใช้ Arduino Uno จริง คุณจะต้องเลื่อนระดับเส้น I2C เป็น U1 ดูคำแนะนำต่อไปนี้ซึ่งฉันได้แนบชุดสไลด์ที่มีประโยชน์ (I2C_LCD_With_Arduino) ซึ่งให้คำแนะนำที่เป็นประโยชน์มากมายเกี่ยวกับการใช้ I2C
การทดสอบอินเทอร์เฟซ I2C
ภาพที่ 1 และ 2 ด้านบนแสดงวิธีการตั้งค่าและโปรแกรมระบบสำหรับอินเทอร์เฟซ I2C คุณจะต้องดาวน์โหลดและติดตั้งไลบรารี APDS9960_NonBlocking ก่อน ที่นี่
การทดสอบอินเทอร์เฟซแบบขนาน
ภาพ 3 และ 4 มีรายละเอียดเหมือนกันสำหรับอินเทอร์เฟซแบบขนาน
ขั้นตอนที่ 4: บทสรุป
ทั่วไป
รหัสทำงานได้ดีและตรวจจับท่าทางตอบสนองโดยไม่มีผลบวกปลอม มันใช้งานได้สองสามสัปดาห์แล้วในฐานะอุปกรณ์ทาสในโครงการต่อไปของฉัน ฉันได้ลองใช้โหมดความล้มเหลวที่แตกต่างกันมากมาย (และมี moggie ในครัวเรือนของ Quinn ที่อยากรู้อยากเห็น) ซึ่งก่อนหน้านี้ส่งผลให้มีการรีเซ็ต ESP8266-12 โดยไม่มีผลเสีย
การปรับปรุงที่เป็นไปได้
-
ที่ชัดเจน. เขียนไลบรารี APDS9960 Gesture Sensor ใหม่อีกครั้งเพื่อไม่ให้บล็อก
ที่จริงแล้ว ฉันได้ติดต่อ Broadcom ซึ่งส่งฉันไปยังตัวแทนจำหน่ายในพื้นที่ซึ่งเพิกเฉยต่อคำขอการสนับสนุนของฉันโดยทันที ฉันไม่ใช่ SparkFun หรือ AdaFruit ฉันเดา อย่างนี้คงต้องรออีกซักพัก
- ย้ายรหัสไปยังไมโครคอนโทรลเลอร์รองที่เล็กกว่า การใช้ ATMega328P สำหรับงานหนึ่งงานนั้นค่อนข้างเกินความสามารถ แม้ว่าในตอนแรกฉันจะดูที่ ATTiny84 แต่ก็หยุดใช้อันนั้นเพราะฉันรู้สึกว่าขนาดที่คอมไพล์ของโค้ดนั้นพอดีกับเส้นขอบ ด้วยค่าใช้จ่ายเพิ่มเติมที่ต้องแก้ไขไลบรารี APDS9960 เพื่อทำงานกับไลบรารี I2C อื่น
ขั้นตอนที่ 5: การอ้างอิง
จำเป็นสำหรับโปรแกรม Arduino ฝังตัว (ATMega328P - U1)
SparkFun_APDS9960.h
- โดย: Steve Quinn
- วัตถุประสงค์: นี่เป็นเวอร์ชันแยกของเซ็นเซอร์ SparkFun APDS9960 ที่แยกจาก jonn26/SparkFun_APDS-9960_Sensor_Arduino_Library มีการดัดแปลงเล็กน้อยเพื่อช่วยในการแก้ปัญหาและมีตัวตรวจจับที่ไม่รู้สึกไวเพื่อลดการกระตุ้นที่หลอกลวง
- จาก:
จำเป็นต้องฝังฟังก์ชันที่ไม่บล็อกนี้ลงในโค้ด Arduino ของคุณและให้ตัวอย่างการทำงาน
APDS9960_NonBlocking.h
- โดย: Steve Quinn
- วัตถุประสงค์: จัดเตรียมอินเทอร์เฟซที่สะอาดเพื่อฝังการใช้งาน APDS9960 Gesture Sensor ที่ไม่ปิดกั้นนี้ในโค้ด Arduino ของคุณ
- จาก:
ระบบปฏิบัติการตามเวลาจริง
https://en.wikipedia.org/wiki/Real-time_operating_system
APDS9960 เอกสารข้อมูลสินค้า
https://cdn.sparkfun.com/assets/learn_tutorials/3/2/1/Avago-APDS-9960-datasheet.pdf
เอกสารข้อมูล PCF8574A
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
การวัดระยะใกล้เคียงด้วย Gesture Sensor APDS9960: 6 ขั้นตอน
การวัดความใกล้เคียงระยะทางด้วยเซ็นเซอร์ท่าทางสัมผัส APDS9960: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีวัดระยะทางโดยใช้เซ็นเซอร์ท่าทางสัมผัส APDS9960, Arduino และ Visuino ดูวิดีโอ
วิธีใช้ APDS9960 Gesture Sensor กับ Arduino: 7 ขั้นตอน
วิธีใช้เซ็นเซอร์ท่าทางสัมผัส APDS9960 กับ Arduino: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้เซ็นเซอร์ท่าทางสัมผัส APDS9960 กับ Arduino เพื่อแสดงทิศทางของมือบนจอแสดงผล OLED โดยใช้ซอฟต์แวร์ Visuino ดูวิดีโอ
วิธีใช้ท่าทางสัมผัส APDS9960 กับ SkiiiD: 9 ขั้นตอน
วิธีใช้ท่าทางสัมผัส APDS9960 กับ SkiiiD: บทช่วยสอนในการพัฒนา Collision Switch XD206 ด้วย skiiiD