teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

2020/10/11 12:40

投稿

uuu1010
uuu1010

スコア7

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

2020/10/11 12:40

投稿

uuu1010
uuu1010

スコア7

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

2020/10/11 12:35

投稿

uuu1010
uuu1010

スコア7

title CHANGED
File without changes
body CHANGED
File without changes

3

2020/10/11 12:16

投稿

uuu1010
uuu1010

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- Raspberry Pi 4でエラー発生()
1
+ Raspberry Pi 4でエラー発生(TypeError)
body CHANGED
File without changes

2

2020/10/11 12:16

投稿

uuu1010
uuu1010

スコア7

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

2020/10/11 12:15

投稿

uuu1010
uuu1010

スコア7

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