ページ

ラベル ブレッドボード の投稿を表示しています。 すべての投稿を表示
ラベル ブレッドボード の投稿を表示しています。 すべての投稿を表示

2019年6月16日日曜日

2桁7セグメントLEDを使った超音波距離計の製作

どうもみなさん。こんにちは。
久しぶりの更新ですがさっそく本題に入ります。
今日は2桁7セグメントLEDで距離を表示させる超音波距離計を製作します。

今回使った部品です。
・2桁7セグメントLED  (ELD-511SRWA)
・Arduino Nano (互換品)
・超音波センサ (HC-SR04)
・51Ω抵抗(7本)
※型番をクリックするとデータシートへ飛びます



回路図です。

こんな感じです。
ではプログラムへ行きます。

const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;
const int TRG = 12;
const int ECH = 13;

void setup() {
pinMode(TRG, OUTPUT);   //超音波センサトリガー
pinMode(ECH, INPUT);    //超音波センサエコー

/*
   a1              a2 
 f1  b1       f2  b2
   g1              g2
 e1  c1        e2  c2
    d1   dp1     d2  dp2

7seg対応ピン
a1=16, a2=11
b1=15, b2=10
c1=3, c2=8
d1=2, d2=6
e1=1, e2=5
f1=18, f2=12
g1=17, g2=7
dp1=4, dp2=9
cathode1=14, cathode2=13
*/

  pinMode(A,OUTPUT);
  pinMode(B,OUTPUT);
  pinMode(C,OUTPUT);
  pinMode(D,OUTPUT);
  pinMode(E,OUTPUT);
  pinMode(F,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);

Serial.begin(9600);
}

//光らせる部分を指定
void ledSeg(int val) {
  switch(val) {
    case 0:
      digitalWrite(A,1);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,1);
      digitalWrite(E,1);
      digitalWrite(F,1);
      digitalWrite(G,0);
    break;

    case 1:
      digitalWrite(A,0);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,0);
      digitalWrite(E,0);
      digitalWrite(F,0);
      digitalWrite(G,0);
    break;

    case 2:
      digitalWrite(A,1);
      digitalWrite(B,1);
      digitalWrite(C,0);
      digitalWrite(D,1);
      digitalWrite(E,1);
      digitalWrite(F,0);
      digitalWrite(G,1);
    break;

    case 3:
      digitalWrite(A,1);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,1);
      digitalWrite(E,0);
      digitalWrite(F,0);
      digitalWrite(G,1);
    break;

    case 4:
      digitalWrite(A,0);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,0);
      digitalWrite(E,0);
      digitalWrite(F,1);
      digitalWrite(G,1);
    break;

    case 5:
      digitalWrite(A,1);
      digitalWrite(B,0);
      digitalWrite(C,1);
      digitalWrite(D,1);
      digitalWrite(E,0);
      digitalWrite(F,1);
      digitalWrite(G,1);
    break;

    case 6:
      digitalWrite(A,1);
      digitalWrite(B,0);
      digitalWrite(C,1);
      digitalWrite(D,1);
      digitalWrite(E,1);
      digitalWrite(F,1);
      digitalWrite(G,1);
    break;

    case 7:
      digitalWrite(A,1);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,0);
      digitalWrite(E,0);
      digitalWrite(F,1);
      digitalWrite(G,0);
    break;

    case 8:
      digitalWrite(A,1);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,1);
      digitalWrite(E,1);
      digitalWrite(F,1);
      digitalWrite(G,1);
    break;

    case 9:
      digitalWrite(A,1);
      digitalWrite(B,1);
      digitalWrite(C,1);
      digitalWrite(D,1);
      digitalWrite(E,0);
      digitalWrite(F,1);
      digitalWrite(G,1);
    break;
  }
}
//ここまで

