質問編集履歴

2 訂正

shuppi

shuppi score 41

2017/09/15 11:22  投稿

ラズパイ pythonをアプデしたら、前に実行できたプログラムが実行できなくなった
Raspberry Pi 3 Model B Ver 1.2を使っています。
忘れてしまいましたが、python2.7.?からpython3.5.3にアップデートしました。
それから、下記のプログラムがをはいて、起動できなくなりました。
もしかしたら、アップデート前にすこしいじっていたのかもしれないです。
動きは、人感センサ四つで動きを感知したら、カメラで撮影を行うようにしています。
動きは、人感センサ四つを使い、動きを感知したら、カメラで撮影を行うようにしています。
東西南北は人感センサ二つで検知範囲が重なるところで判断しています。
あと、カメラのプレビューも、モニターに表示しています。
```
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
#Cursesの文字化け対策
import curses
import locale
#カメラ
import picamera
import threading
SLEEPTIME = 1
#撮影画像サイズ
PIC_WIDTH = 800
PIC_HEIGHT = 600
#撮影画像保存場所
SAVEDIR = "/home/pi/kaihatsu/picture/"
#人感センサ
SENSOR1_PIN = 17
SENSOR2_PIN = 18
SENSOR3_PIN = 27
SENSOR4_PIN = 22
#LED
LED1_PIN = 23
LED2_PIN = 24
LED3_PIN = 25
LED4_PIN = 8
GPIO.setmode(GPIO.BCM)
#人感センサピンの設定
GPIO.setup(SENSOR1_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(SENSOR2_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(SENSOR3_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(SENSOR4_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
#LEDピンの設定
GPIO.setup(LED1_PIN, GPIO.OUT)
GPIO.setup(LED2_PIN, GPIO.OUT)
GPIO.setup(LED3_PIN, GPIO.OUT)
GPIO.setup(LED4_PIN, GPIO.OUT)
#Cursesの文字化け対策
locale.setlocale(locale.LC_ALL, "")
cam = picamera.PiCamera()
cam.resolution = (PIC_WIDTH, PIC_HEIGHT)
#cam.hflip = True
cam.vflip = True
# カメラのプレビュー
def test():
 cam.start_preview()
thread1 = threading.Thread(target = test)
# main
if __name__ == "__main__":
 while True:
   thread1.start()
   try:
     stdscr = curses.initscr()
     curses.noecho()
     stdscr.clear()
     stdscr.addstr(1, 0, '北東:%s:' % GPIO.input(SENSOR1_PIN))
     stdscr.addstr(2, 0, '南東:%s:' % GPIO.input(SENSOR4_PIN))
     stdscr.addstr(3, 0, '南西:%s:' % GPIO.input(SENSOR3_PIN))
     stdscr.addstr(4, 0, '北西:%s:' % GPIO.input(SENSOR2_PIN))
     stdscr.addstr(6, 2, '北 :')
     stdscr.addstr(7, 2, '東 :')
     stdscr.addstr(8, 2, '南 :')
     stdscr.addstr(9, 2, '西 :')
     #人感センサ1 (北東)
     if(GPIO.input(SENSOR1_PIN) == GPIO.HIGH):
       stdscr.addstr(1, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ2 (北西)
     if(GPIO.input(SENSOR2_PIN) == GPIO.HIGH):
       stdscr.addstr(2, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ3 (南西)
     if(GPIO.input(SENSOR3_PIN) == GPIO.HIGH):
       stdscr.addstr(3, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ4 (南東)
     if(GPIO.input(SENSOR4_PIN) == GPIO.HIGH):
       stdscr.addstr(4, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ1 & 2 (北)
     if(GPIO.input(SENSOR1_PIN) == GPIO.HIGH and GPIO.input(SENSOR2_PIN) == GPIO.HIGH):
       GPIO.output(LED4_PIN, GPIO.HIGH)
       stdscr.addstr(9, 8, '動物を感知しました')
       stdscr.refresh()
     elif(GPIO.input(SENSOR1_PIN) == GPIO.LOW and GPIO.input(SENSOR2_PIN) == GPIO.LOW):
       GPIO.output(LED4_PIN, GPIO.LOW)
     #人感センサ1 & 4 (東)
     if(GPIO.input(SENSOR1_PIN) == GPIO.HIGH and GPIO.input(SENSOR4_PIN) == GPIO.HIGH):
       GPIO.output(LED1_PIN, GPIO.HIGH)
       stdscr.addstr(6, 8, '動物を感知しました')
       stdscr.refresh()
       filename = time.strftime("%Y%m%d%H%M%S") + ".jpg"
       save_file = SAVEDIR + filename
       cam.capture(save_file)
     elif(GPIO.input(SENSOR1_PIN) == GPIO.LOW and GPIO.input(SENSOR4_PIN) == GPIO.LOW):
       GPIO.output(LED1_PIN, GPIO.LOW)
     #人感センサ3 & 4 (南)
     if(GPIO.input(SENSOR3_PIN) == GPIO.HIGH and GPIO.input(SENSOR4_PIN) == GPIO.HIGH):
       GPIO.output(LED2_PIN, GPIO.HIGH)
       stdscr.addstr(7, 8, '動物を感知しました')
       stdscr.refresh()
     elif(GPIO.input(SENSOR3_PIN) == GPIO.LOW and GPIO.input(SENSOR4_PIN) == GPIO.LOW):
       GPIO.output(LED2_PIN, GPIO.LOW)
     #人感センサ2 & 3 (西)
     if(GPIO.input(SENSOR2_PIN) == GPIO.HIGH and GPIO.input(SENSOR3_PIN) == GPIO.HIGH):
       GPIO.output(LED3_PIN, GPIO.HIGH)
       stdscr.addstr(8, 8, '動物を感知しました')
       stdscr.refresh()
     elif(GPIO.input(SENSOR2_PIN) == GPIO.LOW and GPIO.input(SENSOR3_PIN) == GPIO.LOW):
       GPIO.output(LED3_PIN, GPIO.LOW)
     time.sleep(SLEEPTIME)
   except KeyboardInterrupt:
     cam.stop_preview()
     thread1.join()
     GPIO.cleanup()
   finally:
     curses.echo()
     curses.endwin()
```
拙いプログラムですみません。
自分ではどこがおかしいのかわかりません。
pythonをアプデしたことで、プログラムの書き方が変わってしまったのでしょうか。
↓エラー内容です。
![イメージ説明](3a0833401f1951aa8dd43ac45dd0d2dc.png)
よろしくお願いします。
  • Raspberry Pi

    1333 questions

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

