GY-63_MS5611/libraries/SRF05/SRF05.h

77 lines
1.8 KiB
C
Raw Normal View History

2021-05-26 05:31:36 -04:00
#pragma once
//
// FILE: SRF05.h
// AUTHOR: Rob Tillaart
2021-12-28 09:09:27 -05:00
// VERSION: 0.1.2
2021-05-26 05:31:36 -04:00
// DATE: 2021-05-17
// PURPOSE: Arduino library for SRF05 distance sensor
// URL: https://github.com/RobTillaart/SRF05
#include "Arduino.h"
2021-12-28 09:09:27 -05:00
#define SRF05_LIB_VERSION (F("0.1.2"))
2021-05-26 05:31:36 -04:00
class SRF05
{
public:
explicit SRF05(const uint8_t trigger, const uint8_t echo, const uint8_t out = 0);
// configuration
void setSpeedOfSound(float sos = 340);
float getSpeedOfSound();
// adjust timing
2021-11-18 07:52:59 -05:00
void setCorrectionFactor(float factor = 1) { _correctionFactor = factor; };
2021-05-26 05:31:36 -04:00
float getCorrectionFactor() { return _correctionFactor; };
// operational mode
void setModeSingle();
2021-11-18 07:52:59 -05:00
void setModeAverage(uint8_t count);
void setModeMedian(uint8_t count);
2021-05-26 05:31:36 -04:00
void setModeRunningAverage(float alpha);
uint8_t getOperationalMode();
// get distance
uint32_t getTime(); // uSec
uint32_t getMillimeter(); // mm
float getCentimeter(); // cm
float getMeter(); // m
float getInch(); // inch = 2.54 cm
float getFeet(); // feet = 12 Inch
// Experimental - calibration
float determineSpeedOfSound(uint16_t distance);
// Experimental - adjust trigger length - gain is a few usec at best.
2021-12-28 09:09:27 -05:00
// 10 microseconds is advised minimum
// void setTriggerLength(uint8_t length = 10) { _triggerLength = length; };
2021-05-26 05:31:36 -04:00
// uint8_t getTriggerLength() { return _triggerLength; };
private:
uint8_t _trigger;
uint8_t _echo;
uint8_t _out;
uint8_t _mode = 0;
2021-11-18 07:52:59 -05:00
uint8_t _count = 1;
2021-05-26 05:31:36 -04:00
float _alpha = 1.0;
2021-11-18 07:52:59 -05:00
float _value = 0;
2021-05-26 05:31:36 -04:00
float _correctionFactor = 1;
2021-11-18 07:52:59 -05:00
uint8_t _triggerLength = 10;
float _speedOfSound = 340; // 20°C
2021-05-26 05:31:36 -04:00
uint32_t _read();
void _insertSort(uint32_t * array, uint8_t size);
};
2021-11-18 07:52:59 -05:00
2021-05-26 05:31:36 -04:00
// -- END OF FILE --
2021-11-18 07:52:59 -05:00