Driver for TMP06 temperature sensor. Data is sent by PWM. Tested on Hani-IoT board with TMP06BRTZ sensor.

Example usage

main.cpp

#include "mbed.h"
#include "TMP06.h"

int main()
{
    TMP06 temp_sensor(P0_1);
    float temperature;

    while (true) {
        if(temp_sensor.read(&temperature) == SUCCESS) {
            printf("Temperature: %f\n", temperature);
        }
        else {
            printf("Error!\n");
        }

        ThisThread::sleep_for(2000);
    }
}
Committer:
Pawel Zarembski
Date:
Tue Mar 03 14:28:12 2020 +0100
Revision:
2:1ff2f041925a
Parent:
0:cee46eec60a8
blocker for rise and fall functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pawel Zarembski 0:cee46eec60a8 1 /* Copyright (C) 2020 Arrow Electronics */
Pawel Zarembski 0:cee46eec60a8 2
Pawel Zarembski 0:cee46eec60a8 3 #ifndef _TMP06_H_
Pawel Zarembski 0:cee46eec60a8 4 #define _TMP06_H_
Pawel Zarembski 0:cee46eec60a8 5
Pawel Zarembski 0:cee46eec60a8 6 #include "mbed.h"
Pawel Zarembski 0:cee46eec60a8 7
Pawel Zarembski 0:cee46eec60a8 8 #define SUCCESS 0
Pawel Zarembski 0:cee46eec60a8 9 #define FAILURE 1
Pawel Zarembski 2:1ff2f041925a 10 #define SEM_TIMEOUT_MS 250
Pawel Zarembski 0:cee46eec60a8 11
Pawel Zarembski 0:cee46eec60a8 12 class TMP06 {
Pawel Zarembski 0:cee46eec60a8 13 public:
Pawel Zarembski 0:cee46eec60a8 14 TMP06(PinName pin);
Pawel Zarembski 0:cee46eec60a8 15 ~TMP06();
Pawel Zarembski 0:cee46eec60a8 16 int read(float *temperature);
Pawel Zarembski 0:cee46eec60a8 17
Pawel Zarembski 0:cee46eec60a8 18 private:
Pawel Zarembski 0:cee46eec60a8 19 void on_rise();
Pawel Zarembski 0:cee46eec60a8 20 void on_fall();
Pawel Zarembski 0:cee46eec60a8 21
Pawel Zarembski 0:cee46eec60a8 22 InterruptIn _pwm_pin;
Pawel Zarembski 0:cee46eec60a8 23 Timer _timer1;
Pawel Zarembski 0:cee46eec60a8 24 Timer _timer2;
Pawel Zarembski 0:cee46eec60a8 25 Semaphore _semaphore;
Pawel Zarembski 0:cee46eec60a8 26 bool _first_run;
Pawel Zarembski 2:1ff2f041925a 27 bool _started;
Pawel Zarembski 0:cee46eec60a8 28 };
Pawel Zarembski 0:cee46eec60a8 29
Pawel Zarembski 0:cee46eec60a8 30 #endif /* _TMP06_H_ */