Die CodeCell verfügt über ein integriertes 3-Achsen-Gyroskop BNO085, das die Winkelgeschwindigkeit messen kann – also wie schnell sich die CodeCell um jede Achse dreht – und so die Erkennung von Richtungsänderungen erleichtert.
Im Gegensatz zu einem Beschleunigungsmesser, der Bewegungen entlang einer geraden Linie misst, erkennt ein Gyroskop Rotationsbewegungen . Es zeigt Ihnen in Grad pro Sekunde (°/s) an, wie schnell sich CodeCell dreht.
Bevor wir das Gyroskop verwenden können, müssen wir es initialisieren und mit dem Lesen der Daten beginnen.
Dieser Code liest die Winkelgeschwindigkeitswerte X, Y und Z und druckt sie alle 100 ms.
#include <CodeCell.h>
CodeCell myCodeCell;
float x = 0.0; // Angular velocity around X-axis
float y = 0.0; // Angular velocity around Y-axis
float z = 0.0; // Angular velocity around Z-axis
void setup() {
Serial.begin(115200);
myCodeCell.Init(MOTION_GYRO); // Initialize the gyroscope
}
void loop() {
if (myCodeCell.Run(10)) { // Read at 10Hz (every 100ms)
myCodeCell.Motion_GyroRead(x, y, z); // Get gyro readings
Serial.print("Gyro X: "); Serial.print(x);
Serial.print(" Y: "); Serial.print(y);
Serial.print(" Z: "); Serial.println(z);
}
}
Was Sie bemerken werden:
Je höher der Wert, desto schneller die Rotation.
Lassen Sie uns nun erkennen, wann sich CodeCell nach links oder rechts dreht, und die RGB-LED-Farbe entsprechend ändern.
Dieses Programm:
#include <CodeCell.h>
CodeCell myCodeCell;
float x = 0.0, y = 0.0, z = 0.0;
const float ROTATION_THRESHOLD = 3.0; // Rotation speed threshold (°/s)
void setup() {
Serial.begin(115200);
myCodeCell.Init(MOTION_GYRO); // Initialize gyroscope
}
void loop() {
if (myCodeCell.Run(10)) { // Read at 10Hz
myCodeCell.Motion_GyroRead(x, y, z); // Get gyroscope values
Serial.print("Gyro Z: ");
Serial.println(z); // Print rotation speed
if (z > ROTATION_THRESHOLD) {
myCodeCell.LED(0, 255, 0); // LED grün schalten (nach rechts drehen)
}
sonst wenn (z < -ROTATION_THRESHOLD) {
myCodeCell.LED(255, 0, 0); // LED rot werden lassen (nach links drehen)
}
anders {
myCodeCell.LED(0, 0, 0); // LED ausschalten, wenn sie nicht rotiert
}
}
}
Das Gyroskop misst die Winkelgeschwindigkeit in Grad pro Sekunde (°/s). Überschreitet der Wert der Z-Rotation (Gierwinkel) den Schwellenwert, wird davon ausgegangen, dass CodeCell gedreht wird.
Versuchen Sie , ROTATION_THRESHOLD
zu ändern, um die Empfindlichkeit zu erhöhen oder zu verringern .
Nachdem Sie nun die Rotation verfolgen können, versuchen Sie Folgendes:
Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!
© 2025 Microbots.