3641BH 4 桁 7 セグメントLED ディスプレイ
概要
このレッスンでは、7セグに1234とダイナミック点灯で表示する
材料
Arduino Uno x 1
ブレッドボード x 1
3641BH コモンアノード(陽極) x 1
220Ω 可変抵抗 x 8
デュポンワイヤー (数本)
製品説明
セグメントは発光ダイオードであるため、焼損を防ぐために直列抵抗が必要です。
デジタルディスプレイは、計器、時計、ディスプレイなどで広く使用されています。
ピンレイアウト
技術的パラメータ
タイプ:コモンアノード(陽極)
サイズ:30mm x 14mm x 7.2mm(幅 x .縦 x ピンを除いた奥行き)
発光色:レッド
デバイスレイアウトと回路図
配線図
わかりやすいようにブレッドボードを2つ使ってますが、一つにまとめても大丈夫です。
サンプルコード
自分がわかりやすいようにコメント多めです。解釈が間違ってる可能性もあるので、他のサイトも参照してくださいね。(汗)
/*
*
* 3641BH(7セグに1234とダイナミック点灯で表示する)
* コモンアノード(陽極)の7セグ(+側の電源がコモン(共通) セグをLOWで点灯)
* ※"コモンアノード(陽極)"と"コモンアソード(陰極)"の2種類7セグがあるので注意
* https://amzn.to/32NxndV
*/
// ———————— ヘッダー開始 ————————
// ————————コモンアソードのインターフェースをPin割当 ————————
int a = 1; // a = 11pin(7Seg の 11pin) = 1
int b = 2; // b = 7pin(7Seg の 7pin) = 2
int c = 3; // c = 4pin(7Seg の 4pin) = 3
int d = 4; // d = 2pin(7Seg の 2pin) = 4
int e = 5; // e = 1pin(7Seg の 1pin) = 5
int f = 6; // f = 10pin(7Seg の 10pin) = 6
int g = 7; // g = 5pin(7Seg の 5pin) = 7
int dp = 8; // dp(.) = 3pin(7Seg の 3pin) = 8
// ———————— コモンアノードのインターフェースをPin割当 ————————
int d4 = 9; // d4(デジタル4桁目) = 6pin(7Seg の 6pin) = 9
int d3 = 10; // d3(デジタル3桁目) = 8pin(7Seg の 8pin) = 10
int d2 = 11; // d2(デジタル2桁目) = 9pin(7Seg の 9pin) = 11
int d1 = 12; // d1(デジタル1桁目) = 12pin(7Seg の 12pin) = 12
// ———————— ヘッダー終了 ————————
// ———————— 最初に一度だけ実行されるコード 開始 ————————
void setup()
{
pinMode(d1, OUTPUT); // d1 pinを出力モードに設定する
pinMode(d2, OUTPUT); // d2 pinを出力モードに設定する
pinMode(d3, OUTPUT); // d3 pinを出力モードに設定する
pinMode(d4, OUTPUT); // d4 pinを出力モードに設定する
pinMode(a, OUTPUT); // a pinを出力モードに設定する
pinMode(b, OUTPUT); // b pinを出力モードに設定する
pinMode(c, OUTPUT); // c pinを出力モードに設定する
pinMode(d, OUTPUT); // d pinを出力モードに設定する
pinMode(e, OUTPUT); // e pinを出力モードに設定する
pinMode(f, OUTPUT); // f pinを出力モードに設定する
pinMode(g, OUTPUT); // g pinを出力モードに設定する
pinMode(dp, OUTPUT); // dp pinを出力モードに設定する
}
// ———————— 最初に一度だけ実行されるコード 終了 ————————
// ———————— 繰り返し実行されるコード 開始 ————————
void loop()
{
Display(1, 1); // Display(左から1桁目に, 1を入力) ここの値を変えると1行目の7セグに表示される数字が変わります
Display(2, 2); // Display(左から2桁目に, 2を入力) ここの値を変えると2行目の7セグに表示される数字が変わります
Display(3, 3); // Display(左から3桁目に, 3を入力) ここの値を変えると3行目の7セグに表示される数字が変わります
Display(4, 4); // Display(左から4桁目に, 4を入力) ここの値を変えると4行目の7セグに表示される数字が変わります
}
void pickdigital(unsigned char n) // pickdigitalは、void Display(n,n)の1つ目の n
{
switch (n) // (n)で指定された変数と一致する数値をcaseのセグパターンで出力
{
case 1: // 1が入力されたら
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);
break; // breakしてswitch (n) のループから抜けて void pickNumber(unsigned char n)へ移動
case 2: // 2が入力されたら
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);
break; // breakしてswitch (n) のループから抜けて void pickNumber(unsigned char n)へ移動
case 3: // 3が入力されたら
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
break; // breakしてswitch (n) のループから抜けて void pickNumber(unsigned char n)へ移動
case 4: // 4が入力されたら
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
break; // breakしてswitch (n) のループから抜けて void pickNumber(unsigned char n)へ移動
default: // どのcaseにも一致しなかったら
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);
break; // breakしてswitch (n) のループから抜けて void pickNumber(unsigned char n)へ移動
}
}
void pickNumber(unsigned char n) // pickdigitalは、void Display(n,n)の2つ目の n
{
switch (n) // (n)で指定された変数と一致する Num_*() の下の方の記述で作った、フォントパターンを読み取って "pickNumberへ(n)" と出力
{
case 0: // 0が入力されたら
Num_0(); // Num_0() のフォントパターンを読み取って "pickNumberへ(0)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 1: // 1が入力されたら
Num_1(); // Num_1() のフォントパターンを読み取って "pickNumberへ(1)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 2: // 2が入力されたら
Num_2(); // Num_2() のフォントパターンを読み取って "pickNumberへ(2)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 3: // 3が入力されたら
Num_3(); // Num_3() のフォントパターンを読み取って "pickNumberへ(3)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 4: // 4が入力されたら
Num_4(); // Num_4() のフォントパターンを読み取って "pickNumberへ(4)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 5: // 5が入力されたら
Num_5(); // Num_5() のフォントパターンを読み取って "pickNumberへ(5)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 6: // 6が入力されたら
Num_6(); // Num_6() のフォントパターンを読み取って "pickNumberへ(6)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 7: // 7が入力されたら
Num_7(); // Num_7() のフォントパターンを読み取って "pickNumberへ(7)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 8: // 8が入力されたら
Num_8(); // Num_8() のフォントパターンを読み取って "pickNumberへ(8)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
case 9: // 9が入力されたら
Num_9(); // Num_9() のフォントパターンを読み取って "pickNumberへ(9)" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
default: // どのcaseにも一致しなかったら
Clear(); // Clear のフォントパターンを読み取って "Clear" と出力
break; // breakしてループから抜けて 最後の行の void Display(unsigned char x, unsigned char Number)へ移動
}
}
// ———————— 7セグのどのセグを光らせて文字にするかを定義して 0~9 と Clear のフォントパターンを設定 LOWで点灯 HIGEで消灯 ————————
/*
* a
* -----------
* | |
* f | | b
* | g |
* |---------|
* | |
* e | | c
* | d |
* |---------| ・dp
*/
void Num_0() // 0 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp, HIGH);
}
void Num_1() // 1 に見えるようにパターンを設定
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, HIGH);
}
void Num_2() // 2 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Num_3() // 3 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Num_4() // 4 に見えるようにパターンを設定
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Num_5() // 5 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Num_6() // 6 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Num_7() // 7 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, HIGH);
}
void Num_8() // 8 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Num_9() // 9 に見えるようにパターンを設定
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, HIGH);
}
void Clear() // 画面をクリアする すべてのセグを消す
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, HIGH);
}
void Display(unsigned char x, unsigned char n) // このプログラムでやっと7セグに表示ができます。 xが7セグの何桁目かで、nが数値であることを示します
{
pickdigital(x); // 7セグにどの桁に表示するか、決まる→Display(桁)
pickNumber(n); // 上で決まった桁に7セグに数字を送信して表示する→Display(数字)
delay(1); // 一文字の数字が表示される時間を設定する 1000ミリ秒 500ミリ秒 100ミリ秒 10ミリ秒 1ミリ秒 と切り替えて7セグの表示の仕方を観察してみよう!
Clear(); // 最後にClearコマンドを送信して終了
}
// ———————— 繰り返し実行されるコードがここで終了して一番上のloopに戻る(ここまでのプログラムでやっと一文字が表示できる。これを繰り返して2桁目、3桁目と切り替わっていく) ————————
0 件のコメント :
コメントを投稿