重力加速度的測量

使用氣壓感測器[BMP280]、[SD記憶卡]

[BMP280氣壓溫度感測器之腳位]

VIN --> to Arduino 3V3

(請注意,電源要接到3V3,以免燒壞)

GND --> to Arduino GND

SCL --> to Arduino A5

SDA --> to Arduino A4

BMP280函式庫https://github.com/orgua/iLib


[micro SD模組之腳位]

CS --> to Arduino pin4

SCK --> to Arduino pin13

MOSI --> to Arduino pin11

MISO --> to Arduino pin12

VCC --> to Arduino 5V

GND --> to Arduino GND

程式碼

#include <Wire.h>
#include "i2c.h"
#include "i2c_BMP280.h"
BMP280 bmp280;
#include <SPI.h>
#include <SD.h>
File myFile;
String filename = "test.csv";     //要寫入的檔案名稱

void setup() {
  pinMode(10,OUTPUT);             //保留pin10, SD Library需要使用
  while (!SD.begin(4)) {}
  Serial.begin(9600);
  bmp280.initialize();
  bmp280.setEnabled(0);
  bmp280.triggerMeasurement();
}

void loop()
{
  bmp280.awaitMeasurement();
  float temperature;             //氣溫,單位:攝氏溫度
  bmp280.getTemperature(temperature);
  float pascal;                  //氣壓,單位:pa帕
  bmp280.getPressure(pascal);
  float meters;                  //海拔高度,單位:m公尺
  bmp280.getAltitude(meters);    //假設海平面大氣壓為101325Pa,所計算的海拔高度;
  bmp280.triggerMeasurement();
  Serial.print(meters);
  Serial.println();
  
  float timesec= millis()/1000.0;           //目前時間,單位是"秒"
  char timesecstr[6];
  dtostrf(timesec,3, 3, timesecstr);   

  myFile = SD.open(filename, FILE_WRITE);
  if (myFile) {
    Serial.print("Writing to test.csv...");
    myFile.print(timesecstr);              //寫入 時間 
    myFile.print(",");                  //之後每個數據之間加入逗號","
    myFile.print(meters);                //寫入 海拔高度
    myFile.println();

    myFile.close();                     //關閉檔案
    Serial.println("done.");
  } else {
    Serial.println("error opening test.csv");
  }
}

[問題]

請根據測得的時間、高度資料,計算重力造成的加速度?並繪製時間和高度、速度、加速度的關係圖。