質問編集履歴
1
全体のソースコード
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,6 +9,53 @@
|
|
9
9
|
### 該当のソースコード
|
10
10
|
|
11
11
|
```
|
12
|
+
//セットアップ//
|
13
|
+
#include<M5StickC.h> //m5StickCを使うための基本セットアップ
|
14
|
+
#include<Wire.h> //I2Cを使うための基本プラグラム
|
15
|
+
|
16
|
+
uint16_t result;
|
17
|
+
float temperature;
|
18
|
+
const int tMax = 37 ;
|
19
|
+
|
20
|
+
//1度きりの処理//
|
21
|
+
void setup() {
|
22
|
+
M5.begin(); //M5StickCを起動
|
23
|
+
Wire.begin(0,26); //I2Cの通信を0,26で開始
|
24
|
+
Serial.begin(115200); //シリアル通信を速度15200bpsで開始
|
25
|
+
|
26
|
+
M5.Lcd.setRotation(3); //文字の表示方向を回転(90*3=27度回転)
|
27
|
+
M5.Lcd.setTextColor(WHITE); //M5StickCの画面に表示する文字の色を「白」に設定
|
28
|
+
M5.Lcd.setTextSize(3); //文字の大きさを「3」に設定
|
29
|
+
M5.Lcd.setCursor(0,60); //表示場所を「0,60」に設定
|
30
|
+
|
31
|
+
pinMode(GPIO_NUM_10,OUTPUT); //10ピン出力指令
|
32
|
+
digitalWrite(GPIO_NUM_10,HIGH); //10ピンにHIGHでLED消灯
|
33
|
+
|
34
|
+
}
|
35
|
+
|
36
|
+
//繰り返しの処理//
|
37
|
+
void loop() {
|
38
|
+
|
39
|
+
Wire.beginTransmission(0x5A); //I2C通信の初期信号と温度センサのI2Cのアドレスを送信
|
40
|
+
Wire.write(0x07); //温度データを取得するための指令を送信
|
41
|
+
Wire.endTransmission(false); //送信完了
|
42
|
+
Wire.requestFrom(0x5A,2); //アドレスが0x5Aのセンサから,2バイトのデータを送信
|
43
|
+
result=Wire.read(); //温度データは8ビットをさらに受信してから,追加,16ビット分のデータを格納
|
44
|
+
result |=Wire.read() << 8; //上記の変数に,上位8bit分をさらに追加して16ビット分のデータを格納
|
45
|
+
|
46
|
+
//温度[℃]への変換と画面表示//
|
47
|
+
temperature = result * 0.02 - 273.15; //温度への変換式より計算
|
48
|
+
|
49
|
+
M5.Lcd.fillRect(0,20,120,100,BLACK); //背景塗りつぶし
|
50
|
+
M5.Lcd.setCursor(0,20); //座標指定
|
51
|
+
M5.Lcd.println(temperature); //温度画面に表示
|
52
|
+
|
53
|
+
Serial.println(temperature); //パソコンよりデータを確認できるように設定
|
54
|
+
|
55
|
+
delay(500); //約0.5s間隔で温度を表示するための待機時間を設定
|
56
|
+
M5.update();
|
57
|
+
delay(10);
|
58
|
+
|
12
59
|
//変数の設定//
|
13
60
|
int flag = 0;
|
14
61
|
float st,
|
@@ -24,7 +71,7 @@
|
|
24
71
|
|
25
72
|
if(flag == 0){
|
26
73
|
flag == 1;
|
27
|
-
|
74
|
+
float st = millis();
|
28
75
|
|
29
76
|
M5.Lcd.setTextColor(WHITE); //文字の色を白に戻す
|
30
77
|
digitalWrite(GPIO_NUM_10,HIGH); //LED消灯
|
@@ -32,7 +79,7 @@
|
|
32
79
|
|
33
80
|
|
34
81
|
|
35
|
-
|
82
|
+
float t = millis();
|
36
83
|
|
37
84
|
if(t-st > 10000){
|
38
85
|
M5.Lcd.setTextColor(RED); //20s過ぎたら赤字で警告
|
@@ -59,6 +106,9 @@
|
|
59
106
|
|
60
107
|
|
61
108
|
}
|
109
|
+
|
110
|
+
|
111
|
+
|
62
112
|
```
|
63
113
|
|
64
114
|
### 試したこと
|