Bom dia!
Estou enfrentando problemas com o sensor APDS9960;
Antes quando utilizava uma placa arduino o sensor funcionava tranquilamente e reconhecia os gestos. Mudei de placa e o sensor é iniciado porém não reconhece os gestos.
/********** TCC PROGRAMAÇÃO SENSOR--DISPLAY *********
Display LCD 16 x 2
/*Arduino Pin APDS-9960 Board Function
3.3V VCC Power
GND GND Ground
A4 SDA I2C Data
A5 SCL I2C Clock
D2 INT Interrupt
****************************************************************/
//Inclusão de bibliotecas
#include <Wire.h>
#include <SparkFun_APDS9960.h>
//Carrega a biblioteca LiquidCrystal display
#include <LiquidCrystal.h>
//Pinos
#define APDS9960_INT 2 // Needs to be an interrupt pin (SENSOR)
//Variáveis globais
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;
//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 7);// mudei 2 para 7
void setup() {
//Seta o pino de interrupção como entrada
pinMode(APDS9960_INT, INPUT);
//Inicializa a comunicação serial
Serial.begin(9600);
Serial.println();
Serial.println(F("--------------------------------"));
Serial.println(F("SparkFun APDS-9960 - Teste de Gestos"));
Serial.println(F("--------------------------------"));
//Iniciando rotina de interrupção
attachInterrupt(0, interruptRoutine, FALLING);
//Iniciando o módulo APDS-9960
if ( apds.init() ) {
Serial.println(F("APDS-9960: Inicialização completa!"));
} else {
Serial.println(F("APDS-9960: Algo deu errado durante a inicialização!"));
}
//Iniciando o sensor de gestos
if ( apds.enableGestureSensor(true) ) {
Serial.println(F("O sensor de gestos está funcionando!"));
} else {
Serial.println(F("Algo deu errado durante a unidade do sensor de gestos!"));
}
// SENSOR ACIMA, DISPLAY ABAIXO:
//Define o número de colunas e linhas do LCD
lcd.begin(16, 2);
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 2, linha 0;
lcd.setCursor(2, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Ligando..."); //Ligando (Tela de carregamento)
delay(6000); //tempo de carregamento
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(1, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Ola, eu me ");
lcd.setCursor(1, 1);
lcd.print("chamo Horen =)"); //Apresentação do projeto
}
void loop() {
//Lógica de interrupção
if( isr_flag == 1 ) {
detachInterrupt(0);
handleGesture();
isr_flag = 0;
attachInterrupt(0, interruptRoutine, FALLING);
}
}
//Função responsável pela interrupção
void interruptRoutine() {
isr_flag = 1;
}
//função responsável por identificar e retornar os resultados da leitura
void handleGesture() {
if ( apds.isGestureAvailable() ) {
switch ( apds.readGesture() ) {
case DIR_UP:
Serial.println("CIMA");
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(3, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Oi Horen");
break;
case DIR_DOWN:
Serial.println("BAIXO");
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(3, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Sim e Voce?");
break;
case DIR_LEFT:
Serial.println("ESQUERDA");
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(3, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Prazer em");
lcd.setCursor(3, 1);
//Envia o texto entre aspas para o LCD
lcd.print("Conhece-lo!");
break;
case DIR_RIGHT:
Serial.println("Direita"); //direita
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(3, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Ate mais!");
break;
case DIR_NEAR:
Serial.println("APROXIMANDO");
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(1, 0);
//Envia o texto entre aspas para o LCD
lcd.print("Ola, eu me ");
lcd.setCursor(1, 1);
lcd.print("chamo Horen =)"); //Apresentação do projeto
break;
case DIR_FAR:
Serial.println("DISTANCIANDO");
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(3, 0);
//Envia o texto entre aspas para o LCD
lcd.print("DISTANCIANDO");
break;
default:
Serial.println("GESTO NÃO RECONHECIDO");
}
}
}
Estou utilizando um "Arduino Uno" paralelo.