ESP8266 (ESP-WROOM-02) で7セグメントLEDを制御する
概要
ESP8266(ESP-WROOM-02 以下 WROOM02) を使って、7セグメント 4ディジット のLEDを制御する。
はじめに
WROOM02 は Wi-Fi 通信機能が内蔵された Arduino (として使える IC) です。
※センサーを使うには、以下参照。
http://qiita.com/exabugs/items/9ca4093813db71278b39
今回は、7セグメント 4ディジット (5461AS カソード・コモン) の LED を制御します。
回路図
Eagle プロジェクト全体はこちらの Github にアップしています。
https://github.com/exabugs/eagle7seg4digits
実際の回路図は以下。
1 LED あたり 20mA 程度なので、アノード側はソースドライバを使わなくてもいけると思います。
なので、カソード側だけ、シンクドライバ(TD62083APG)を使っています。
[注意]
- WROOM02 は 3.3V 駆動です。電源回路は別途足してください。
- USB-シリアル変換 のインタフェースは、回路図から外していますので、TXD/RXD, GND に適切に接続してください。
スケッチ
スケッチは以下になります。
- 10000 からカウントダウンします。
- 1ディジットを 4msec でダイナミック点灯しています。これより長いとちらつきました。
#include "Ticker.h"
Ticker ticker;
Ticker ticker2;
#define SCK 14 // CLK クロック信号出力ピン
#define RCK 12 // LOAD ラッチ動作出力ピン
#define SI 13 // MOSI - DI データ信号出力ピン
#define CLR 15 // クリア
const int segments[] = {
// HGFEDCBA
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00100111, // 7
0b01111111, // 8
0b01101111, // 9
};
const int digits[] = {
// HGFEDCBA
0b00000001, // 0
0b00000010, // 1
0b00000100, // 2
0b00001000, // 3
};
void out1(int x, int d) {
digitalWrite(CLR, LOW) ; // Clear
digitalWrite(CLR, HIGH) ;
digitalWrite(RCK, LOW) ;
shiftOut(SI, SCK, MSBFIRST, digits[d]);
shiftOut(SI, SCK, MSBFIRST, segments[x]);
digitalWrite(RCK, HIGH) ; // ラッチ信号を出す
}
void out4(int val) {
static int p = 0;
p = ++p % 4;
int x[4];
for (int i = 0; i < 4; i++) {
x[i] = val % 10;
val = val / 10;
}
out1(x[p], p);
}
void setup() {
Serial.begin(115200);
Serial.print("\n");
pinMode(SCK, OUTPUT) ;
pinMode(RCK, OUTPUT) ;
pinMode(SI, OUTPUT) ;
pinMode(CLR, OUTPUT) ;
delay(3000) ; // 3S後開始
Serial.print("Start\n");
ticker.attach_ms(1000, timer);
ticker2.attach_ms(4, loop2);
}
int cnt = 10000;
void loop() {
}
void loop2() {
out4(cnt);
}
void timer() {
cnt--;
Serial.print(cnt);
Serial.print("\n");
}
Arduino スケッチ 全体はこちらの Github から。
https://github.com/exabugs/sketch7seg4digits
制作
実際に作ってみると、こんな感じです。
まとめ
ESP8266(ESP-WROOM-02 以下 WROOM02) を使って、7セグメント 4ディジット のLEDを制御しました。
ダイナミック点灯の周期を、ちらつかせずに長くするには、何か手法がありますかね?
Author And Source
この問題について(ESP8266 (ESP-WROOM-02) で7セグメントLEDを制御する), 我々は、より多くの情報をここで見つけました https://qiita.com/exabugs/items/d53c5ad1bf7487af5024著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .