はじめに
こんにちは。
この記事は Kojirock1一人 Advent Calendar 2019の4日目の記事です。
今回も参考本を見ながら触っていきます。
前回は定番のLチカまで行きました。
今回はスイッチで遊んでみます。
やってみた
参考本にはトグルスイッチ・スライドスイッチ・DIPスイッチなどいろいろな種類が紹介されていましたが、自分が買った初心者キッドに状態を切り替えるスライドスイッチと、状態を戻すタクトスイッチが入っていたので、今回はこれを使ってみました。
まずはタクトスイッチからです。
タクトスイッチ
参考本のスクリプトをそのまま使用します。
#! /usr/bin/env python import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(9, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: print(GPIO.input(9)) time.sleep(0.5)
タクトスイッチが押されているときだけ 0
が表示され、 押されていないときは 1
が表示されます。
参考本では更にスクリプトを編集して、タクトスイッチを押した回数をカウントするという試みもありましたが、それはプログラム改修のはなしなので今回は飛ばしました。
スライドスイッチ
参考本ではタクトスイッチの説明の後、扇風機を制御するというチャプターに入ってしまうのですが、スライドスイッチで遊べてもないし、扇風機も初心者セットに入ってないので、とりあえずスライドスイッチを扱っているような初心者向けのサイトを探すと、以下の記事が見つかったので、こちらの内容を試してみました。
こちらの記事では WiringPi
なるライブラリを使っているようなので、インストールしておきます。
$ pip install wiringpi
これでスクリプトも問題なく動きます。
配線は記事と同様に繋いでみました。
スクリプトも同様のものを使わせてもらっています。
# -*- coding: utf-8 -*- import wiringpi import time import sys led1_pin = 23 led2_pin = 24 switch_pin = 17 param = sys.argv set_interval = int(param[1]) wiringpi.wiringPiSetupGpio() wiringpi.pinMode( led1_pin, 1 ) wiringpi.pinMode( led2_pin, 1 ) wiringpi.pinMode( switch_pin, 0 ) led = 0 while True: wiringpi.digitalWrite( led1_pin, 0 ) wiringpi.digitalWrite( led2_pin, 0 ) while ( wiringpi.digitalRead(switch_pin) == 1 ): print("switch on") if ( led == 0 ): wiringpi.digitalWrite( led1_pin, 1 ) wiringpi.digitalWrite( led2_pin, 0 ) led = 1 print("LED1") else: wiringpi.digitalWrite( led1_pin, 0 ) wiringpi.digitalWrite( led2_pin, 1 ) led = 0 print("LED2") print(set_interval) time.sleep(set_interval)
光りました!
ブレッドボードの切れ目で接続してしまって、光らないうーん。。。というので20分くらい悩みましたが、なんとか行きましたw
3年以上前の記事ですが、2019年現在でも問題なく動かすことが出来ました。
終わりに
参考本に紹介されていた扇風機を動かすというやつがやりたかったのですが、初心者キットにはプロペラが入ってなかったので、なにか代替(モーターを使うなにか)で出来ないかを検討中です。
それは次回の記事で。
現場からは以上です。