1 訂正

shuppi

shuppi score 41

2017/09/15 11:21  投稿

ラズパイ pythonをアプデしたら、前に実行できたプログラムが実行できなくなった
Raspberry Pi 3 Model B Ver 1.2を使っています。
忘れてしまいましたが、python2.7.?からpython3.5.3にアップデートしました。
それから、下記のプログラムがをはいて、起動できなくなりました。
もしかしたら、アップデート前にすこしいじっていたのかもしれないです。
動きは、人感センサで動きを感知したら、カメラで撮影を行うようにしています。
動きは、人感センサ四つで動きを感知したら、カメラで撮影を行うようにしています。
あと、カメラのプレビューも、モニターに表示しています。
```
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
#Cursesの文字化け対策
import curses
import locale
#カメラ
import picamera
import threading
SLEEPTIME = 1
#撮影画像サイズ
PIC_WIDTH = 800
PIC_HEIGHT = 600
#撮影画像保存場所
SAVEDIR = "/home/pi/kaihatsu/picture/"
#人感センサ
SENSOR1_PIN = 17
SENSOR2_PIN = 18
SENSOR3_PIN = 27
SENSOR4_PIN = 22
#LED
LED1_PIN = 23
LED2_PIN = 24
LED3_PIN = 25
LED4_PIN = 8
GPIO.setmode(GPIO.BCM)
#人感センサピンの設定
GPIO.setup(SENSOR1_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(SENSOR2_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(SENSOR3_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(SENSOR4_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
#LEDピンの設定
GPIO.setup(LED1_PIN, GPIO.OUT)
GPIO.setup(LED2_PIN, GPIO.OUT)
GPIO.setup(LED3_PIN, GPIO.OUT)
GPIO.setup(LED4_PIN, GPIO.OUT)
#Cursesの文字化け対策
locale.setlocale(locale.LC_ALL, "")
cam = picamera.PiCamera()
cam.resolution = (PIC_WIDTH, PIC_HEIGHT)
#cam.hflip = True
cam.vflip = True
# カメラのプレビュー
def test():
 cam.start_preview()
thread1 = threading.Thread(target = test)
# main
if __name__ == "__main__":
 while True:
   thread1.start()
   try:
     stdscr = curses.initscr()
     curses.noecho()
     stdscr.clear()
     stdscr.addstr(1, 0, '北東:%s:' % GPIO.input(SENSOR1_PIN))
     stdscr.addstr(2, 0, '南東:%s:' % GPIO.input(SENSOR4_PIN))
     stdscr.addstr(3, 0, '南西:%s:' % GPIO.input(SENSOR3_PIN))
     stdscr.addstr(4, 0, '北西:%s:' % GPIO.input(SENSOR2_PIN))
     stdscr.addstr(6, 2, '北 :')
     stdscr.addstr(7, 2, '東 :')
     stdscr.addstr(8, 2, '南 :')
     stdscr.addstr(9, 2, '西 :')
     #人感センサ1 (北東)
     if(GPIO.input(SENSOR1_PIN) == GPIO.HIGH):
       stdscr.addstr(1, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ2 (北西)
     if(GPIO.input(SENSOR2_PIN) == GPIO.HIGH):
       stdscr.addstr(2, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ3 (南西)
     if(GPIO.input(SENSOR3_PIN) == GPIO.HIGH):
       stdscr.addstr(3, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ4 (南東)
     if(GPIO.input(SENSOR4_PIN) == GPIO.HIGH):
       stdscr.addstr(4, 8, '動物を感知しました')
       stdscr.refresh()
     #人感センサ1 & 2 (北)
     if(GPIO.input(SENSOR1_PIN) == GPIO.HIGH and GPIO.input(SENSOR2_PIN) == GPIO.HIGH):
       GPIO.output(LED4_PIN, GPIO.HIGH)
       stdscr.addstr(9, 8, '動物を感知しました')
       stdscr.refresh()
     elif(GPIO.input(SENSOR1_PIN) == GPIO.LOW and GPIO.input(SENSOR2_PIN) == GPIO.LOW):
       GPIO.output(LED4_PIN, GPIO.LOW)
     #人感センサ1 & 4 (東)
     if(GPIO.input(SENSOR1_PIN) == GPIO.HIGH and GPIO.input(SENSOR4_PIN) == GPIO.HIGH):
       GPIO.output(LED1_PIN, GPIO.HIGH)
       stdscr.addstr(6, 8, '動物を感知しました')
       stdscr.refresh()
       filename = time.strftime("%Y%m%d%H%M%S") + ".jpg"
       save_file = SAVEDIR + filename
       cam.capture(save_file)
     elif(GPIO.input(SENSOR1_PIN) == GPIO.LOW and GPIO.input(SENSOR4_PIN) == GPIO.LOW):
       GPIO.output(LED1_PIN, GPIO.LOW)
     #人感センサ3 & 4 (南)
     if(GPIO.input(SENSOR3_PIN) == GPIO.HIGH and GPIO.input(SENSOR4_PIN) == GPIO.HIGH):
       GPIO.output(LED2_PIN, GPIO.HIGH)
       stdscr.addstr(7, 8, '動物を感知しました')
       stdscr.refresh()
     elif(GPIO.input(SENSOR3_PIN) == GPIO.LOW and GPIO.input(SENSOR4_PIN) == GPIO.LOW):
       GPIO.output(LED2_PIN, GPIO.LOW)
     #人感センサ2 & 3 (西)
     if(GPIO.input(SENSOR2_PIN) == GPIO.HIGH and GPIO.input(SENSOR3_PIN) == GPIO.HIGH):
       GPIO.output(LED3_PIN, GPIO.HIGH)
       stdscr.addstr(8, 8, '動物を感知しました')
       stdscr.refresh()
     elif(GPIO.input(SENSOR2_PIN) == GPIO.LOW and GPIO.input(SENSOR3_PIN) == GPIO.LOW):
       GPIO.output(LED3_PIN, GPIO.LOW)
     time.sleep(SLEEPTIME)
   except KeyboardInterrupt:
     cam.stop_preview()
     thread1.join()
     GPIO.cleanup()
   finally:
     curses.echo()
     curses.endwin()
```
拙いプログラムですみません。
自分ではどこがおかしいのかわかりません。
pythonをアプデしたことで、プログラムの書き方が変わってしまったのでしょうか。
↓エラー内容です。
![イメージ説明](3a0833401f1951aa8dd43ac45dd0d2dc.png)
よろしくお願いします。
  • Raspberry Pi

    1333 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る