Je vois passer des messages sur l'utilisation de ce capteur accéléromètre. Comme je jouais avec récemment, en le connectant à un module ESP32 + OLED + batterie 18650, je poste le code. Si ça intéresse quelqu'un...
#include <Wire.h>
#include "SSD1306.h"
SSD1306 display(0x3c, 5, 4);
const int xpin = 34; // x-axis of the accelerometer
const int ypin = 32; // y-axis
const int zpin = 33; // z-axis
unsigned long period = 200ul; // ms
unsigned long chrono = 0;
#define NMES 20
void setup()
{
Serial.begin(115200);
display.init();
display.setFont(ArialMT_Plain_16);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 10, "Accelero");
display.drawString(64, 30, "ADXL 335");
display.display();
delay(1000);
chrono = millis();
}
int moyMesure (int pinNumber) {
int mes = 0;
for (int i = 0; i < NMES; i++) {
mes += analogRead(pinNumber);
delay(1);
}
return mes / NMES;
}
void loop()
{
if (millis() - chrono > period) {
chrono = millis();
int x = moyMesure(xpin); //read from xpin
int y = moyMesure(ypin); //read from ypin
int z = moyMesure(zpin); //read from zpin
// calcul des g
// amplitude -1g = 1400, +1g = 2280
float gX = (x - 1840.0) / 440.0;
float gY = (y - 1840.0) / 440.0;
float gZ = (z - 1840.) / 440.0;
char texte[6];
display.clear();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
sprintf(texte, "%+5.2f", gX);
display.drawString(128, 0, texte);
sprintf(texte, "%+5.2f", gY);
display.drawString(128, 20, texte);
sprintf(texte, "%+5.2f", gZ);
display.drawString(128, 40, texte);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 0, "X");
display.drawString(0, 20, "Y");
display.drawString(0, 40, "Z");
// progress bar axe X
int pX = (gX + 1) * 50;
pX = constrain(pX, 0, 100);
display.drawProgressBar(15, 3, 70, 10, (byte)pX);
// progress bar axe Y
int pY = (gY + 1) * 50;
pY = constrain(pY, 0, 100);
display.drawProgressBar(15, 23, 70, 10, (byte)pY);
// progress bar axe Z
int pZ = (gZ + 1) * 50;
pZ = constrain(pZ, 0, 100);
display.drawProgressBar(15, 43, 70, 10, (byte)pZ);
display.display();
}
}
Le programme affiche un splash-screen puis 3 bar-graphs indiquant l'intensité de l'accélération sur les 3 axes (X, Y et Z). Les axes sont dessinés sur le module capteur ce qui permet de vérifier. C'est bien sûr l'accélération de la pesanteur qui est affichée, et ces mesures permettent donc de connaitre l'orientation du module en 3D.
Le module est branché comme suit :
- GND - GND
- Z-OUT pin 33
- Y-OUT pin 32
- X-OUT pin 34
- VCC - VCC
Quelques photos :