ラズパイのGPIOに接続したタクトスイッチが押された回数をカウントし、
その入力回数をwebブラウザに出力するプログラムを書こうとしています。
しかし、下記エラーが出力されます。
TypeError: _count() takes exactly 1 argument (0 given)
countup4.py
1# -*- encoding:utf-8 -*- 2from flask import Flask, render_template 3import RPi.GPIO as GPIO 4import time 5import signal 6import sys 7 8app = Flask(__name__) 9 10GPIO.setmode(GPIO.BCM) 11GPIO.setup(27, GPIO.IN, GPIO.PUD_DOWN) 12 13count=0 14 15def main(): 16 try: 17 while True: 18 time.sleep(0.1) 19 except KeyboardInterrupt: 20 GPIO.cleanup() 21 22@app.route("/") 23def _count(hoge): 24 if GPIO.input(27): 25 global count 26 count += 1 27 return render_template("index1.html", testcount = count) 28 29GPIO.add_event_detect(27, GPIO.RISING, callback=_count, bouncetime=100) 30 31if __name__=='__main__': 32 main() 33 34def sigint_handler(signal, frame): 35 app.logger.debug("Closing") 36 GPIO.cleanup() 37 app.logger.debug("Closed") 38 sys.exit(0) 39 40signal.signal(signal.SIGINT, sigint_handler) 41app.run("0.0.0.0", debug=True)
index1.html
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5<title></title> 6</head> 7<body> 8Ch0 :{{ testcount }}<br> 9<br> 10<input type="button" value="reload" onclick="location.reload()"> 11</body> 12</html>
他には、webブラウザに出力するための関数と回数をカウントするための関数を分けて出力することも試みました。
以下コードです。
countup4.py
1# -*- encoding:utf-8 -*- 2 3from flask import Flask, render_template 4import RPi.GPIO as GPIO 5import time 6import signal 7import sys 8 9app = Flask(__name__) 10 11GPIO.setmode(GPIO.BCM) 12GPIO.setup(27, GPIO.IN, GPIO.PUD_DOWN) 13 14count=0 15 16def main(): 17 try: 18 while True: 19 time.sleep(0.1) 20 except KeyboardInterrupt: 21 GPIO.cleanup() 22 23 24def _count(hoge): 25 if GPIO.input(27): 26 global count 27 count += 1 28 print(str(count)+"回目") 29 time.sleep(0.2) 30 31 32@app.route("/") 33def index(): 34 return render_template("index1.html", testcount = count) 35 36GPIO.add_event_detect(27, GPIO.RISING, callback=_count, bouncetime=100) 37 38if __name__=='__main__': 39 main() 40 41def sigint_handler(signal, frame): 42 app.logger.debug("Closing") 43 GPIO.cleanup() 44 app.logger.debug("Closed") 45 sys.exit(0) 46 47signal.signal(signal.SIGINT, sigint_handler) 48app.run("0.0.0.0", debug=True) 49
webブラウザでの出力結果として、0が出力されます。
def indexのtestcount=countに、関数外で定義したcount=0が代入されているようです。
累算結果をwebブラウザに出力するための方法や考え方、修正点などをご教示頂けないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/05 04:02
2021/06/05 06:26
2021/06/05 08:21 編集
2021/06/05 08:08
2021/06/05 08:12 編集
2021/06/06 00:24 編集
2021/06/06 00:42
2021/06/06 03:08 編集
2021/06/06 03:17
2021/06/06 22:27 編集
2021/06/07 00:26