STM32L010とSTTS751で温度をシリアルに出力 (RawSerial)


温度を表示

x Mbedのリビジョンは、125

目的
STM32L010(STM32L010F4P6)には、内部温度センサーがついていないので
秋月で売っている安価なSTTS751を使って温度をシリアルに出力する。

忙しい人よう


#include "mbed.h"

//10の割り算 0から1028までは、正しい。主に0から999
#define DVI10(n) ((n*205)>>11)

#define ADDR        (0x72)   //  address


RawSerial pc(PA_2, PA_3); //010

//I2C i2c(I2C_SDA, I2C_SCL); //767
//I2C i2c(dp5, dp27); //1114
I2C i2c(PA_10, PA_9); //010

int     tempval;        //温度
char    data_read[6];   //i2cバッファー
int     n10;            //10の桁

int main()
{

    while (1) {

        //温度の読み込み
        // Read temperature register
        i2c.read(ADDR, data_read,1,false);

        //温度の保存
        // Calculate temperature value in Celcius
        tempval =  data_read[0];

        //計算
        // Calculation temp
        //tempval = 12;
        n10 = DVI10(tempval);             //10の桁
        tempval = tempval - ( n10 * 10 ); //1の桁

        //液晶に出力
        // Display result
        data_read[0] = '0' + n10;
        data_read[1] = '0' + tempval;
        data_read[2] = '\r';
        //data_read[3] = '\n';
        data_read[3] = 0;

        //温度の出力
        puts(data_read);

        wait_ms(1000);
    }//while

}//main

//容量削減
void error(const char* format, ...){}