#include
#include
#include
#include
#include
#include
// Include the TensorFlow Lite model
#include "gesture_model.h"
// TensorFlow Lite setup
tflite::MicroErrorReporter micro_error_reporter;
tflite::MicroInterpreter* interpreter;
TfLiteTensor* input;
TfLiteTensor* output;
void setup() {
Serial.begin(115200);
// Initialize the LSM9DS1 sensor
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
// Load the model
static tflite::MicroOpResolver<6> micro_op_resolver;
micro_op_resolver.AddFullyConnected();
micro_op_resolver.AddSoftmax();
static tflite::MicroInterpreter static_interpreter(
gesture_model, micro_op_resolver, tensor_arena, kTensorArenaSize, µ_error_reporter);
interpreter = &static_interpreter;
interpreter->AllocateTensors();
input = interpreter->input(0);
output = interpreter->output(0);
}
void loop() {
float ax, ay, az;
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(ax, ay, az);
// Prepare the input data
input->data.f[0] = ax;
input->data.f[1] = ay;
input->data.f[2] = az;
// Run inference
interpreter->Invoke();
// Read the result
float gesture = output->data.f[0];
Serial.print("Gesture Probability: ");
Serial.println(gesture);
}
delay(1000); // Adjust delay as needed
}