もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

スイッチでラズパイを遊んでみる

はじめに

こんにちは。

この記事は Kojirock1一人 Advent Calendar 2019の4日目の記事です。

adventar.org

今回も参考本を見ながら触っていきます。

前回は定番のLチカまで行きました。

今回はスイッチで遊んでみます。

やってみた

参考本にはトグルスイッチ・スライドスイッチ・DIPスイッチなどいろいろな種類が紹介されていましたが、自分が買った初心者キッドに状態を切り替えるスライドスイッチと、状態を戻すタクトスイッチが入っていたので、今回はこれを使ってみました。

f:id:kojirooooocks:20191113225442j:plain

f:id:kojirooooocks:20191113225459j:plain

まずはタクトスイッチからです。

タクトスイッチ

参考本のスクリプトをそのまま使用します。

#! /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 が表示されます。

f:id:kojirooooocks:20191113232513g:plain

参考本では更にスクリプトを編集して、タクトスイッチを押した回数をカウントするという試みもありましたが、それはプログラム改修のはなしなので今回は飛ばしました。

スライドスイッチ

参考本ではタクトスイッチの説明の後、扇風機を制御するというチャプターに入ってしまうのですが、スライドスイッチで遊べてもないし、扇風機も初心者セットに入ってないので、とりあえずスライドスイッチを扱っているような初心者向けのサイトを探すと、以下の記事が見つかったので、こちらの内容を試してみました。

qiita.com

こちらの記事では WiringPi なるライブラリを使っているようなので、インストールしておきます。

$ pip install wiringpi

これでスクリプトも問題なく動きます。

配線は記事と同様に繋いでみました。

f:id:kojirooooocks:20191114005927j:plain f:id:kojirooooocks:20191114005938j:plain f:id:kojirooooocks:20191114005948j:plain

スクリプトも同様のものを使わせてもらっています。

# -*- 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)

f:id:kojirooooocks:20191114010207g:plain

光りました!

ブレッドボードの切れ目で接続してしまって、光らないうーん。。。というので20分くらい悩みましたが、なんとか行きましたw

3年以上前の記事ですが、2019年現在でも問題なく動かすことが出来ました。

終わりに

参考本に紹介されていた扇風機を動かすというやつがやりたかったのですが、初心者キットにはプロペラが入ってなかったので、なにか代替(モーターを使うなにか)で出来ないかを検討中です。

それは次回の記事で。

現場からは以上です。