mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
135 lines
2.7 KiB
C++
135 lines
2.7 KiB
C++
//
|
|
// FILE: MS5611_test.ino
|
|
// AUTHOR: Rob Tillaart
|
|
// PURPOSE: demo application
|
|
// DATE: 2014-okt-16
|
|
// URL: https://github.com/RobTillaart/MS5611
|
|
|
|
|
|
#include "MS5611.h"
|
|
|
|
// BREAKOUT MS5611 aka GY63 - see datasheet
|
|
//
|
|
// SPI I2C
|
|
// +--------+
|
|
// VCC VCC | o |
|
|
// GND GND | o |
|
|
// SCL | o |
|
|
// SDI SDA | o |
|
|
// CSO | o |
|
|
// SDO | o L | L = led
|
|
// PS | o O | O = opening PS
|
|
// +--------+
|
|
//
|
|
// PS to VCC ==> I2C
|
|
// PS to GND ==> SPI
|
|
// CS to VCC ==> 0x76
|
|
// CS to GND ==> 0x77
|
|
|
|
MS5611 MS5611(0x76); // 0x76 = CSB to VCC; 0x77 = CSB to GND
|
|
|
|
|
|
uint32_t start, stop;
|
|
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
while (!Serial);
|
|
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
|
|
Serial.println();
|
|
Serial.println(__FILE__);
|
|
Serial.print("MS5611_LIB_VERSION: ");
|
|
Serial.println(MS5611_LIB_VERSION);
|
|
|
|
if (MS5611.begin() == true)
|
|
{
|
|
Serial.println("MS5611 found.");
|
|
}
|
|
else
|
|
{
|
|
Serial.println("MS5611 not found. halt.");
|
|
while (1)
|
|
{
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
delay(1000);
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
delay(1000);
|
|
}
|
|
}
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
/*
|
|
There are 5 oversampling settings, each corresponding to a different amount of milliseconds
|
|
The higher the oversampling, the more accurate the reading will be, however the longer it will take.
|
|
OSR_ULTRA_HIGH -> 8.22 millis
|
|
OSR_HIGH -> 4.11 millis
|
|
OSR_STANDARD -> 2.1 millis
|
|
OSR_LOW -> 1.1 millis
|
|
OSR_ULTRA_LOW -> 0.5 millis Default = backwards compatible
|
|
*/
|
|
void loop()
|
|
{
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
MS5611.setOversampling(OSR_ULTRA_LOW);
|
|
test();
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
delay(1000);
|
|
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
MS5611.setOversampling(OSR_LOW);
|
|
test();
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
delay(1000);
|
|
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
MS5611.setOversampling(OSR_STANDARD);
|
|
test();
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
delay(1000);
|
|
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
MS5611.setOversampling(OSR_HIGH);
|
|
test();
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
delay(1000);
|
|
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
MS5611.setOversampling(OSR_ULTRA_HIGH);
|
|
test();
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
delay(1000);
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
void test()
|
|
{
|
|
start = micros();
|
|
int result = MS5611.read();
|
|
stop = micros();
|
|
if (result != MS5611_READ_OK)
|
|
{
|
|
Serial.print("Error in read: ");
|
|
Serial.println(result);
|
|
}
|
|
else
|
|
{
|
|
Serial.print("T:\t");
|
|
Serial.print(MS5611.getTemperature(), 2);
|
|
Serial.print("\tP:\t");
|
|
Serial.print(MS5611.getPressure(), 2);
|
|
Serial.print("\tt:\t");
|
|
Serial.print(stop - start);
|
|
Serial.println();
|
|
}
|
|
}
|
|
|
|
|
|
// -- END OF FILE --
|
|
|