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

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

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

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

1007閲覧

高速でLチカするように書いてるのに、しません。

KRSugar

総合スコア16

Python 3.x

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2019/06/19 14:26

困っていること
以下のコードの中で、「人感センサで人を検知したら0.2秒間隔で高速Lチカ」するようになっている部分があるのですが、実際に実行してみると、非常にのっそりとした点滅しかしません。0.2秒だけ点灯して、約1秒間消灯を繰り返している、といった感じです。コードがスッキリしていなくて非効率なのが原因でしょうか。だとしたら、どう変えたら良いのでしょうか。ご教示くだされば幸いです。

該当するコード

python3

1import threading 2import RPi.GPIO as GPIO 3import sys 4import os 5import shutil 6import time 7from time import sleep 8import serial 9import micropyGPS 10import threading 11import codecs 12 13LED1 = 16 14PIR = 11 15 16GPIO.setmode(GPIO.BOARD) 17GPIO.setup(LED1, GPIO.OUT) 18GPIO.setup(PIR, GPIO.IN) 19 20 21GPIO.output(LED1, True) 22time.sleep(2.0) 23GPIO.output(LED1, False) 24 25 26gps = micropyGPS.MicropyGPS(9, 'dd') 27 28 29def gpspython(): 30 while True: 31 rungps() 32 gps() 33 ledmain() 34 35 36def rungps(): # GPSモジュールを読み、GPSオブジェクトを更新する 37 s = serial.Serial('/dev/serial0', 9600, timeout=10) 38 s.readline() # 最初の1行は中途半端なデーターが読めることがあるので、捨てる 39 while True: 40 sentence = s.readline().decode('utf-8', errors='ignore') # GPSデーターを読み、文字列に変換する 41 for x in sentence: # 読んだ文字列を解析してGPSオブジェクトにデーターを追加、更新する 42 gps.update(x) 43 44gpsthread = threading.Thread(target=rungps, args=()) # 上の関数を実行するスレッドを生成 45gpsthread.daemon = True 46gpsthread.start() # スレッドを起動 47 48def ledmain(): 49 global stopstr1 50 stopstr1 = " " 51 led() 52 53def led(): 54 while True: 55 sleep(1) 56 if ( stopstr1 != " "): 57 GPIO.cleanup() 58 sys.exit() 59 60 #LED ON OFF 61 if ( GPIO.input(PIR) == GPIO.HIGH): 62 h = gps.timestamp[0] if gps.timestamp[0] < 24 else gps.timestamp[0] - 24 63 with open('gps.txt', "a", encoding='utf-8')as f: 64 print('detection!:%2d:%02d:%04.1f' % (h, gps.timestamp[1], gps.timestamp[2]), file=f) 65 print((''), file=f) 66 led01() 67 68#INTERRUPT Thread 69def stopinput(): 70 global stopstr1 71 72 73#led01 74def led01(): 75 GPIO.output(LED1, True) 76 time.sleep(0.2) 77 GPIO.output(LED1, False) 78 time.sleep(0.2) 79 80 81 82#SET Thread 83th=threading.Thread(target=stopinput) 84th.start() 85th2=threading.Thread(target=ledmain) 86th2.start() 87 88while True: 89 if gps.clean_sentences > 5: # ちゃんとしたデーターがある程度たまったら出力する 90 h = gps.timestamp[0] if gps.timestamp[0] < 24 else gps.timestamp[0] - 24 91 with open('gps.txt', "a", encoding='utf-8')as f: 92 print(('%2d:%02d:%04.1f' % (h, gps.timestamp[1], gps.timestamp[2])), file=f) 93 print(('緯度経度: %2.8f, %2.8f' % (gps.latitude[0], gps.longitude[0])), file=f) 94 print((''), file=f) 95 time.sleep(5.0) 96

環境

Raspberry Pi zero w の、Python3.5.3です。よろしくお願いします。

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

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

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

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

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

1T2R3M4

2019/06/19 14:30

sleep(1) は影響していませんか。
guest

回答1

0

ベストアンサー

以下のコードの中で、「人感センサで人を検知したら0.2秒間隔で高速Lチカ」するように

どうみてもそのようにはなっていません。

def led():

while True: sleep(1)

このsleep(1)というのはどういう動作をするのか考えてみればどうでしょうか

投稿2019/06/19 14:31

y_waiwai

総合スコア87719

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問