ruby hardware programming
スイッチが押されたことをプログラムで検知して、プログラムからLEDを光らせます。
メーカー | 秋月 通販コード | 型番 | 商品名 | 個数 |
---|---|---|---|---|
OptoSupply | I-11577 | OSR5JA3Z74A | 赤色LED | 1 |
FAITHFUL LINK INDUSTRIAL CORP. | R-25471 | CF25J470RB | カーボン抵抗(炭素皮膜抵抗) 1/4W470Ω | 2 |
Cosland Co,. Ltd. | P-03647 | TS-0606-F-N-BLK | タクトスイッチ(黒色) | 1 |
今回使用している2つの抵抗は両方とも、470Ωです。
input_switch.rb
を作成します。
require 'pi_piper'
switch_pin = PiPiper::Pin.new(pin: 21, direction: :in)
led_pin = PiPiper::Pin.new(pin: 18, direction: :out)
loop do
switch_pin.read
puts switch_pin.off?
if switch_pin.on?
led_pin.off
else
led_pin.on
end
sleep 0.5
end
次のコマンドを実行すれば、入力待機状態になります。
rbenv sudo bundle exec ruby input_switch.rb
終了するには、Ctrl + C
を押下します。
PiPiper::Pin#read
はピンから値を読み取り、インスタンスのvalue
に入れる。読み取り前のvalue
をlast_value
に入れる。
スイッチが押されていない状態では、青色ケーブルを通って、 GPIO 21 に電流が流れます。 スイッチを押すと、黒色ケーブル(Ground)に電流が流れ始めるため、 GPIO 21 の電流が減ります。電流量が一定量を下回ると Off と認識されるため、 GPIO 21 が Off になります。 スイッチ側の、+側に置いている抵抗のことを、Pull up 抵抗と言います。反対に、-側に置いた場合は、 Pull down 抵抗と言います。
回答例はこちら