31 lines
686 B
C++
31 lines
686 B
C++
#pragma once
|
|
|
|
#include "TempSensor.h"
|
|
|
|
#define TEMP_POSITIVE PIN_B3
|
|
#define TEMP_PIN A2
|
|
|
|
class Tmp36Sensor : public TempSensor<int> {
|
|
public:
|
|
Tmp36Sensor(short id) :
|
|
TempSensor(id) {
|
|
}
|
|
|
|
void setup() override {
|
|
analogReference(INTERNAL);
|
|
pinMode(TEMP_POSITIVE, OUTPUT);
|
|
digitalWrite(TEMP_POSITIVE, LOW);
|
|
}
|
|
|
|
int readTemp() override {
|
|
digitalWrite(TEMP_POSITIVE, HIGH);
|
|
delay(10);
|
|
int reading = analogRead(TEMP_PIN);
|
|
digitalWrite(TEMP_POSITIVE, LOW);
|
|
|
|
float voltage = reading * (1100 / 1024.0);
|
|
float temperatureC = (voltage - 500) / 10;
|
|
return roundf(temperatureC * 10);
|
|
}
|
|
};
|