Files
IoTManager/src/modules/sensors/Sonar/Sonar.cpp

50 lines
1.3 KiB
C++

#include "Global.h"
#include "classes/IoTItem.h"
extern IoTGpio IoTgpio;
class Sonar : public IoTItem {
private:
unsigned int _pinTrig, _pinEcho;
public:
Sonar(String parameters): IoTItem(parameters) {
_pinTrig = jsonReadInt(parameters, "pinTrig");
_pinEcho = jsonReadInt(parameters, "pinEcho");
pinMode(_pinTrig, OUTPUT);
pinMode(_pinEcho, INPUT);
}
void doByInterval() {
// value.valD = IoTgpio.analogRead(_pin);
// для большей точности установим значение LOW на пине Trig
digitalWrite(_pinTrig, LOW);
delayMicroseconds(2);
// Теперь установим высокий уровень на пине Trig
digitalWrite(_pinTrig, HIGH);
// Подождем 10 μs
delayMicroseconds(10);
digitalWrite(_pinTrig, LOW);
// Рассчитаем расстояние
value.valD = pulseIn(_pinEcho, HIGH) / 58;
// Выведем значение в Serial Monitor
Serial.print(value.valD);
Serial.println(" cm");
regEvent(value.valD, "Sonar");
}
~Sonar() {};
};
void* getAPI_Sonar(String subtype, String param) {
if (subtype == F("Sonar")) {
return new Sonar(param);
} else {
return nullptr;
}
}