重力加速度的測量
使用氣壓感測器[BMP280]、[SD記憶卡]
[BMP280氣壓溫度感測器之腳位]
[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模組之腳位]
[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");
}
}
[問題]
[問題]
請根據測得的時間、高度資料,計算重力造成的加速度?並繪製時間和高度、速度、加速度的關係圖。