void loop() {

//ここから超音波計 
int diff;
float dis;
digitalWrite(12, HIGH);
delayMicroseconds(10);
digitalWrite(12, LOW);
diff = pulseIn(13, HIGH);
dis = (float)diff * 0.01715;
Serial.print(dis);
Serial.println("cm");
delay(10);
//ここまで

//数字を桁で分ける
int n = dis;                 //整数変換
int n1=0,a2=0,a1=0,i,j;

for(i=0;i<=10;i++){
  n1 = n-i*10;
  if(n1>9){
    a2 = 9;           //99以上なら2桁目を9
    a1 = 9;           //99以上なら1桁目を9
  }
  else if(0<=n1 && n1<=9){
    a2 = i;                  //2桁目の数字
    for(j=0;j<=10;j++){
      if(n1 == j){
        a1 = j;              //1桁目の数字
      }
    }
  }
  else if(n1>9) a2 = 9;
}
//ここまで

//7セグカウンタ出力
  for(int k=0; k<10; k++) {
  digitalWrite(9,LOW);
  digitalWrite(10,HIGH);
  ledSeg(a2);
  delay(10);
  
  digitalWrite(9,HIGH);
  digitalWrite(10,LOW);
  ledSeg(a1);
  delay(10);
  }
//ここまで


}

プログラムの中で一応コメント書いてあるので解説は省略します、質問ある方はコメントしてください。
はい、そしてこれをArduinoへ書き込みます。




大体50cmくらいまではかなり正確に測定できています。
それ以降はたまにかなり値がぶれます。

70cm付近で250cmなど値が荒ぶっています。


100cm以上は99と表示されます。

これで、無事完成しました。
一応備忘録のつもりですので自分が見やすいように書いています。
それと写真では7セグLEDに抵抗挟んでいませんが回路図の通り抵抗挟んだ方がいいです。
一応補足でした。

では。ノシ


にほんブログ村に参加しています。

↓よかったらクリックお願いします↓

にほんブログ村 その他趣味ブログ 電子工作へ


2017年12月3日日曜日

NANDの74HC00で作るワンショット回路

こんにちは
今回は初めての論理回路実験です。

ワンショット回路はご存知ですか?
トリガー信号を入力したら一定時間だけ出力されるというものです。
なので例えば5秒入力されていても決められただけしか出力してはいけないのです。

調べてみるとタイマーICを使ってやってる方が多いようです。
そこで僕はみんなと違う方向に行きたいなと思い考えてみました。

まず回路です。
回路の説明をします。
スイッチから入力されるのがトリガー信号です。
1,2pinが0のときNOTなので3pinが1になります。
出力された信号は二つに分かれ、一つはダイオードを通りコンデンサーを充電させます。
もう一つは再びNOTで信号が反転し、6pin出力が0になります。
この時、NANDに入力されるのは13pinが0,12pinが1なので出力は1、それをNOTで反転され0になります。

ここで、1,2pinが1になったらどうなるのか。
まず、3pinが0になるのでコンデンサーの充電はストップします。
3pinが0のため、4,5pinも0、そのため6pinの出力は1になります。
コンデンサーと6pinをNANDに入力、このときコンデンサーが抵抗により放電し、その間は1です。放電し終わったら0になります。
このため、13pinは1,12pinは1が入力され、11pinは0、それを反転し、1が出力されるわけです。
コンデンサーが放電し終わると、13pinは1,12pinは0になるので11pinは0になります。
これにより、入力信号の長さにかかわらず安定した出力を行うことができます。

大体こんなところです
説明するまでもないですが。
動画作ったのでよろしければご覧ください!



この回路は多段式コイルガンで応用できます。
そのうち記事にします。
ではここらへんでノシ



↓よかったらクリックお願いします↓
にほんブログ村 その他趣味ブログ 電子工作へ

2017年1月26日木曜日

二石アンプ、原因判明

こんにちは
やっと原因が判明しました
過去記事↓
二石アンプの実験

すみません僕のミスです
2SA1015の足を勘違いしてて、エミッターとコレクター逆にしてました
とても簡単なことでしたねw
本読んでたら2SA1015出てきて、逆じゃん?!ってなりました
今度からはしっかりとしますw

まあこれで実験成功ですね
2SC1815と2SA1015の二石アンプですが、音質は書いてあるようにおもちゃですね
この音だったら100均にあってもおかしくはないです
てか部品少ないし安いので100均で売ってもいいと思うのですが

