In Ihrer CodeCell befindet sich ein BNO085 3-Achsen-Beschleunigungssensor, ein winziger Sensor, der Bewegungen misst. Mit nur wenigen Codezeilen können Sie Erschütterungen erkennen und bei Bewegung sogar eine LED-Leuchte auslösen! Lassen Sie uns Schritt für Schritt vorgehen.
Ein Beschleunigungsmesser misst die Beschleunigung – wie schnell etwas beschleunigt oder verlangsamt wird. Er erkennt:
Es spürt sogar die Schwerkraft! Wenn CodeCell stillsteht, zeigt die Z-Achse einen Wert nahe 9,81 m/s² an, was der Schwerkraft der Erde entspricht.
Beginnen wir zunächst mit dem Lesen der Echtzeit-Bewegungswerte vom integrierten Beschleunigungsmesser von CodeCell. Dieser Code zeigt, wie stark sich CodeCell in jede Richtung bewegt:
#include <CodeCell.h>
CodeCell myCodeCell;
float x = 0.0; // Beschleunigung der X-Achse
float y = 0.0; // Beschleunigung der Y-Achse
float z = 0.0; // Beschleunigung der Z-Achse
void setup() {
Serial.begin(115200);
myCodeCell.Init(MOTION_ACCELEROMETER); // Initialisiere den Beschleunigungsmesser
}
void-Schleife() {
if (myCodeCell.Run(10)) { // 10-mal pro Sekunde ausführen (10 Hz)
myCodeCell.Motion_AccelerometerRead(x, y, z); // Bewegungswerte lesen
Serial.print("X: "); Serial.print(x);
Serial.print(" Y: "); Serial.print(y);
Serial.print(" Z: "); Serial.println(z);
}
}
Lassen Sie uns nun erkennen, wann CodeCell geschüttelt wird, und die integrierte RGB-LED verwenden, um dies zu signalisieren.
Dieses Programm lässt die LED rot leuchten, wenn eine Erschütterung erkannt wird.
#include <CodeCell.h>
#include <math.h> // Needed for square root calculations
CodeCell myCodeCell;
float x = 0.0, y = 0.0, z = 0.0;
const float SHAKE_THRESHOLD = 15.0; // Adjust this value for sensitivity
void setup() {
Serial.begin(115200);
myCodeCell.Init(MOTION_ACCELEROMETER); // Initialize accelerometer
}
void loop() {
if (myCodeCell.Run(10)) { // Check every 100ms (10Hz)
myCodeCell.Motion_AccelerometerRead(x, y, z); // Read accelerometer data
// Calculate total movement strength (vector magnitude)
float totalAcceleration = sqrt(x * x + y * y + z * z);
Serial.print("Total Acceleration: ");
Serial.println(totalAcceleration); // Show acceleration strength
// If the acceleration is stronger than the threshold, it's a shake!
if (totalAcceleration > SHAKE_THRESHOLD) {
Serial.println("Shake detected!");
myCodeCell.LED(255, 0, 0); // Turn LED red
delay(500); // LED 0,5 Sekunden lang eingeschaltet lassen
} anders {
//Nicht zittern
}
}
}
Anstatt X, Y und Z separat zu prüfen, kombinieren wir sie zu einem einzigen Wert:
Dies gibt an , wie stark sich CodeCell insgesamt bewegt , unabhängig von der Richtung. Wenn totalAcceleration
über 15,0 steigt , gehen wir davon aus, dass CodeCell geschüttelt wird. Die integrierte Die RGB-LED leuchtet 0,5 Sekunden lang rot , um das Schütteln anzuzeigen.
Jetzt, da Sie Bewegungen erkennen können, gibt es hier einige lustige Herausforderungen:
Indem Sie die Bewegungserkennung verstehen, lernen Sie dieselbe Technologie kennen, die in Smartphones, Drohnen und Raketen verwendet wird ! 🚀
Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!
© 2025 Microbots.