Датчик АПДС-9960, маленькая жемчужина инженерной мысли, представляет собой удивительный компонент, который позволяет обнаруживать жесты и приближение, а также измерять окружающее освещение и цвет. Используемый в новейших электронных устройствах, таких как Samsung Galaxy S5, сегодня он доступен любому энтузиасту электроники, работающему с такими платформами, как Arduino. Благодаря способности распознавать жесты в диапазоне от 5 до 20 см и простой интеграции с другими устройствами он является идеальным выбором для тех, кто хочет включить управление жестами в свои проекты.
В этой статье мы подробно рассмотрим, как работает этот датчик и как его подключить к Arduino, обращая внимание на множество вариантов его использования и предлагая примеры кода, которые позволят вам быстро начать с ним работать.
Что такое датчик APDS-9960?
El АПДС-9960 Это датчик, который сочетает в себе четыре основные функции: обнаружение жестов, приближение, цвет и окружающее освещение. Это устройство, которое передает свои показания с использованием протокола связи I2C, что значительно облегчает его использование с такими микроконтроллерами, как Arduino. Среди его достоинств выделяется способность измерять цвет и окружающее освещение, а также бесконтактно распознавать жесты, распознавая такие движения, как влево, вправо, вверх, вниз, близко и далеко.
Этот датчик работает благодаря интеграции инфракрасный излучатель и четыре направленные фотодиоды, которые позволяют обнаруживать и рассчитывать направление движения близлежащих объектов. Кроме того, он имеет возможность измерять количество окружающего света и определять цвета RGB.
Подключение датчика APDS-9960 к Arduino
Для подключения АПДС-9960 с Arduino вам просто нужно установить связь по шине I2C. Этот датчик работает при напряжении 3.3 В, поэтому очень важно выполнить соответствующие подключения, чтобы не повредить его, особенно если вы работаете с 5 В Ардуино. В этом случае целесообразно использовать адаптер логического уровня чтобы снизить напряжение шины I2C.
- GND к выводу GND Arduino.
- VDC к выводу 3.3 В Arduino.
- SDA к выводу SDA Arduino.
- SCL к выводу SCL Arduino.
Если ваша модель Arduino рассчитана на напряжение 5 В, очевидно, необходимо принять дополнительные меры предосторожности, хотя в некоторых случаях сообщалось, что датчик может работать без повреждений. Однако в долгосрочной перспективе это не является полной уверенностью.
Библиотеки и код для Arduino
Чтобы использовать APDS-9960 с Arduino, один из самых простых способов — использовать библиотеку, разработанную Adafruit, что упрощает его использование. Вы можете скачать его с GitHub и установите его непосредственно в среду разработки Arduino.
Базовый пример: отображение жестов через последовательный порт
В этом первом примере обнаруженные жесты будут считываться и отображаться через последовательный порт. Просто проведите рукой над датчиком на расстоянии от 5 до 20 см, чтобы жесты были обнаружены:
#include "Adafruit_APDS9960.h"
Adafruit_APDS9960 apds;
void setup() {
Serial.begin(115200);
if (!apds.begin()) {
Serial.println("Error al inicializar el sensor, comprueba el cableado");
while (1);
}
apds.enableGesture(true);
}
void loop() {
uint8_t gesture = apds.readGesture();
if (gesture == APDS9960_DOWN) Serial.println("Abajo");
if (gesture == APDS9960_UP) Serial.println("Arriba");
if (gesture == APDS9960_LEFT) Serial.println("Izquierda");
if (gesture == APDS9960_RIGHT) Serial.println("Derecha");
}
Этот код — всего лишь пример того, что можно сделать с помощью датчика жестов, такого как APDS-9960. Когда вы проводите рукой по устройству, программа распознает жест и отображает результат на консоли последовательного порта.
Расширенный пример: мигание светодиода в зависимости от жеста
Во втором примере мы объединим обнаруженные жесты с Светодиод встроен в плату. В зависимости от обнаруженного жеста мы мигнем светодиодом определенное количество раз:
#include "Adafruit_APDS9960.h"
Adafruit_APDS9960 apds;
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
if (!apds.begin()) {
Serial.println("Error al inicializar el sensor");
while (1);
}
apds.enableGesture(true);
}
void loop() {
uint8_t gesture = apds.readGesture();
if (gesture == APDS9960_DOWN) blink(1);
if (gesture == APDS9960_UP) blink(2);
if (gesture == APDS9960_LEFT) blink(3);
if (gesture == APDS9960_RIGHT) blink(4);
}
void blink(int times) {
for (int i = 0; i < times; i++) {
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
}
}
Общие проблемы и решения
Несмотря на то, АПДС-9960 Это довольно надежный датчик, правда, в условиях большого количества света или помех показания могут не сработать. Кроме того, при использовании в неидеальных условиях он может не обнаруживать движение или даже генерировать ложные срабатывания.
Еще один аспект, который следует иметь в виду, заключается в том, что этот датчик во многом зависит от правильного окружающего освещения и, хотя он очень чувствителен, он может плохо работать с объектами в таких условиях, как блестящие поверхности или в перчатках, поскольку они могут неправильно отражать свет. . излучает инфракрасный свет.
Протокол I2C, который использует это устройство, довольно прост, но все же важно убедиться в правильности соединений и отсутствии проблем с напряжением.
Датчик APDS-9960 — отличный инструмент для проектов, стремящихся интегрировать обнаружение жестов и приближения. Он экономичен, легко интегрируется через I2C и имеет библиотеки, упрощающие его использование. Хотя в некоторых условиях он может создавать проблемы, его регулируемая чувствительность и возможность работать за стеклом делают его универсальным выбором. С помощью предоставленных примеров кода вы можете начать работу с этим датчиком и раскрыть весь его потенциал в своих проектах.