質問編集履歴

2

追記

2020/01/13 06:50

投稿

_magurochan
_magurochan

スコア13

test CHANGED
File without changes
test CHANGED
@@ -71,3 +71,75 @@
71
71
  print (pi.i2c_read_i2c_block_data(hndl,REG_GPIOA,0x01))
72
72
 
73
73
  ```
74
+
75
+
76
+
77
+ #追記1
78
+
79
+ ```
80
+
81
+ data = pi.i2c_read_i2c_block_data(hndl,REG_GPIOA,0x1)
82
+
83
+ print(hex(~data&0xff))
84
+
85
+ ```
86
+
87
+ にしたところ
88
+
89
+ ```
90
+
91
+ Traceback (most recent call last):
92
+
93
+ File "python-osc.py", line 35, in <module>
94
+
95
+ print(hex(~data&0xff))
96
+
97
+ TypeError: bad operand type for unary ~: 'tuple'
98
+
99
+ ```
100
+
101
+ このようなエラーになりました。
102
+
103
+
104
+
105
+ dataの出力される情報が良くないと思い、dataを変えました
106
+
107
+ ```Python3
108
+
109
+ data = pi.i2c_read_byte_data(hndl,REG_GPIOA)
110
+
111
+ print(hex(~data&0xff))
112
+
113
+ ```
114
+
115
+ すると
116
+
117
+ ```Python
118
+
119
+ 0x0 #何も押していない
120
+
121
+ 0x1 #ボタン1を押している時
122
+
123
+ 0x2 #ボタン2を押している時
124
+
125
+ 0x3 #ボタン1とボタン2を同時に押している時
126
+
127
+ ```
128
+
129
+ と出力されました。
130
+
131
+ たぶん、入力するポートを**pi.i2c_read_byte_data()**では指定できないからだと思います。
132
+
133
+
134
+
135
+ 他に、
136
+
137
+ ```Python
138
+
139
+ data = pi.i2c_read_byte_data(hndl,0x01)#ポート1だけ読み込むの意味
140
+
141
+ print(hex(~data&0xff))
142
+
143
+ ```
144
+
145
+ では、エラーが出なかったけど、数値が変更されずでした。

1

追記

2020/01/13 06:50

投稿

_magurochan
_magurochan

スコア13

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- 下のを実行しました。数値が押していたら254、そうでなければ255が出力されてしまいました。
23
+ 下のを実行しました。数値が押していたら0xfe(254)、そうでなければ0xff(255)が出力されてしまいました。
24
24
 
25
25
 
26
26
 
@@ -68,6 +68,6 @@
68
68
 
69
69
  while True:
70
70
 
71
- print (pi.i2c_read_byte(hndl))
71
+ print (pi.i2c_read_i2c_block_data(hndl,REG_GPIOA,0x01))
72
72
 
73
73
  ```