clinometre électronique
ฝัง
- เผยแพร่เมื่อ 7 ก.พ. 2025
- Ce code est un programme pour un inclinomètre utilisant un accéléromètre ADXL345 et un écran OLED SSD1306. Il mesure l'inclinaison (tangage et roulis) et affiche les données sur l'écran OLED. Voici une explication détaillée des différentes parties du code :
1. *Inclusions et Définitions*
*Wire.h* : Bibliothèque pour la communication I2C.
*Adafruit_Sensor.h* et *Adafruit_ADXL345_U.h* : Bibliothèques pour l'accéléromètre ADXL345.
*Adafruit_GFX.h* et *Adafruit_SSD1306.h* : Bibliothèques pour l'écran OLED SSD1306.
*Définitions* : Dimensions de l'écran, adresse I2C, nombre d'échantillons pour le lissage, angles d'alerte et critiques.
2. *Structures et Variables Globales*
*NavData* : Structure pour stocker les données d'inclinaison (tangage, roulis, valeurs lissées, et maximums).
*pitchSamples* et *rollSamples* : Tableaux pour stocker les échantillons de tangage et roulis pour le lissage.
*sampleIndex* : Index pour le tableau d'échantillons.
3. *Fonction `setup()`*
Initialise la communication série et I2C.
Initialise l'écran OLED et l'accéléromètre.
Configure la plage de mesure de l'accéléromètre.
Affiche un écran de démarrage.
4. *Fonction `displayStartupScreen()`*
Affiche un écran de démarrage avec le nom du projet et la version.
5. *Fonction `readAccelData()`*
Lit les données de l'accéléromètre et calcule les angles de tangage et roulis.
6. *Fonction `smoothValue()`*
Lisse les valeurs de tangage et roulis en utilisant une moyenne mobile sur les derniers échantillons.
7. *Fonction `drawLevelBar()`*
Dessine une barre de niveau pour afficher l'angle de tangage ou de roulis.
8. *Fonction `drawLargeBubbleLevel()`*
Dessine un niveau à bulle pour afficher l'inclinaison de manière visuelle.
9. *Fonction `displayAlert()`*
Affiche une alerte avec un fond blanc et un texte noir si les angles dépassent les seuils d'alerte ou critiques.
10. *Fonction `updateDisplay()`*
Met à jour l'affichage sur l'écran OLED avec les angles de tangage et roulis, les barres de niveau, le niveau à bulle, les maximums enregistrés, et les alertes si nécessaire.
11. *Fonction `loop()`*
Boucle principale qui lit les données de l'accéléromètre, lisse les valeurs, met à jour les maximums, et met à jour l'affichage à une fréquence de 10 Hz.
12. *Communication Série*
Les valeurs de tangage et roulis sont également envoyées sur le port série pour le débogage.
Améliorations Possibles
*Calibration* : Ajouter une fonction de calibration pour compenser les erreurs de mesure.
*Enregistrement des Données* : Ajouter la possibilité d'enregistrer les données sur une carte SD.
*Interface Utilisateur* : Ajouter des boutons pour réinitialiser les maximums ou changer les modes d'affichage.
Ce code est bien structuré et fonctionnel pour un inclinomètre basé sur un microcontrôleur compatible Arduino. Il peut être utilisé dans diverses applications où la mesure de l'inclinaison est nécessaire, comme dans votre bateau.
drive.google.c...
Mille mercis pour ce partage, ainsi que pour le baro,.
Nous sommes parti faire notre tour du monde, mais dés que nous serons posé à quelques part je commencerais les composants, c'est tellement bien de faire les choses avec ses doigts.
Merci pour ton commentaire, j’ai pas la chance de faire un tour du monde avec mon bateau car celui-ci étant qu’elle sèche pour l’hiver, mais j’ai hâte de reprendre la mer dans quelques semaines
bonjour l'accé au drive est drive est refusé je ne recois aucune notification merci pour cette vidéo