ADXL345 3osý akcelerometr a Arduino
Výukový program ukazuje, jak měřit zrychlení pomocí modulu ADXL345 s Arduino.
Příklad používá následující prvky:
- Arduino Uno
Systém s modulem ADXL345, např. Tříosý digitální akcelerometr ADXL345 I2C / SPI - modul
- Dráty, např. S háčky
- Knihovna ADXL345
Připojení senzoru k Arduinu:
Modul komunikuje prostřednictvím populární sběrnice I2C. Připojení k Arduinu by tedy mělo být provedeno následovně:
Modul ADXL345 | Pin Arduino |
---|---|
VCC | 5 V |
GND | GND |
SCL | A5 |
SDA | A4 |
Schéma zapojení modulu ADXL345 s Arduino Uno.
Program pro Arduino
Nejprve by měla být knihovna přidána do prostředí Arduino (Skica -> Zahrnout knihovnu -> Přidat knihovnu .ZIP ...). V příkladu byl použit následující kód:
#include#include #include // Přiřaďte ID Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified (12345); void displaySensorDetails (void) { senzor_t senzor; accel.getSensor (& senzor); Serial.println ("------------------------------------"); Serial.print ("Senzor:"); Serial.println (sensor.name); Serial.print ("Verze ovladače:"); Serial.println (verze senzoru); Serial.print ("ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maximální hodnota:"); Serial.print (sensor.max_value); Serial.println ("m / s ^ 2"); Serial.print ("Minimální hodnota:"); Serial.print (sensor.min_value); Serial.println ("m / s ^ 2"); Serial.print ("Rozlišení:"); Serial.print (sensor.resolution); Serial.println ("m / s ^ 2"); Serial.println ("------------------------------------"); Serial.println (""); zpoždění (500); } void displayDataRate (void) { Serial.print ("Rychlost dat:"); switch (accel.getDataRate ()) { případ ADXL345_DATARATE_3200_HZ: Serial.print ("3200"); přestávka; případ ADXL345_DATARATE_1600_HZ: Serial.print ("1600"); přestávka; případ ADXL345_DATARATE_800_HZ: Serial.print ("800"); přestávka; případ ADXL345_DATARATE_400_HZ: Serial.print ("400"); přestávka; případ ADXL345_DATARATE_200_HZ: Serial.print ("200"); přestávka; případ ADXL345_DATARATE_100_HZ: Serial.print ("100"); přestávka; případ ADXL345_DATARATE_50_HZ: Serial.print ("50"); přestávka; případ ADXL345_DATARATE_25_HZ: Serial.print ("25"); přestávka; případ ADXL345_DATARATE_12_5_HZ: Serial.print ("12,5"); přestávka; případ ADXL345_DATARATE_6_25HZ: Serial.print ("6,25"); přestávka; případ ADXL345_DATARATE_3_13_HZ: Serial.print ("3,13"); přestávka; případ ADXL345_DATARATE_1_56_HZ: Serial.print ("1,56"); přestávka; případ ADXL345_DATARATE_0_78_HZ: Serial.print ("0,78"); přestávka; případ ADXL345_DATARATE_0_39_HZ: Serial.print ("0,39"); přestávka; případ ADXL345_DATARATE_0_20_HZ: Serial.print ("0,20"); přestávka; případ ADXL345_DATARATE_0_10_HZ: Serial.print ("0,10"); přestávka; výchozí: Serial.print ("????"); přestávka; } Serial.println ("Hz"); } void displayRange (void) {Serial.print ("Range: +/-"); switch (accel.getRange ()) {případ ADXL345_RANGE_16_G: Serial.print ("16"); přestávka; případ ADXL345_RANGE_8_G: Serial.print ("8"); přestávka; případ ADXL345_RANGE_4_G: Serial.print ("4"); přestávka; případ ADXL345_RANGE_2_G: Serial.print ("2"); přestávka; výchozí: Serial.print ("??"); přestávka; } Serial.println ("g"); } void setup (void) {Serial.begin (9600); Serial.println ("--- test ADXL345 ---"); Serial.println (""); // Inicializace modulu if (! Accel.begin ()) {// Chyba připojení Serial.println ("Nebyl detekován žádný senzor ... Zkontrolovat připojení!"); while (1); } // Výběr rozsahu accel.setRange (ADXL345_RANGE_16_G); // displaySetRange (ADXL345_RANGE_8_G); // displaySetRange (ADXL345_RANGE_4_G); // displaySetRange (ADXL345_RANGE_2_G); // Zobrazit informace displaySensorDetails (); // Zobrazit další nastavení displayDataRate (); displayRange (); Serial.println (""); } void smyčka (void) {senzory_event_t událost; accel.getEvent (& událost); // Zobrazit výsledky v m / s ^ 2) Serial.print ("X:"); Serial.print (event.acceleration.x); Serial.print (""); Serial.print ("Y:"); Serial.print (event.acceleration.y); Serial.print (""); Serial.print ("Od:"); Serial.print (event.acceleration.z); Serial.print (""); Serial.println ("m / s ^ 2"); zpoždění (500); }
Program zobrazuje zrychlení ve třech osách udávaných v m / s ^ 2. Účinky programu můžeme vidět níže:
Screenshot sériového monitoru.