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をアプデしたことで、プログラムの書き方が変わってしまったのでしょうか。
よろしくお願いします。
2.7 から 3.5 へは単純な移行は出来なかったと思いますが移行作業はしたのですか?
http://make-muda.weblike.jp/2016/03/3631/ これを参考にしました。
回答2件
あなたの回答
tips
プレビュー