まぁ最終的にはポタアン作りたいので、ちょっと高めのトランジスターでも買ってみます

では
↓よかったらクリックお願いします↓

にほんブログ村 その他趣味ブログ 電子工作へ

2016年12月2日金曜日

二石アンプの実験

こんにちは
無事テストも終わり(7日にもう1教科)規制していた実験をしたいと思います
いやぁ・・・今週はつらかったですね
ハードスケジュールでした
さて、テスト期間中あるものを見つけました
Indigo-Illusion のblog
こちらですね
アンプICを使わずプッシュプル回路を使っています
簡単ですね
早速作りたいところですが、手持ちのNPNとPNPが1815と1015しかありません
こちらのブログではそれはおもちゃだとか書いてありますが、
どうなんでしょうかね
では早速試してみます

とりあえず組んでみました
音が鳴りません
困りましたね、またいつものパターンですよ
原因探ってもわからないのでわかったらまた更新します
いつもながらグダグダで申し訳ない
ノシ

↓よかったらクリックお願いします↓

にほんブログ村 その他趣味ブログ 電子工作へ
クリック!!

2016年11月25日金曜日

原因判明 中国産トランジスタ

わかりました
ピンの配置が違いました
2sc1815はこれに対し
2n5551はというと・・・・
こうなっていたのです
つまり、2sc1815でいう1ピンにエミッター、2ピンにベース、3ピンにコレクターが来ていたわけです
道理で動かないわけですね
そうと分かったので組み立てなおします
すると、、、
こんな感じでつきました!
ちなみに2sc1815の場合
こっちのほうがLED付いてる時間長いですよね
なんでだろう
抵抗挟んでみますか
長くなりましたね
これで使えますね
よかったよかった
ゴミにならなくて
これで安心してテストが受けれるわけですね!
では! 

↓よかったらクリックお願いします↓ 
にほんブログ村 その他趣味ブログ 電子工作へ

届いたもの part2

昨日言ってたNPNトランジスタと、アノニマスマスク届きました
トランジスタは2n5551。
試しに昨日の回路にぶっこんでみます
どうか...
はい、だめでした
なんでなんでしょうか。。
これで使えなかったら300個無駄…
原因の究明頑張ります。。
土日で頑張ります。。
データシート見てもこっちのトランジスタのほうが性能上回っております
 謎が深まるばかり

↓よかったらクリックお願いします↓
にほんブログ村 その他趣味ブログ 電子工作へ

2016年11月24日木曜日

届いたもの

中国から届きました
NPN トランジスタです
100個入り143円とかいう破格

 2n3904です
こちら→2n3904
同時に2n5551を200個頼んでますが時間かかってるようですね
とりあえず性能試し、力試しと行きますか
こちらはこの前テストから逃れるために作ったいたって普通の回路
スイッチを押すと一定時間LEDを光らせます
こいつの性能を見せてもらいましょう
尚、PNPは2sa1015を使っています

さてと、ブレッドボード上で組み立てますか...

組み立てました
困ったことにLED様が消えてくれません
どうしたら…
…ふと、2sc1815に変えてみても同じか?
と思ってやってみました

う ご い た 。
あれれ、あれれれれれれ
なぜよ
理解不能、迷宮入り、さよなら
テスト終わってから調べてみます
すべてテスト明けに置いといて後で後悔する奴w
明日は保険と専門科目のテストがあります
では

↓よかったらクリックお願いします↓
にほんブログ村 その他趣味ブログ 電子工作へ

2016年11月17日木曜日

アンプ part1

どうもこんばんは
今日はアンプを作ってみました
part1ってありますがpart2はない気がしますw
今回使ったICはHT82V739という低電圧で駆動し、1.2Wの出力ができるという優れものです
秋月で二つ入り100円です
回路図はデータシートに乗ってるものを使用、
これですね
ブレッドボード上で配線しました
よく見ると0Ω抵抗が見えますw
0Ω抵抗はブレッドボードで結構使えます
おすすめですw
ではいよいよ来週にテストが控えてますのでこれで
ノシ