STM32G031J6M6のArduinoでの温度,STTS751で温度表示(i2c AQM0802A)
1.SCLとSDAを接続、プルアップも忘れずに
2.電源の接続
3.下記のソースコードを書き込む
4.コンパイル実行で表示されたら終了
5.おわり
#include <Wire.h> //I2C library
//STM32G031J6M6
#define sdaPin PA12 // ArduinoA4
#define sclPin PA11 // ArduinoA5
// I2C temperature sensor - see table 1 of data sheet. Resistor selects address.
#define STTS751 0x39
#define I2Cadr 0x3e // 固定
int tempval; //温度
char data_read[2]={'@','t'}; //i2cバッファー
int ii; //ループカウンター
char INIT_com[]={0x0,0x38,
0x0,0x39,
0x0,0x4,
0x0,0x14,
0x0,0x70,
0x0,0x56,
0x0,0x6C,
0x0,0x38,
0x0,0xC,
0x0,0x1,
0x40,0x41,0x99,0x99};
char INIT_cls[]={0x0,0x1};
void i2c_led_w(char *buff1){
Wire.beginTransmission(I2Cadr);
Wire.write(buff1[0]);
Wire.write(buff1[1]);
Wire.endTransmission();
delay(2);
}//i2c_led_w
void setup()
{
delay(3000); //not delete
//Wire.begin(); // initialise the connection //767
Wire.begin(sdaPin,sclPin); //STM32G031J6M6
//液晶の初期化
for(ii=0;ii<11;ii++){
i2c_led_w(&INIT_com[ii*2]);
} //for
} //end setup
void loop()
{
//画面のクリア
i2c_led_w(INIT_cls);
//0番目のレジスター
Wire.beginTransmission(STTS751);
Wire.write(0);
Wire.endTransmission();
delay(1);
//温度の読み込み
tempval = 99;
Wire.requestFrom(STTS751, 1);
while(Wire.available()) { // 要求より短いデータが来る可能性あり
tempval = (int)Wire.read(); // 1バイトを受信
}//while
delay(1);
//液晶に表示
data_read[1] = '0' + (tempval / 10);
i2c_led_w(data_read);
data_read[1] = '0' + (tempval % 10);
i2c_led_w(data_read);
delay(1000);
}//loop
Author And Source
この問題について(STM32G031J6M6のArduinoでの温度,STTS751で温度表示(i2c AQM0802A)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/3975a6aea2b2fc1a9256著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .