Raspberry Pi 3でpythonを使い「7セグメントLED」に出力する!

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のデータベースマイグレーション