Votre CodeCell contient un accéléromètre 3 axes BNO085, un minuscule capteur qui mesure les mouvements. Avec seulement quelques lignes de code, vous pouvez détecter les tremblements et même déclencher une LED en cas de mouvement ! Voyons comment procéder étape par étape.
Un accéléromètre mesure l'accélération, c'est-à-dire la vitesse à laquelle un objet accélère ou ralentit. Il détecte :
On ressent même la gravité ! Lorsque CodeCell est immobile, l'axe Z affiche une valeur proche de 9,81 m/s² , soit la gravité terrestre.
Commençons par lire les valeurs de mouvement en temps réel de l'accéléromètre intégré de CodeCell. Ce code indique l'amplitude du mouvement de CodeCell dans chaque direction :
#include <CodeCell.h>
CodeCell myCodeCell;
float x = 0,0 ; // Accélération de l'axe X
float y = 0,0 ; // Accélération de l'axe Y
float z = 0,0 ; // Accélération de l'axe Z
configuration vide() {
Serial.begin(115200);
myCodeCell.Init(MOTION_ACCELEROMETER); // Initialiser l'accéléromètre
}
boucle vide() {
if (myCodeCell.Run(10)) { // Exécuter 10 fois par seconde (10 Hz)
myCodeCell.Motion_AccelerometerRead(x, y, z); // Lire les valeurs de mouvement
Serial.print("X: "); Serial.print(x);
Serial.print(" Y: "); Serial.print(y);
Série.print(" Z: "); Série.println(z);
}
}
Maintenant, détectons quand CodeCell est secoué et utilisons la LED RVB intégrée pour le signaler.
Ce programme allumera la LED en rouge si un tremblement est détecté.
#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); // Garder la LED allumée pendant 0,5 seconde
} autre {
//Ne tremble pas
}
}
}
Au lieu de vérifier X, Y et Z séparément, nous les combinons en une seule valeur :
Cela nous indique l'amplitude globale des mouvements de CodeCell , quelle que soit la direction. Si totalAcceleration
dépasse 15,0 , nous supposons que CodeCell est secoué. La LED RVB devient rouge pendant 0,5 seconde pour signaler le tremblement.
Maintenant que vous pouvez détecter les mouvements , voici quelques défis amusants :
En comprenant la détection de mouvement, vous apprenez la même technologie utilisée dans les smartphones, les drones et les fusées ! 🚀
Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !
© 2025 Microbots.