More than 1 year has passed since last update.

はじめに

「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!

今回は、7セグメントLEDに数字(1桁)を出力します!
アナログの温度センサーとA/Dコンバーターを利用した温度センサーです!
ラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 15 数字を表示できるを参考にしています。

手順

  1. 配線
  2. プログラム 7segment.py
  3. プログラムを動かす

1. 配線

配線図は、ラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 15 数字を表示できるそのままです。

回路の写真を参考までに、こんな感じというイメージになれば
Raspberry Pi 3でpythonを使い「7セグメントLED」に出力する!回路.jpg

動画にもしました
動画解説クリック→

テキスト版
ラズパイ側から

  • ラズパイ 12番ピン - 7セグメントドライバー 7 D0
  • ラズパイ 23番ピン - 7セグメントドライバー 1 D1
  • ラズパイ 24番ピン - 7セグメントドライバー 2 D2
  • ラズパイ 25番ピン - 7セグメントドライバー 3 D3
  • ラズパイ 6番ピン(GND) - 7セグメントドライバー 5 LE
  • ラズパイ 6番ピン(GND) - 7セグメントドライバー 8 GND
  • ラズパイ 6番ピン(GND) - 7セグメントLED 3 GND
  • ラズパイ 6番ピン(GND) - 電池マイナス側

7セグメントドライバー側

  • 7セグメントドライバー 3 LT - 電池(3V)プラス側
  • 7セグメントドライバー 4 BL - 電池(3V)プラス側
  • 7セグメントドライバー 16 Vcc - 電池(3V)プラス側
  • 7セグメントドライバー 13 a - 抵抗(150Ω) - 7セグメントLED 7 A
  • 7セグメントドライバー 12 b - 抵抗(150Ω) - 7セグメントLED 6 B
  • 7セグメントドライバー 11 c - 抵抗(150Ω) - 7セグメントLED 4 C
  • 7セグメントドライバー 10 d - 抵抗(150Ω) - 7セグメントLED 2 D
  • 7セグメントドライバー 9 e - 抵抗(150Ω) - 7セグメントLED 1 E
  • 7セグメントドライバー 15 f - 抵抗(150Ω) - 7セグメントLED 9 F
  • 7セグメントドライバー 14 g - 抵抗(150Ω) - 7セグメントLED 10 G

2. プログラム 7segment.py

プログラムもラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 15 数字を表示できるを参考にしています。

GitHubにソースをアップしているので、お好きにお使いください。

gitでcloneする
$ git clone https://github.com/RyosukeKamei/raspberrypi3.git
7segment.py
# GPIOを制御するライブラリ
import wiringpi
# タイマーのライブラリ
import time
# 引数取得
import sys

# 74HC5411(7セグメントドライバー)に接続しているGPIO端子番号を指定
d0_pin = 18
d1_pin = 23
d2_pin = 24
d3_pin = 25

# 各端子を出力モードにする
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode( d0_pin, 1 )
wiringpi.pinMode( d1_pin, 1 )
wiringpi.pinMode( d2_pin, 1 )
wiringpi.pinMode( d3_pin, 1 )

# 初期化 すべて0にする
wiringpi.digitalWrite( d0_pin, 0 )
wiringpi.digitalWrite( d1_pin, 0 )
wiringpi.digitalWrite( d2_pin, 0 )
wiringpi.digitalWrite( d3_pin, 0 )

# 引数取得
param = sys.argv
set_number = int(param[1])

if( set_number >= 0 and set_number < 10):
    # 1ビット目のANDをとる
    wiringpi.digitalWrite( d0_pin, set_number & 0x01 )

    # 2ビット目のANDをとる
    wiringpi.digitalWrite( d1_pin, set_number & 0x02 )

    # 3ビット目のANDをとる
    wiringpi.digitalWrite( d2_pin, set_number & 0x04 )

    # 4ビット目のANDをとる
    wiringpi.digitalWrite( d3_pin, set_number & 0x08 )
else:
    print("エラー : 引数は0から9までです。")

3. プログラムを動かす

動かしている様子を動画に収めました。
動画解説クリック→

温度センサーを起動
$ sudo python3 temperature_sensor.py

サイトマップ

Raspberry Pi 3 (ラズパイ)セットアップ

Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作

Raspberry Pi 3 にDockerを乗せてPython+MySQL環境を構築!

RaspberryPi3(ラズパイ)にDockerをインストール
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【簡単構築編】
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【試行錯誤編】

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう

Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング
Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)
Raspberry Pi 3でスイッチの状態を検出する
Raspberry Pi 3でpythonを使いサーボモータを動かす
Raspberry Pi 3でpythonを使いモータードライバーを使いモータを制御する!
Raspberry Pi 3でpythonを使いスライドスイッチを検出する!
Raspberry Pi 3でpythonを使い磁石スイッチを検出する!
Raspberry Pi 3でpythonを使い温度を検出する!
Raspberry Pi 3でpythonを使いブザーを鳴らす!
Raspberry Pi 3でpythonを使いA/Dコンバーターでアナログ信号を検出する!
Raspberry Pi 3でpythonを使い「明るさ」を検出する!
Raspberry Pi 3でpythonを使い「温度(A/Dコンバーターを利用)」を検出する!
Raspberry Pi 3でpythonを使い「7セグメントLED」に出力する!

テスト駆動開発を重点においた規則

コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

Docker+PythonでWebアプリケーション開発

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!

開発しやすい環境構築(Docker+PHP)

Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション