El modulo LSM9DS1 del Arduino Nano 33 BLE sense incluye un magnetómetro o brújula digital de 3 ejes. X , Y y Z. Su función principal es detectar el campo magnético terrestre en cada uno de los ejes de la placa. El eje X va a lo ancho de la placa, el Z a lo largo y el Y es perpendicular.
El primer paso es incluir la librería
#include <Arduino_LSM9DS1.h>
Inicializar el sensor a través de la instrucción IMU.begin() que devolverá true si todo va bien o false si hay algún error durante la inicialización.
if (!IMU.begin() ) {
Serial.println("Error al inicializar el sensor");
}
Para saber si hay alguna lectura disponible se pude usar la función IMU.magneticFieldAvailable()
if (IMU.magneticFieldAvailable()) {
}
Para obtener el valor se usa IMU.readMagneticField(x, y, z); Siendo x, y, z tres variables de tipo float donde devolverá los valores del campo magnético en el eje correspondiente:
IMU.readMagneticField(x, y, z);
El campo magnético de mide en microteslas
Veamos todo el código de ejemplo:
#include <Arduino_LSM9DS1.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (!IMU.begin()) {
Serial.println("Error al inicializar el sensor");
}
}
float x,y,z;
void loop() {
// comprobar si hay una lectura disponible
if (IMU.magneticFieldAvailable()) {
IMU.readMagneticField(x, y, z);
Serial.print("x: ");
Serial.print(x);
Serial.print(" y: ");
Serial.print(x);
Serial.print(" z: ");
Serial.println(z);
}
delay(500);
}
Pingback: Crear un detector de metales con un magnetómetro o brújula digital. | Construyendo a Chispas