Den Beschleunigungssensor/Accelerometer mit dem Arduino programmieren

Aus DDSWiki
Wechseln zu: Navigation, Suche
  • Einfacher Test-Code der bei Erschütterung ein Signal über den Serial-Port sendet sowie ein LED kurz aufleuchten lässt
  • Die entsprechenden Libraries (siehe include-Befehl) von Adafruit müssen installiert werden

Arduino Code

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("Adafruit MPU6050 test!");

  // Try to initialize!
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");

  //setupt motion detection
  mpu.setHighPassFilter(MPU6050_HIGHPASS_0_63_HZ);
  mpu.setMotionDetectionThreshold(1);
  mpu.setMotionDetectionDuration(20);
  mpu.setInterruptPinLatch(true);	// Keep it latched.  Will turn off when reinitialized.
  mpu.setInterruptPinPolarity(true);
  mpu.setMotionInterrupt(true);

  Serial.println("");
  delay(100);

  pinMode(12, OUTPUT);
  digitalWrite(12, LOW);
}

void loop() {

  if(mpu.getMotionInterruptStatus()) {
    /* Get new sensor events with the readings */
    sensors_event_t a, g, temp;
    mpu.getEvent(&a, &g, &temp);

    /* Print out the values */
    Serial.print("AccelX:");
    Serial.print(a.acceleration.x);
    Serial.print(",");
    Serial.print("AccelY:");
    Serial.print(a.acceleration.y);
    Serial.print(",");
    Serial.print("AccelZ:");
    Serial.print(a.acceleration.z);
    Serial.print(", ");
    Serial.print("GyroX:");
    Serial.print(g.gyro.x);
    Serial.print(",");
    Serial.print("GyroY:");
    Serial.print(g.gyro.y);
    Serial.print(",");
    Serial.print("GyroZ:");
    Serial.print(g.gyro.z);
    Serial.println("");

    digitalWrite(12, HIGH);
    delay(500);
    digitalWrite(12, LOW);
  }

  delay(10);
}

Verkabelung / Pins

Accelerometer verkabelung.jpg

  • Die Verkabelung ist denkbar einfach. SCL und SDA sind sowohl am Arduino als auch am Accelerometer zu finden. Diese müssen je mit einem Kabel verbunden werden.
  • Weiters benötigt der Accelerometer noch 3.3V und GND
  • Die LED ist an den digitalen Pin 12 angeschlossen. Aus Gründen der Übersicht wurde auf ein Schutzwiderstand verzichtet. Dieser sollte noch an das LED angeschlossen werden.