質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

310閲覧

ラズベリーパイzeroWHのPython3にてコードを書き直して何度も実行を試みましたが何度もエラーがでて、前に進めません...

furanberu

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/17 14:33

ヘディングのテキスト### 前提・実現したいこと

全くの初心者です。ラズベリーパイのPython3を使ってセンサーからの結果をもとに100円と500円玉の通過した枚数を足していき、その合計金額を出力するプログラムを作りたいと思っているのですが、2つのブログを参考にコードを書いたところ、以下のようなエラーメッセージが発生しました。
コードの大まかな内容としては、ラズベリーパイの16ピン(GPIO_PIN1)と23ピン(GPIO_PIN2)に入ったデータを、電卓の画面のようなLCDディスプレイに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/

発生している問題・エラーメッセージ

line 64
i = i + 1
^
syntaxError: invalid syntax

該当のソースコード

ソースコード

Python3

1コード 2```#!usr/bin/env python 3# -*- coding: utf-8 -*- 4from datetime import datetime 5import smbus 6import time 7import subprocess 8import RPi.GPIO as GPIO 9 10#yasumi 11INTERVAL = 0.5 12#use GPIOPIN 13GPIO_PIN1 = 16 14GPIO_PIN2 = 23 15 16GPIO.setmode(GPIO.BCM) 17GPIO.setup(GPIO_PIN1,GPIO.IN) 18GPIO.setup(GPIO_PIN2,GPIO.IN) 19 20i2c = smbus.SMBus(1) 21addr02=0x3e 22_command=0x00 23_data=0x40 24_clear=0x01 25_home=0x02 26display_On=0x0f 27LCD_2ndline=0x40+0x80 28 29#LCD AQM1602 30def command( code ): 31 i2c.write_byte_data(addr02, _command, code) 32 time.sleep(0.1) 33 34def writeLCD( message ): 35 mojilist=[] 36 for moji in message: 37 mojilist.append(ord(moji)) 38 i2c.write_i2c_block_data(addr02, _data, mojilist) 39 time.sleep(0.1) 40 41def init (): 42 command(0x38) 43 command(0x39) 44 command(0x14) 45 command(0x70) 46 command(0x56) 47 command(0x6c) 48 command(0x38) 49 command(_clear) 50 command(display_On) 51 command(0x0c) 52 53#main 54init() 55command(_clear) 56writeLCD("100 500 total ") 57command(LCD_2ndline) 58if _name_ == '_main_': 59 i = 1 60 k = 1 61 try: 62 while True: 63 if(GPIO.input(GPIO_PIN1) == GPIO.HIGH): 64 writeLCD(str("{0:03d}".format(i))+str("{0:03d}".format(j))+str("{0:10d}".format(k)) 65 i = i + 1 66 j = j 67 k = i * 100 + j * 500 68 time.sleep(SLEEPTIME) 69 elif(GPIO.input(GPIO_PIN2) == GPIO.HIGH) : 70 writeLCD(str("{0:03d}".format(i))+str("{0:03d}".format(j))+str("{0:10d}".format(k)) 71 i = i 72 j = j + 1 73 k = i * 100 + j * 500 74 time.sleep(SLEEPTIME) 75 else: 76 time.sleep(SLEEPTIME) 77 78 79### 試したこと 80 81書いたコードの位置が間違っていると思いスペースで調節したり、if文内にあるdefを使った関数が上手く働いていないのかなど考え、色々と調べて見ましたがどのように書き直したらいいか分かりませんでした… 82 83 84### 補足情報(FW/ツールのバージョンなど) 85 86Python3 ラズベリーパイはおそらく最新の状態です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

最後にかっこが一つ足りません。
writeLCD(str("{0:03d}".format(i))+str("{0:03d}".format(j))+str("{0:10d}".format(k))

writeLCD(str("{0:03d}".format(i))+str("{0:03d}".format(j))+str("{0:10d}".format(k)))

投稿2018/12/17 14:43

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

furanberu

2018/12/17 14:55

ほんとですね…! ありがとうございます! もう一度質問しなおしたものがあるので、もしよろしければそちらのほうで他にダメなところがないか教えていただけると嬉しいです…!
can110

2018/12/17 14:58

処理そのものは確認できていませんが、同様の場所は2か所ありますのでご注意を。 なお、Invalid Syntaxは文法エラーなので、エラー発生行の前後に誤字脱字がないかチェックするクセをつけるとよいでしょう。
furanberu

2018/12/17 15:18

ありがとうございます。 そちらの2箇所を修正したところ、以下のようなエラーが出てしまいどこがいけないのか分からなくなってしまいました… File "i2c.py", line 76 ^ SyntaxError: unexpected EOF while parsing この場合だとどうすれば解決出来ますか…? 教えていただければ幸いです…
can110

2018/12/17 15:40 編集

tryに対応するexcept句が存在しません。 なお、提示コードは中級者向けなので、もう少し簡単なコードから段階的に学習していくことをお勧めします。
furanberu

2018/12/17 15:40

エラーの内容は1番最後の行の空欄をさしていました。 実を言うと学校の授業で自分たちで作りたいものを考えて実現しなさいという内容のもので… いきなり初心者ができるようなコードではなかったんですね... もう少し頑張ってみようと思います。
furanberu

2018/12/17 15:41

except文をなんとか追加して再挑戦してみようと思います!
furanberu

2018/12/17 16:31

お陰様でなんとか動作成功しました!! センサー部分は熱でやられちゃって動作がおかしいですがw 夜遅くまでこんな初心者のために時間を割いていただき本当にありがとうございました…!
can110

2018/12/17 16:39

無事に動いて何よりです。 実際に目に見えるカタチで動作すると嬉しいものですね。
guest

0

自己解決

ごめんなさい汚くなっているので質問を書き直します…

投稿2018/12/17 14:36

furanberu

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/12/17 14:40

質門は編集できます コードは<code>ボタンで、’’’の枠の中に貼り付けましょう
furanberu

2018/12/17 15:22

スマホからやっていて、しかも初めこちらを利用させて頂いたのでめちゃくちゃになってました… ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問