現状
自分は、Raspberry Pi Picoを用いて、
「タクトスイッチが押されたら、LEDライトが一秒間点灯する」という、簡易的な回路を作りました
プログラムは以下の通りとなります
from machine import Pin import time led1 = Pin(15, Pin.OUT) tact1 = Pin(16, Pin.IN, Pin.PULL_DOWN) led2 = Pin(14, Pin.OUT) tact2 = Pin(17, Pin.IN, Pin.PULL_DOWN) led3 = Pin(13, Pin.OUT) tact3 = Pin(26, Pin.IN, Pin.PULL_DOWN) while True: if tact1.value() == 1: led1.value(1) time.sleep(1) led1.value(0) time.sleep(1) if tact2.value() == 1: led2.value(1) time.sleep(1) led2.value(0) time.sleep(1) if tact3.value() == 1: led3.value(1) time.sleep(1) led3.value(0) time.sleep(1)
実現したいこと
このプログラムを短縮したいと思い、
「スイッチが押されたら、別のpyプログラムを呼び込む」という方法を取りたいと思いました
そこで、「別のpyファイルを読み込む方法」で検索をかけ、
「main.py」と同じディレクトリに保存し、「import」で呼び込むという方法を知りました
そこで、「main.py」と同じディレクトリに、「green.py」「yellow.py」「red.py」の三つのプログラムを作成、以下のように書き直しました
main.py==================== from machine import Pin import time led1 = Pin(15, Pin.OUT) tact1 = Pin(16, Pin.IN, Pin.PULL_DOWN) led2 = Pin(14, Pin.OUT) tact2 = Pin(17, Pin.IN, Pin.PULL_DOWN) led3 = Pin(13, Pin.OUT) tact3 = Pin(26, Pin.IN, Pin.PULL_DOWN) while True: if tact1.value() == 1: import green.py if tact2.value() == 1: import yellow.py if tact3.value() == 1: import red.py green.py================- from machine import Pin import time led1 = Pin(15, Pin.OUT) led1.value(1) time.sleep(1) led1.value(0) time.sleep(1) yellow.py================- from machine import Pin import time led2 = Pin(14, Pin.OUT) led2.value(1) time.sleep(1) led2.value(0) time.sleep(1) red.py================- from machine import Pin import time led3 = Pin(13, Pin.OUT) led3.value(1) time.sleep(1) led3.value(0) time.sleep(1)
発生している問題・エラーメッセージ
このプログラムを走らせると、
1回タクトスイッチを押した時は問題なくプログラムが動くのですが、
2回目にタクトスイッチを押すと、以下のようなエラーが発生します
Traceback (most recent call last): File "<stdin>", line 16, in <module> ImportError: no module named 'yellow.py' >>>
試したこと
プログラムの中で「import」したpyプログラムが、終了されずにずっと動き続けているから、
同じスイッチを二回押した時にエラーを起こしていると判断しました。
green.pyの最後に「machine.reset() 」をかけることで、運用できることは確認しました
これは前に質問した、プログラムの管理外に処理を放り投げるということでダメだということはわかっています
どうにかして、「プログラムを呼び出しては終了、呼び出しては終了」という形にすればよいと思うのですが、それはどうすればよいのでしょうか?
補足
そもそも、「import」以外に、同じディレクトリのpyファイルを読み込む方法はあるのでしょうか?
