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

質問編集履歴

2

追記

2020/01/13 06:50

投稿

_magurochan
_magurochan

スコア13

title CHANGED
File without changes
body CHANGED
@@ -34,4 +34,40 @@
34
34
 
35
35
  while True:
36
36
  print (pi.i2c_read_i2c_block_data(hndl,REG_GPIOA,0x01))
37
- ```
37
+ ```
38
+
39
+ #追記1
40
+ ```
41
+ data = pi.i2c_read_i2c_block_data(hndl,REG_GPIOA,0x1)
42
+ print(hex(~data&0xff))
43
+ ```
44
+ にしたところ
45
+ ```
46
+ Traceback (most recent call last):
47
+ File "python-osc.py", line 35, in <module>
48
+ print(hex(~data&0xff))
49
+ TypeError: bad operand type for unary ~: 'tuple'
50
+ ```
51
+ このようなエラーになりました。
52
+
53
+ dataの出力される情報が良くないと思い、dataを変えました
54
+ ```Python3
55
+ data = pi.i2c_read_byte_data(hndl,REG_GPIOA)
56
+ print(hex(~data&0xff))
57
+ ```
58
+ すると
59
+ ```Python
60
+ 0x0 #何も押していない
61
+ 0x1 #ボタン1を押している時
62
+ 0x2 #ボタン2を押している時
63
+ 0x3 #ボタン1とボタン2を同時に押している時
64
+ ```
65
+ と出力されました。
66
+ たぶん、入力するポートを**pi.i2c_read_byte_data()**では指定できないからだと思います。
67
+
68
+ 他に、
69
+ ```Python
70
+ data = pi.i2c_read_byte_data(hndl,0x01)#ポート1だけ読み込むの意味
71
+ print(hex(~data&0xff))
72
+ ```
73
+ では、エラーが出なかったけど、数値が変更されずでした。

1

追記

2020/01/13 06:50

投稿

_magurochan
_magurochan

スコア13

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  #試したこと・困っていること
11
11
 
12
- 下のを実行しました。数値が押していたら254、そうでなければ255が出力されてしまいました。
12
+ 下のを実行しました。数値が押していたら0xfe(254)、そうでなければ0xff(255)が出力されてしまいました。
13
13
 
14
14
  ```Python3
15
15
  import pigpio
@@ -33,5 +33,5 @@
33
33
  pi.i2c_write_byte_data(hndl,REG_GPPUA,0xff) #とりあえずAの全てプルアップします。
34
34
 
35
35
  while True:
36
- print (pi.i2c_read_byte(hndl))
36
+ print (pi.i2c_read_i2c_block_data(hndl,REG_GPIOA,0x01))
37
37
  ```