Den Beschleunigungssensor/Accelerometer mit dem Arduino programmieren: Unterschied zwischen den Versionen

Aus DDSWiki
Wechseln zu: Navigation, Suche
(Verkabelung / Pins)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 76: Zeile 76:
 
</pre>
 
</pre>
 
== Verkabelung / Pins ==
 
== Verkabelung / Pins ==
[[image:accelerometer_verkabelung.jpg|1000px]]
+
[[file:accelerometer_verkabelung.jpg|1000px]]
 +
* 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.

Aktuelle Version vom 16. August 2023, 15:30 Uhr

  • 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.