Dans cette version, nous allons découvrir comment utiliser le capteur de mouvement à 9 axes intégré du CodeCell pour lire les angles de roulis, de tangage et de lacet, et utiliser ces angles pour contrôler un servomoteur. Ce projet montre comment créer des commandes interactives basées sur le mouvement, parfaites pour la robotique, les cardans ou tout projet nécessitant un contrôle de rotation réactif.
Le CodeCell est équipé d'un capteur de mouvement BNO085, qui fournit des capacités de détection de mouvement précises, notamment les angles de roulis, de tangage et de lacet. En lisant ces angles, vous pouvez créer des commandes de mouvement interactives pour diverses applications, telles que la stabilisation de plates-formes ou la création d'une réponse à l'orientation de l'appareil.
Le capteur de mouvement BNO085 lit les valeurs de l'accéléromètre, du gyroscope et du magnétomètre et calcule les vecteurs de rotation. Ces vecteurs sont envoyés au CodeCell qui les transforme ensuite en données angulaires pour obtenir le roulis, le tangage et le lacet en fonction de l'orientation de l'appareil dans l'espace. Ces angles représentent la rotation de l'appareil selon trois axes. Dans cet exemple, nous utiliserons l'angle de tangage pour contrôler la position d'un servomoteur, lui permettant de réagir de manière dynamique aux changements d'orientation.
Dans cet exemple, le CodeCell surveille en permanence l'angle d'inclinaison. La valeur d'inclinaison est utilisée pour définir la position du servomoteur, lui permettant de tourner en fonction de l'inclinaison de l'appareil. Cette fonctionnalité de base peut être étendue pour créer des interactions plus complexes, telles que le contrôle de plusieurs servos, la stabilisation d'une plate-forme ou l'ajout de mouvements réactifs à un robot.
Vous trouverez ci-dessous un exemple de code pour vous aider à démarrer. Assurez-vous que votre CodeCell est correctement connecté via USB-C. Assurez-vous également que votre servomoteur peut être alimenté via USB-C et ajoutez ses limites angulaires au code.
Pour cet exemple, vous devez télécharger la bibliothèque ESp32Servo pour contrôler le servomoteur avec votre CodeCell . Suivez les commentaires dans le code pour comprendre chaque étape.
#include <CodeCell.h>
#include <ESP32Servo.h>
CodeCell myCodeCell;
Servo myservo;
float Roll = 0.0;
float Pitch = 0.0;
float Yaw = 0.0;
int servo_angle = 0;
void setup() {
Serial.begin(115200); // Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial
myCodeCell.Init(MOTION_ROTATION); // Initializes rotation sensing
myservo.attach(1); // Attaches the servo on pin 1 to the servo object
}
void loop() {
if (myCodeCell.Run()) {
// Read rotation angles from the BNO085 sensor
myCodeCell.Motion_RotationRead(Roll, Pitch, Yaw);
// Convert the pitch angle to a servo angle
servo_angle = abs((int)Pas);
servo_angle = (180 - servo_angle);
// Limitez l'angle du servo à la plage de 0 à 60 degrés
si (servo_angle > 60) {
servo_angle = 60;
} sinon si (servo_angle < 0) {
servo_angle = 0;
}
Serial.println(servo_angle); // Imprimer l'angle du servo pour le débogage
myservo.write(servo_angle); // Définir la position du servo
}
}
servo_angle
dans le code. Dans cet exemple, nous utilisons un micro-servomoteur à plage de 60 degrés. Notez que certains servomoteurs ne sont pas mécaniquement linéaires, vous devrez donc peut-être également compenser son erreur angulaire-mécanique.Ce projet présente les bases de l'utilisation de la détection de rotation avec CodeCell pour contrôler un servomoteur, ouvrant de nombreuses possibilités pour des projets sensibles au mouvement. Expérimentez avec le code, modifiez les paramètres et créez vos propres builds dynamiques !
Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !
© 2024 Microbots.