質問編集履歴

8

追記

2017/09/07 11:21

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -83,3 +83,63 @@
83
83
  下記は、その時の結果(添付画像が何故かさかさまになります。すみません。)
84
84
 
85
85
  ![イメージ説明](e04fdb7b83a188c878b62ca03fa0d042.jpeg)
86
+
87
+
88
+
89
+
90
+
91
+ 問題を単純化してみたのが次のコードです。
92
+
93
+ ```wiringpi as pi
94
+
95
+
96
+
97
+ global counter
98
+
99
+ bt_pin = 17
100
+
101
+ counter = 0
102
+
103
+
104
+
105
+ pi.wiringPiSetupGpio()
106
+
107
+
108
+
109
+ def Warikomi():
110
+
111
+ print( "割り込み関数通過" )
112
+
113
+
114
+
115
+ try:
116
+
117
+ ret = pi.wiringPiISR( bt_pin, pi.INT_EDGE_RISING , Warikomi )
118
+
119
+ while True:
120
+
121
+ time.sleep(0.5)
122
+
123
+ counter = counter + 1
124
+
125
+ print( counter )
126
+
127
+ time.sleep(0.5)
128
+
129
+ except KeyboardInterrupt:
130
+
131
+ print ("except通過" )
132
+
133
+ finally :
134
+
135
+ print ("finally通過" )
136
+
137
+
138
+
139
+ ```
140
+
141
+ このプログラムが開始すると、ディスプレイに1ずつカウントアップされ、
142
+
143
+ ボタンが押されたときにプログラムが終了(正常終了?異常終了?)してしまいます。
144
+
145
+ finally句は通りません。Warikomi関数も実行されません。

7

動作追記

2017/09/07 11:21

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -74,6 +74,12 @@
74
74
 
75
75
  ```
76
76
 
77
+ 動作としては、プログラムが開始すると、LEDが点滅します。
78
+
79
+ ボタンを押して、LEDの点滅を止めようとすると、プログラムが終了(正常終了?異常終了?)してしまいます。
80
+
81
+
82
+
77
83
  下記は、その時の結果(添付画像が何故かさかさまになります。すみません。)
78
84
 
79
85
  ![イメージ説明](e04fdb7b83a188c878b62ca03fa0d042.jpeg)

6

プログラム部分修正

2017/09/07 09:39

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -38,8 +38,6 @@
38
38
 
39
39
  global counter
40
40
 
41
- time.sleep(0.1)
42
-
43
41
  if ( pi.digitalRead( bt_pin ) == 0 ):
44
42
 
45
43
  counter = counter + 1

5

画像修正

2017/09/07 09:30

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- トグ![メージ説明](bea59c5c9f42f79271204c431d8f7b9c.jpeg)、LEDの点灯を制御したいのですが、
1
+ トグルスッチでのLEDの点灯を制御したいのですが、
2
2
 
3
3
  下記のようなソースで割り込みの箇所
4
4
 
@@ -76,6 +76,6 @@
76
76
 
77
77
  ```
78
78
 
79
- 下記は、その時の結果
79
+ 下記は、その時の結果(添付画像が何故かさかさまになります。すみません。)
80
80
 
81
81
  ![イメージ説明](e04fdb7b83a188c878b62ca03fa0d042.jpeg)

4

結果画像を追記

2017/09/07 06:58

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- トグルスッチで、LEDの点灯を制御したいのですが、
1
+ トグ![メージ説明](bea59c5c9f42f79271204c431d8f7b9c.jpeg)、LEDの点灯を制御したいのですが、
2
2
 
3
3
  下記のようなソースで割り込みの箇所
4
4
 
@@ -75,3 +75,7 @@
75
75
 
76
76
 
77
77
  ```
78
+
79
+ 下記は、その時の結果
80
+
81
+ ![イメージ説明](e04fdb7b83a188c878b62ca03fa0d042.jpeg)

3

slashさん、mituhaさんからのご指摘により。

2017/09/07 06:49

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -48,9 +48,9 @@
48
48
 
49
49
  try:
50
50
 
51
+ ret = pi.wiringPiISR( bt_pin, pi.INT_EDGE_BOTH , Warikomi )
52
+
51
53
  while True:
52
-
53
- ret = pi.wiringPiISR( bt_pin, pi.INT_EDGE_BOTH , Warikomi )
54
54
 
55
55
  if ( counter % 2 == 0 ):
56
56
 

2

文法訂正 pi\.wiringPiISR\( ~ , Warikomi\(\) \) → pi\.wiringPiISR\( ~ , Warikomi \)

2017/09/07 01:48

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  while True:
52
52
 
53
- ret = pi.wiringPiISR( bt_pin, pi.INT_EDGE_BOTH , Warikomi() )
53
+ ret = pi.wiringPiISR( bt_pin, pi.INT_EDGE_BOTH , Warikomi )
54
54
 
55
55
  if ( counter % 2 == 0 ):
56
56
 

1

言葉足らずを修正

2017/09/06 02:36

投稿

myu
myu

スコア18

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  下記のようなソースで割り込みの箇所
4
4
 
5
- pi.wiringPiISRの関数で、プログラムが終了してしまいます。
5
+ pi.wiringPiISRの関数で、トグルスイッチを押すとプログラムが終了してしまいます。
6
6
 
7
7
  本来は、無限ループなので、プログラムが終了することはないのですが。
8
8