質問編集履歴
6
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,6 +32,8 @@
|
|
32
32
|
|
33
33
|
```
|
34
34
|
|
35
|
+
上の内容をもとに関連するコードを探してみたところ、次のコードが見つかりました。
|
36
|
+
|
35
37
|
```
|
36
38
|
def compensate_P(adc_P):
|
37
39
|
global t_fine
|
@@ -80,6 +82,8 @@
|
|
80
82
|
print("hum : %6.2f %" % (var_h))
|
81
83
|
```
|
82
84
|
|
85
|
+
そのため、temp, press, humに与える数値?がどこに当たるのかがreadData()と言うコマンドでは足りないのかと考え、()内に"temp : %-6.2f ℃" %"など、print文で表示を指示している文を入れて実行し直すも、結果エラーのままです。
|
86
|
+
|
83
87
|
どなたか早急に教えてくださると助かります。
|
84
88
|
|
85
89
|
なお、今回のプログラミングで参考にしたコードが全部書いてあるサイトは以下です。
|
5
add code
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,6 +32,53 @@
|
|
32
32
|
|
33
33
|
```
|
34
34
|
|
35
|
+
```
|
36
|
+
def compensate_P(adc_P):
|
37
|
+
global t_fine
|
38
|
+
pressure = 0.0
|
39
|
+
|
40
|
+
v1 = (t_fine / 2.0) - 64000.0
|
41
|
+
v2 = (((v1 / 4.0) * (v1 / 4.0)) / 2048) * digP[5]
|
42
|
+
v2 = v2 + ((v1 * digP[4]) * 2.0)
|
43
|
+
v2 = (v2 / 4.0) + (digP[3] * 65536.0)
|
44
|
+
v1 = (((digP[2] * (((v1 / 4.0) * (v1 / 4.0)) / 8192)) / 8) + ((digP[1] * v1) / 2.0)) / 262144
|
45
|
+
v1 = ((32768 + v1) * digP[0]) / 32768
|
46
|
+
|
47
|
+
if v1 == 0:
|
48
|
+
return 0
|
49
|
+
pressure = ((1048576 - adc_P) - (v2 / 4096)) * 3125
|
50
|
+
if pressure < 0x80000000:
|
51
|
+
pressure = (pressure * 2.0) / v1
|
52
|
+
else:
|
53
|
+
pressure = (pressure / v1) * 2
|
54
|
+
v1 = (digP[8] * (((pressure / 8.0) * (pressure / 8.0)) / 8192.0)) / 4096
|
55
|
+
v2 = ((pressure / 4.0) * digP[7]) / 8192.0
|
56
|
+
pressure = pressure + ((v1 + v2 + digP[6]) / 16.0)
|
57
|
+
|
58
|
+
print("pressure : %7.2f hPa" % (pressure/100))
|
59
|
+
|
60
|
+
def compensate_T(adc_T):
|
61
|
+
global t_fine
|
62
|
+
v1 = (adc_T / 16384.0 - digT[0] / 1024.0) * digT[1]
|
63
|
+
v2 = (adc_T / 131072.0 - digT[0] / 8192.0) * (adc_T / 131072.0 - digT[0] / 8192.0) * digT[2]
|
64
|
+
t_fine = v1 + v2
|
65
|
+
temperature = t_fine / 5120.0
|
66
|
+
print("temp : %-6.2f ℃" % (temperature))
|
67
|
+
|
68
|
+
def compensate_H(adc_H):
|
69
|
+
global t_fine
|
70
|
+
var_h = t_fine - 76800.0
|
71
|
+
if var_h != 0:
|
72
|
+
var_h = (adc_H - (digH[3] * 64.0 + digH[4]/16384.0 * var_h)) * (digH[1] / 65536.0 * (1.0 + digH[5] / 67108864.0 * var_h * (1.0 + digH[2] / 67108864.0 * var_h)))
|
73
|
+
else:
|
74
|
+
return 0
|
75
|
+
var_h = var_h * (1.0 - digH[0] * var_h / 524288.0)
|
76
|
+
if var_h > 100.0:
|
77
|
+
var_h = 100.0
|
78
|
+
elif var_h < 0.0:
|
79
|
+
var_h = 0.0
|
80
|
+
print("hum : %6.2f %" % (var_h))
|
81
|
+
```
|
35
82
|
|
36
83
|
どなたか早急に教えてくださると助かります。
|
37
84
|
|
4
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
3
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Raspberry Pi 4でエラー発生()
|
1
|
+
Raspberry Pi 4でエラー発生(TypeError)
|
body
CHANGED
File without changes
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,6 +13,10 @@
|
|
13
13
|
|
14
14
|
```
|
15
15
|
|
16
|
+
他の方よりご教示いただき、上のエラーメッセージより、readDataの内容を確認してみました。
|
17
|
+
|
18
|
+
内容は次の通りです。
|
19
|
+
|
16
20
|
```
|
17
21
|
def readData():
|
18
22
|
data = []
|
1
add code
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,6 +13,21 @@
|
|
13
13
|
|
14
14
|
```
|
15
15
|
|
16
|
+
```
|
17
|
+
def readData():
|
18
|
+
data = []
|
19
|
+
for i in range (0xF7, 0xF7+8):
|
20
|
+
data.append(bus.read_byte_data(i2c_address,i))
|
21
|
+
pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4)
|
22
|
+
temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4)
|
23
|
+
hum_raw = (data[6] << 8) | data[7]
|
24
|
+
|
25
|
+
compensate_T(temp_raw)
|
26
|
+
compensate_P(pres_raw)
|
27
|
+
compensate_H(hum_raw)
|
28
|
+
|
29
|
+
```
|
30
|
+
|
16
31
|
|
17
32
|
どなたか早急に教えてくださると助かります。
|
18
33
|
|