全くの初心者です。ラズベリーパイのPython3を使ってセンサーからの結果をもとに100円と500円玉の通過した枚数を足していき、その合計金額を出力するプログラムを作りたいと思っているのですが、2つのブログを参考にコードを書いたところ、
64行目にてsyntaxError: invalid syntaxとのエラーが出てしまいました。
コードの大まかな内容としては、ラズベリーパイの16ピン(GPIO_PIN1)と23ピン(GPIO_PIN2)に入ったデータを、電卓の画面のようなLCDディスプレイ16桁×2行にwriteLCDという関数(?)を使って、入力した数字や文字をそのまま反映させるといった内容です。
一番下のWhile文の中身はLCDディスプレイの2行目に表示させようとしているプログラムです。
16ピンに入力された時に、16ピンに入力された回数を前回の数+1(i=i+1)として3桁で表示し、23ピンの回数はそのまま3桁(j)で表示し、100円と500円の合計金額(k)を10桁で表示させ、0.5秒待機させたいと思っています。
また、23ピンに入力された時に、16ピンに入力された回数(i)をそのまま3桁で表示し、23ピンの回数は前回の数+1(j=j+1)3桁で表示し、100円と500円の合計金額(k)を10桁で表示させ、0.5秒待機させたいと思っています。
どちらにも入力されなかった場合に0.5秒待機するプログラムのつもりです。
以下2つが参考にさせて頂いたブログです。
https://www.denshi.club/pc/raspi/i2caqmlcdarduinode1-aqm0802.html
https://chasuke.com/motionsensor/
python
1from datetime import datetime 2import smbus 3import time 4import subprocess 5import RPi.GPIO as GPIO 6 7 8INTERVAL = 0.5 9 10GPIO_PIN1 = 16 11GPIO_PIN2 = 23 12 13GPIO.setmode(GPIO.BCM) 14GPIO.setup(GPIO_PIN1,GPIO.IN) 15GPIO.setup(GPIO_PIN2,GPIO.IN) 16 17i2c = smbus.SMBus(1) 18addr02=0x3e 19_command=0x00 20_data=0x40 21_clear=0x01 22_home=0x02 23display_On=0x0f 24LCD_2ndline=0x40+0x80 25 26 27def command( code ): 28 i2c.write_byte_data(addr02, _command, code) 29 time.sleep(0.1) 30 31def writeLCD( message ): 32 mojilist=[] 33 for moji in message: 34 mojilist.append(ord(moji)) 35 i2c.write_i2c_block_data(addr02, _data, mojilist) 36 time.sleep(0.1) 37 38def init (): 39 command(0x38) 40 command(0x39) 41 command(0x14) 42 command(0x70) 43 command(0x56) 44 command(0x6c) 45 command(0x38) 46 command(_clear) 47 command(display_On) 48 command(0x0c) 49 50 51init() 52command(_clear) 53writeLCD("100 500 total ") 54command(LCD_2ndline) 55if _name_ == '_main_': 56 i = 1 57 k = 1 58 try: 59 while True: 60 if(GPIO.input(GPIO_PIN) == GPIO.HIGH): 61 writeLCD(str("{0:03d}".format(i))+str("{0:03d}".format(j))+str("{0:10d}".format(k)) 62 i = i + 1 63 j = j 64 k = i * 100 + j * 500 65 time.sleep(SLEEPTIME) 66 elif(GPIO.input(GPIO_PIN2) == GPIO.HIGH) : 67 writeLCD(str("{0:03d}".format(i))+str("{0:03d}".format(j))+str("{0:10d}".format(k)) 68 i = i 69 j = j + 1 70 k = i * 100 + j * 500 71 time.sleep(SLEEPTIME) 72 else: 73 time.sleep(SLEEPTIME)
いろいろと試し、調べてみましたが何が原因なのかわからず手詰まりになってしまいました…
専門的な言葉や意味などは全くと言っていいほどわからないような初心者なので、どこのコードをこう書き直したほうがいいと教えていただけると幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/17 15:15
2018/12/17 15:20 編集
2018/12/17 15:37
2018/12/17 15:42 編集
2018/12/17 15:43
2018/12/17 16:29