質問編集履歴

6

2020/10/11 12:40

投稿

uuu1010
uuu1010

スコア7

test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,10 @@
66
66
 
67
67
 
68
68
 
69
+ 上の内容をもとに関連するコードを探してみたところ、次のコードが見つかりました。
70
+
71
+
72
+
69
73
  ```
70
74
 
71
75
  def compensate_P(adc_P):
@@ -162,6 +166,10 @@
162
166
 
163
167
 
164
168
 
169
+ そのため、temp, press, humに与える数値?がどこに当たるのかがreadData()と言うコマンドでは足りないのかと考え、()内に"temp : %-6.2f ℃" %"など、print文で表示を指示している文を入れて実行し直すも、結果エラーのままです。
170
+
171
+
172
+
165
173
  どなたか早急に教えてくださると助かります。
166
174
 
167
175
 

5

add code

2020/10/11 12:40

投稿

uuu1010
uuu1010

スコア7

test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,100 @@
66
66
 
67
67
 
68
68
 
69
+ ```
70
+
71
+ def compensate_P(adc_P):
72
+
73
+ global t_fine
74
+
75
+ pressure = 0.0
76
+
77
+
78
+
79
+ v1 = (t_fine / 2.0) - 64000.0
80
+
81
+ v2 = (((v1 / 4.0) * (v1 / 4.0)) / 2048) * digP[5]
82
+
83
+ v2 = v2 + ((v1 * digP[4]) * 2.0)
84
+
85
+ v2 = (v2 / 4.0) + (digP[3] * 65536.0)
86
+
87
+ v1 = (((digP[2] * (((v1 / 4.0) * (v1 / 4.0)) / 8192)) / 8) + ((digP[1] * v1) / 2.0)) / 262144
88
+
89
+ v1 = ((32768 + v1) * digP[0]) / 32768
90
+
91
+
92
+
93
+ if v1 == 0:
94
+
95
+ return 0
96
+
97
+ pressure = ((1048576 - adc_P) - (v2 / 4096)) * 3125
98
+
99
+ if pressure < 0x80000000:
100
+
101
+ pressure = (pressure * 2.0) / v1
102
+
103
+ else:
104
+
105
+ pressure = (pressure / v1) * 2
106
+
107
+ v1 = (digP[8] * (((pressure / 8.0) * (pressure / 8.0)) / 8192.0)) / 4096
108
+
109
+ v2 = ((pressure / 4.0) * digP[7]) / 8192.0
110
+
111
+ pressure = pressure + ((v1 + v2 + digP[6]) / 16.0)
112
+
113
+
114
+
115
+ print("pressure : %7.2f hPa" % (pressure/100))
116
+
117
+
118
+
119
+ def compensate_T(adc_T):
120
+
121
+ global t_fine
122
+
123
+ v1 = (adc_T / 16384.0 - digT[0] / 1024.0) * digT[1]
124
+
125
+ v2 = (adc_T / 131072.0 - digT[0] / 8192.0) * (adc_T / 131072.0 - digT[0] / 8192.0) * digT[2]
126
+
127
+ t_fine = v1 + v2
128
+
129
+ temperature = t_fine / 5120.0
130
+
131
+ print("temp : %-6.2f ℃" % (temperature))
132
+
133
+
134
+
135
+ def compensate_H(adc_H):
136
+
137
+ global t_fine
138
+
139
+ var_h = t_fine - 76800.0
140
+
141
+ if var_h != 0:
142
+
143
+ 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)))
144
+
145
+ else:
146
+
147
+ return 0
148
+
149
+ var_h = var_h * (1.0 - digH[0] * var_h / 524288.0)
150
+
151
+ if var_h > 100.0:
152
+
153
+ var_h = 100.0
154
+
155
+ elif var_h < 0.0:
156
+
157
+ var_h = 0.0
158
+
159
+ print("hum : %6.2f %" % (var_h))
160
+
161
+ ```
162
+
69
163
 
70
164
 
71
165
  どなたか早急に教えてくださると助かります。

4

2020/10/11 12:35

投稿

uuu1010
uuu1010

スコア7

test CHANGED
File without changes
test CHANGED
File without changes

3

2020/10/11 12:16

投稿

uuu1010
uuu1010

スコア7

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

2

2020/10/11 12:16

投稿

uuu1010
uuu1010

スコア7

test CHANGED
File without changes
test CHANGED
@@ -25,6 +25,14 @@
25
25
 
26
26
 
27
27
  ```
28
+
29
+
30
+
31
+ 他の方よりご教示いただき、上のエラーメッセージより、readDataの内容を確認してみました。
32
+
33
+
34
+
35
+ 内容は次の通りです。
28
36
 
29
37
 
30
38
 

1

add code

2020/10/11 12:15

投稿

uuu1010
uuu1010

スコア7

test CHANGED
File without changes
test CHANGED
@@ -21,6 +21,36 @@
21
21
  temp, press, hum = readData()
22
22
 
23
23
  TypeError: cannot unpack non-iterable NoneType object
24
+
25
+
26
+
27
+ ```
28
+
29
+
30
+
31
+ ```
32
+
33
+ def readData():
34
+
35
+ data = []
36
+
37
+ for i in range (0xF7, 0xF7+8):
38
+
39
+ data.append(bus.read_byte_data(i2c_address,i))
40
+
41
+ pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4)
42
+
43
+ temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4)
44
+
45
+ hum_raw = (data[6] << 8) | data[7]
46
+
47
+
48
+
49
+ compensate_T(temp_raw)
50
+
51
+ compensate_P(pres_raw)
52
+
53
+ compensate_H(hum_raw)
24
54
 
25
55
 
26
56