7segduino真似てみる その22012/12/02 21:56

7segduinoだけど、ネットで調べてみるとカソードコモンでもライブラリは対応してるみたい。
  mySseg.setKcommon();
と宣言してやれば、問題なく動いてくれるようだ。

とりあえずブレッドボードで試作してみよう。
7segduinoのサイトを見ながら、時間かかりながらも完成。

7segduinoのライブラリの中に入っているサンプルスケッチ
「hello_7seg_Kcommon.pde」を書き込む。
これはカソードコモン用のスケッチで、7セグLEDに「HELLo 7SEG.」とスクロール表示させる。
起動直後「HE」とだけ表示されて消えた。失敗か?

配線チェックしても問題ないので、もう一度起動してみた。
再度「HE」とだけ表示されて消えたけど、ちょっと待ったら「HELLo 7SEG.」とスクロール表示された。
起動直後はそうなるみたい。

って事で基盤に組み立て開始。
数時間かかりながらもなんとか完成した。

7SegクローンF

7SegクローンB

7セグLEDの左にある6+2のピンソケットは、Analog1~5、Digital5、VCC、GNDに接続されている。
その他の入出力ピンは、すべて7セグLEDの表示用で消費。

とりあえず照度センサーのAMS302をA3ピンに接続して、照度を測ってみた。
下記はスケッチ

#include <Sseg.h>
Sseg mySseg = Sseg(4, 8, 11, 13, 14, 2, 10, 12, 3, 6, 7, 9);

int voutPin = 3; 

int lx = 0;
void setup()
{
  mySseg.setKcommon();
  mySseg.begin();
}

void loop()
{
  long sumreading = 0;
  
  // R1の電圧を10回取得
  for (int i=1; i <= 10; i++){
    int reading = analogRead(voutPin);
    sumreading = sumreading + (long)reading;
    
    // 7セグLEDに表示
    mySseg.writeNum(lx);
    mySseg.updateWithDelay(100);
  }
  // AD値をmVに変換( *5000/20 /1024)
  float voltage = ((long)sumreading * 500) / 1024;

  // 電圧から電流を求める I=E/R (R=1000)
  float microamp = (voltage * 1000) / 1000;

  // 電流をlxに変換
  float lxf = microamp / (470 / 100);

  lx = (int)lxf;
}

実は7segduinoのサンプルスケッチと、ネットで拾ったものを融合しただけ。

照度測定

照度に変換する式は調整する必要があるだろう。
それにしてもLEDが明るすぎ。
前面にフィルターでも貼るかな。