7.3 警報サイレンランプ

警察の灯りは、実際の生活(または映画)でよく見かけます。通常、交通を整理するため、警告装置として、そして警察官、緊急車両、消防車、作業車の重要な安全装置として使用されます。その灯りや音を見聞きした場合、注意が必要です。それは、あなた(または周囲の人々)が危険にさらされている可能性があるからです。

ここでは、LEDとブザーを用いて小型の警告灯を作成し、スライドスイッチで起動します。

sirem_alarm

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全てを一つのキットで購入すると便利です。リンクはこちら:

名前

キットの内容

リンク

ケプラーキット

450+点

Kepler Kit

以下のリンクから個別にも購入できます。

SN

コンポーネント

個数

リンク

1

Raspberry Pi Pico W

1

BUY

2

Micro USBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

LED

1

BUY

6

トランジスタ

1(S8050)

BUY

7

抵抗器

3(1KΩ, 220Ω, 10KΩ)

BUY

8

パッシブ ブザー

1

BUY

9

コンデンサ

1(104)

BUY

10

スライドスイッチ

1

回路図

sch_alarm_siren_lamp

  • GP17はスライダーの中央ピンに接続されており、10Kの抵抗と一緒にキャパシタ(フィルタ)がGNDに並列接続されています。これにより、スライダーは左右に切り替えられたときに安定した高いまたは低いレベルを出力します。

  • GP15が高いとすぐに、NPNトランジスタが導通し、パッシブブザーが鳴り始めます。このパッシブブザーは、サイレン音を出すように周波数が徐々に増加するようにプログラムされています。

  • LEDはGP16に接続されており、サイレンを模倣するように定期的に明るさを変えるようにプログラムされています。

配線

wiring_alarm_siren_lamp

コード

注釈

  • kepler-kit-main/micropython フォルダ下の 7.3_alarm_siren_lamp.py ファイルを開くか、このコードをThonnyにコピーしてから、「Run Current Script」をクリックするか、F5キーを押して実行してください。

  • 右下隅の「MicroPython(Raspberry Pi Pico)」インタープリタを選択することを忘れずに。

  • 詳細なチュートリアルについては、 コードを直接開いて実行する を参照してください。

import machine
import time

buzzer = machine.PWM(machine.Pin(15))
led = machine.PWM(machine.Pin(16))
led.freq(1000)

switch = machine.Pin(17, machine.Pin.IN)

def noTone(pin):
    pin.duty_u16(0)

def tone(pin, frequency):
    pin.freq(frequency)
    pin.duty_u16(30000)

def interval_mapping(x, in_min, in_max, out_min, out_max):
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

def toggle(pin):
    global bell_flag
    bell_flag = not bell_flag
    print(bell_flag)
    if bell_flag:
        switch.irq(trigger=machine.Pin.IRQ_FALLING, handler=toggle)
    else:
        switch.irq(trigger=machine.Pin.IRQ_RISING, handler=toggle)

bell_flag = False
switch.irq(trigger=machine.Pin.IRQ_RISING, handler=toggle)

while True:
    if bell_flag == True:
        for i in range(0, 100, 2):
            led.duty_u16(int(interval_mapping(i, 0, 100, 0, 65535)))
            tone(buzzer, int(interval_mapping(i, 0, 100, 130, 800)))
            time.sleep_ms(10)
    else:
        noTone(buzzer)
        led.duty_u16(0)

プログラムが動作している状態で、スライドスイッチを左に切り替えると(あなたのスライドスイッチの配線によっては右かもしれません)、ブザーが段階的に警告音を発し、LEDの明るさもそれに応じて変わります。スライドスイッチを右に切り替えると、ブザーとLEDは動作を停止します。