Hola !! Necesito saber como hacer funcionar el sensor AS 7261 spectral click. Les dejo el programa las salidas X,Y,Z solo arrojan -1. Espero puedan darme una mano. Saludos
#include <Wire.h>
#define AS7261_ADDRESS 0x49
void setup() {
Serial.begin(9600);
Wire.begin();
// Inicializar el sensor AS7261
Wire.beginTransmission(AS7261_ADDRESS);
Wire.write(0x04); // Registro de configuración
Wire.write(0x02); // Habilitar el sensor en modo de operación continua
Wire.endTransmission();
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
command.trim(); // Eliminar espacios en blanco al principio y al final del comando
// Comprobar si el comando es para encender o apagar el LED
if (command.startsWith("ATLED0=")) {
int value = command.substring(7).toInt(); // Obtener el valor después de "ATLED0="
if (value == 1000) {
digitalWrite(LED_BUILTIN, HIGH); // Encender el LED interno de la placa Arduino
Serial.println("OK"); // Confirmar que se encendió el LED
} else if (value == 0) {
digitalWrite(LED_BUILTIN, LOW); // Apagar el LED interno de la placa Arduino
Serial.println("OK"); // Confirmar que se apagó el LED
} else {
Serial.println("ERROR: Valor no válido. Use 100 para encender y 0 para apagar el LED.");
}
} else {
Serial.println("ERROR: Comando no reconocido.");
}
}
byte sensorData[12];
// Leer datos del sensor AS7261
Wire.beginTransmission(AS7261_ADDRESS);
Wire.write(0x05); // Registro de inicio de datos
Wire.endTransmission();
Wire.requestFrom(AS7261_ADDRESS, 12); // Leer 12 bytes de datos
for(int i = 0; i < 12; i++) {
sensorData[i] = Wire.read();
}
// Convertir datos a valores XYZ
int xyz[3];
for(int i = 0; i < 3; i++) {
xyz[i] = (sensorData[i*4] << 8) | sensorData[i*4 + 1];
}
// Imprimir valores XYZ
Serial.print("X: ");
Serial.print(xyz[0]);
Serial.print(", Y: ");
Serial.print(xyz[1]);
Serial.print(", Z: ");
Serial.println(xyz[2]);
delay(1000); // Esperar 1 segundo antes de leer nuevamente
}
