「金庫」を改良して「安全な金庫」を作りました
前回の「金庫」はこちら

【レゴエデュケーション SPIKE プライム】金庫
「金庫」を作りました モーターを使って鍵をかけます。ダイアルを合わせることで鍵を開けることができます 公式の教員向けレッスンプランはこちらです 正面から見たところです。右のモーターが鍵をかけるためのもの。左のモーターは鍵を開くためのものです...
公式の教員向けのレッスンプランはこちらです

セキュリティを強化しよう。
複雑な条件を使って、金庫の暗号パターンを強化しましょう。
死神の持っている草刈り鎌のようなパーツが今回追加したものです
使っていなかったモーターも利用します
開始と同時にダイヤルカバーが徐々に降りてきます。時間以内に解除しないと、ダイヤルがカバーに覆われてしまう仕組み。ちょっとアナログな感じのセキュリティ対策です
無事解除できました
プログラムです。タイマーを利用して、解除できる時間を制限しています
Pythonだとこうなります
from spike import PrimeHub, App, Motor from spike.control import Timer, wait_for_seconds hub = PrimeHub() app = App() dial = Motor('B') # ダイヤル用モーター lock = Motor('C') # ロック用モーター dial_cover = Motor('E') # ダイアルを隠すカバー用モーター timer = Timer() dial.set_default_speed(75) lock.set_default_speed(75) dial_cover.set_default_speed(75) def unlock(): # 左ボタンが押されていない かつ ダイアルが180°より小さい 間ループが繰り返される while not hub.left_button.is_pressed() and dial.get_degrees_counted() < 180: hub.speaker.beep(60) dial_cover.run_for_degrees(15) wait_for_seconds(0.8) if timer.now() > 5: app.play_sound('Bonk') return # ロック解除 hub.light_matrix.show_image('NO') wait_for_seconds(2) hub.light_matrix.show_image('YES') dial_cover.run_to_position(0) lock.run_for_seconds(1) app.play_sound('Wand') wait_for_seconds(5) # ドアをロックし、別の防犯メカニズムを作動させます。 hub.speaker.beep(60) hub.speaker.beep(72) lock.run_for_seconds(1, -50) # ロックする dial.run_to_position(0) dial_cover.run_to_position(0) dial.set_degrees_counted(0) dial.set_stop_action('coast') hub.light_matrix.show_image('NO') timer.reset() unlock()[PR]