GY-63_MS5611/libraries/MS5611/examples/MS5611_test/MS5611_test.ino
2022-01-16 10:03:30 +01:00

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 --