初歩の電子工作とデジカメの日記

電子工作備忘録とデジカメで撮影した写真のブログです。

Arduino備忘録 15 (2桁 7セグメントLED専用基板製作)

2016-08-11 10:31:51 | Arduino Uno
7セグメントLEDを使う電子工作では、それが何桁であろうとArduinoと接続するためにはジャンパ線を数多く必要とするので、ブレッドボード上ではジャンパ線が錯綜して正にスパゲッティ状態になってしまう。
ジャンパ線の接続を楽にするのと見栄えを少しでも良くするために前回の「1桁7セグLED」の時に専用基板を製作してうまく仕上がったので今回は「2桁7セグLED」の専用基板を製作した


実体配線図の作成
Photoshop Elementsを使用。ユニバーサル基板はいわゆるCタイプサイズ(72mm x 47mm)として作図
抵抗器はハンダ付け箇所の減少になる集合抵抗を使用した。
基板上は部品の「2桁7セグLED」と「集合抵抗器」そして「Arduino」と接続するための「ピンソケット 1 x 8」だけのすっきりした部品面になる



完成した「2桁7セグLED」専用基板の部品面



基板のハンダ面。リード線はすべて「錫メッキ線」を使ったので交差する部分には絶縁のため「収縮チューブ」を通した



基板と「Arduino」の結線
ジャンパ線は8連のフラットケーブルを使ったのでより一層基板上はすっきりしている
基板上部の2本のジャンパ線は桁を表示する「Arduino」11pin , 13pinと繋がっている。



以前のスケッチを使用し、「Arduino」への書き込みが完了すると表示面にはっきり、くっきりと数字が映し出された(スモーク加工のプラ板も使用している)。


Arduino備忘録 14 (1桁 7セグメントLEDでカウントアップ)

2016-08-06 23:28:22 | Arduino Uno
7セグメントLEDを使った電子工作は前回2桁7セグLEDを使った工作をしました。順番が逆になっていまうのですが今回は1桁7セグメントLEDを使う電子工作を復習しました。


使用したLEDは買い置きしてあった型番「MAN4640A526G」の1桁7セグメントLEDです。多分町田の「サトー電気」で買った部品でしょう
カソードコモンで10本のピンが文字の両側にあるので、これを横に並べて2桁の7セグLEDとして工作するのは難しい工作になってしまいそうだ
またピンは規則的には並んでいないので接続するピン番号を間違え易いので注意が必要だ



回路図作成には「BSCH3V」ソフトを使用。また図面左上部の「7セグLED」のパーツ図面はソフト「LCO」を使っての自作です
実際の回路作成はブレッドボードでも良いのですが、ジャンパ線がスパゲッティ状態になってしまった前回の経験を踏まえ、1桁でもあるのでユニバーサル基板を使っハンダ付けの配線工作をした



完成基板の部品面
より線のジャンプワイヤーが1本もなくすっきり仕上がった



ハンダ面は技術の未熟さもあってすっきりとはなっていないが、ジャンパ線の交差状態を見ると2桁7セグLED配線もハンダ付け工作でできるかな



完成した7セグ基板と「Arduino Uno」を結線し、通電すると数字が表示されるが、昼間は特に数字が今一くっきりとはなっていないので急遽、アクリル板をカットし、表示部分を覆ってみると数字がはっきり見えた



/* 1桁7セグメントLED表示器(MAN4640A526G)使用
* 1桁のみ0-9へカウントを繰り返すスケッチ
* 配列[ ]を利用する
* 新しい関数・・・n,i,digits,display_number
*/
const int anode_pins[] = {2,3,4,5,6,7,8,}; //アノードピンを配列に格納する
const int cathode_pin = 11; // カソードに接続するArduinoのピン
const int number_of_anode_pins = sizeof(anode_pins) / sizeof(anode_pins[0]); // 文字数を少なく
// 数字と表示させるセグメントの関係
const int digits[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00100111, // 7
0b01111111, // 8
0b01101111, // 9
};

// 数字(n)を表示する
void display_number (int n) {
for (int i = 0; i


1桁 7セグメントLEDでカウントアップ


Arduino備忘録 13 (2桁7セグLEDでカウントアップ)

2016-08-04 10:30:16 | Arduino Uno
前回、温度センサから室温を読み込んでシリアルモニターに表示するスケッチを作成、実行しました。
今回は読み込んだデータを7セグメントLEDに表示する方法を学習、実行します。まずは7セグメントLEDに数字を表示するスケッチの学習です


回路図作成ソフト「BSCH3V」で作図。
図面右部分のパーツ「2桁7セグLED」はBSCH3V」用の部品作成ソフト「LCo」を使って自分で作成しました。
「Arduino」と「2桁7セグLED」の接続ピンの番号が順番通りにはなっていませんのでご注意です。



使用した「2桁7セグLED」
画像の部品はアノードコモンですが、使用したのはカソードコモンの部品で、外観は全く同じです。



回路図通りに「Arduino」と「2桁7セグLED」を結線しましたが、まるでスパゲティ状態ですね。



Arduino IDE のスケッチで、こちらの記事がお手本です
//
// 2桁の7セグメントLEDでカウントアップするスケッチ
//
int _cnt = 0; //
int _number = 0; //
boolean _flg = false;

void setup(){
Serial.begin(9600);
for (int i=2; i<=8; i++){ //2~8番ピン デジタル出力へセット
pinMode(i,OUTPUT);
}
pinMode(13,OUTPUT); // カソードコモンピン
pinMode(11,OUTPUT); // カソードコモンピン
}
boolean Num_Array[10][7]={ //LEDレイアウトを定義
{1,1,1,1,0,1,1}, //0
{0,0,1,1,0,0,0}, //1
{1,1,0,1,1,0,1}, //2
{0,1,1,1,1,0,1}, //3
{0,0,1,1,1,1,0}, //4
{0,1,1,0,1,1,1}, //5
{1,1,1,0,1,1,1}, //6
{0,0,1,1,0,1,1}, //7
{1,1,1,1,1,1,1}, //8
{0,1,1,1,1,1,1} //9
};

void NumPrint(int Number){ //LED表示関数を定義
for (int w=0; w<=7; w++){
digitalWrite(w+2,-Num_Array[Number][w]);
}
}

int NumParse(int Number,int s){ //2桁をそれぞれの桁で分解する関数
if(s == 1){
return Number % 10; //10で割ったあまり = 一桁目の値
}
else if(s == 2){
return Number / 10; //10で割った値を整数にする = 二桁目の値
}
return 0;
}
void loop(){
if(_number >= 100){
_number = 0;
}
//flg変数をtrue / falseを切り替えることで11番13番ピンの出力を交互に切り替える
if(_flg){
digitalWrite(11,LOW);
digitalWrite(13,HIGH);
_flg = false;
NumPrint(NumParse(_number,1)); //1桁目の表示
}
else{
digitalWrite(11,HIGH);
digitalWrite(13,LOW);
_flg = true;
NumPrint(NumParse(_number,2)); //2桁目の表示
}
//100まで行ったら表示する数値(_number)を1つ足す(実質delayの10×100で1秒に1カウント)
if(_cnt >= 100){
_number++;
_cnt = 0;
Serial.print("NUMBER:");
Serial.println(_number);
}
_cnt++;
delay(10);
}


2桁7セグLEDでカウントアップ