STM32F767のMbedでの温度,STTS751で温度表示


x 愛用していたSTTS751の入手が難しくなったので代用品は、S-5851A。(おもにアドレスの違い)

1.SCLとSDAを接続、プルアップも忘れずに
2.電源の接続
3.下記のソースコードを書き込む
4.コンパイル実行で表示されたら終了
5.おわり


```c++

#include "mbed.h"
 
#define ADDR     (0x39<<1) //  address
 
I2C i2c(I2C_SDA, I2C_SCL);

DigitalOut myled(LED1);
 
Serial pc(SERIAL_TX, SERIAL_RX);
 
volatile char TempCelsiusDisplay[] = "+abc.d C";
 
//i2cdetect -y 9
//     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
//00:          -- -- -- -- -- -- -- -- -- -- -- -- --
//10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
//40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//70: -- -- -- -- -- -- -- --
//i2cget -y 9 0x39
//0x1c

int tempval;

void led_temp(int temp);

int main()
{
 
    char data_read[2];
  
    while (1) {
        // Read temperature register

        i2c.read(ADDR, data_read,1,false);
 
        // Calculate temperature value in Celcius
        int tempval =  data_read[0];

        if( !(tempval >= 10 && tempval <= 29) ) tempval = 25;
        //led_temp(15);
        led_temp(tempval);
 
        // Integer part

    //TempCelsiusDisplay[0] = '+';
        TempCelsiusDisplay[1] = (tempval / 100) + 0x30;
        TempCelsiusDisplay[2] = ((tempval % 100) / 10) + 0x30;
        TempCelsiusDisplay[3] = ((tempval % 100) % 10) + 0x30;
    //TempCelsiusDisplay[4] = '.';
    TempCelsiusDisplay[5] = '0';
 
        // Display result
        pc.printf("temp = %s\n\r", TempCelsiusDisplay);
        //myled = !myled;
        //wait(1.0);
    }
 
}
 
void led_temp(int temp)
{ 
        //int temp;
        //temp = 15;

        //開始時の余白 1500ms
        myled = 0; // LED is ON
        wait(0.5); // 200 ms

        //十の桁
        //10から19        
        if( temp >= 10 && temp <= 19) {
            myled = 1; // LED is ON
            wait(3.5); // 200 ms

            myled = 0; // LED is OFF
            wait(0.5); // 1 sec
        } //end if 10-19
        //20から29
 
        if( temp >= 20 && temp <= 29) {
            myled = 1; // LED is ON
            wait(1.5); // 200 ms

            myled = 0; // LED is OFF
            wait(0.5); // 1 sec

            myled = 1; // LED is ON
            wait(1.5); // 200 ms

            myled = 0; // LED is OFF
            wait(0.5); // 1 sec
        } //enf if 20-29

        //一の桁
        //一の桁の空白
        myled = 0; // LED is OFF
        wait(0.5); // 1 sec

        for(int n = 0;n < (temp % 10);n++){
            myled = 1; // LED is ON
            wait(0.5); // 200 ms

            myled = 0; // LED is OFF
            wait(0.5); // 1 sec
        }//end for

} //end sub

//int main() {
//    
//    
//    
//    while(1) {
//        //myled = 1; // LED is ON
//        //wait(2.5); // 200 ms
//        //myled = 0; // LED is OFF
//        //wait(2.5); // 1 sec
//        
//        led_temp(25);
//        
//    }
//}


```

![f767_stts751_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/0aefa771-1055-dfd4-42c7-b9d49b3a4d5f.jpeg)

![f767_stts751_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/e431cfd0-eea7-ef12-a53d-1956f5d07cac.jpeg)

![f767_stts751_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/fab90c19-08ce-59d1-2c4e-afb09ef70f21.jpeg)

いろいろ
http://caa45040.jugem.jp/