/* Arduino LSM9DS1 - Simple Accelerometer This example reads the acceleration values from the LSM9DS1 sensor and continuously prints them to the Serial Monitor or Serial Plotter. The circuit: - Arduino Nano 33 BLE Sense created 10 Jul 201 by Riccardo Rizzo This example code is in the public domain. */ #include // initialize axis float x, y, z; int degreesX = 0; int degreesY = 0; // initialize LED pins to Nano board int PurpleLED = 10; int GreenLED = 3; void setup() { Serial.begin(9600); //while (!Serial); Serial.println("Started"); pinMode(PurpleLED, OUTPUT); pinMode(GreenLED, OUTPUT); digitalWrite(PurpleLED, LOW); digitalWrite(GreenLED, LOW); if (!IMU.begin()) { Serial.println("Failed to initialize IMU!"); while (1); } Serial.print("Accelerometer sample rate = "); Serial.print(IMU.accelerationSampleRate()); Serial.println(" Hz"); //Serial.println(); //Serial.println("Acceleration in G's"); //Serial.println("X\tY\tZ"); } void loop() { float x, y, z; if (IMU.accelerationAvailable()) { IMU.readAcceleration(x, y, z); //Serial.print(x); //Serial.print('\t'); //Serial.print(y); //Serial.print('\t'); //Serial.println(z); } // Tilt RIGHT = nanoboard face down, relative to floor if(x > 0.5){ x = 100*x; degreesX = map(x, 0, 97, 0, 90); Serial.print("Tilting RIGHT "); Serial.print(degreesX); Serial.println(" degrees"); digitalWrite(PurpleLED, LOW); digitalWrite(GreenLED, HIGH); } // Tilt LEFT = nanoboard face down, relative to floor if(x < -0.5){ x = 100*x; degreesX = map(x, 0, -100, 0, 90); Serial.print("Tilting LEFT "); Serial.print(degreesX); Serial.println(" degrees"); digitalWrite(PurpleLED, HIGH); digitalWrite(GreenLED, LOW); } // Tilt DOWN = nanoboard vertical, perpendicular to floor if(y > 0.8){ y = 100*y; degreesY = map(y, 0, 97, 0, 90); Serial.print("Tilting DOWN "); Serial.print(degreesY); Serial.println(" degrees *CENTER*"); digitalWrite(PurpleLED, HIGH); digitalWrite(GreenLED, HIGH); } // Tilt UP = nanoboard vertical, slight opposite to tilt down if(y < -0.1){ y = 100*y; degreesY = map(y, 0, -100, 0, 90); Serial.print("Tilting UP "); Serial.print(degreesY); Serial.println(" degrees"); digitalWrite(PurpleLED, LOW); digitalWrite(GreenLED, HIGH); } delay(100); }