找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1649|回复: 0
收起左侧

速度太快 ? 訊號 ? 請大大們幫幫我 ...

[复制链接]
发表于 2013-2-8 16:54:03 | 显示全部楼层 |阅读模式
廢話不多說了 先看影片的狀況吧

http://v.youku.com/v_show/id_XNTEyNTQzNDI0.html

影片中的東西是真空管 我的目的是用pi 當成處理器 做出一個時鐘
影片中是秒的個位數字
但是問題發生了 他都會先從第一支燈管開始掃到我要的那支燈管(最後一支)

真空管上有兩個IC 分別是 HEF4028和 K155ID1 做驅動和解碼的動作
我是用php寫的

程式碼如下
  1. #!/usr/bin/php

  2. <?php

  3.         function light($tube,$num)
  4.         {

  5.         require_once("GPIO.php");

  6.         $gpio = new GPIO();

  7.         $gpio->setup(4,"out");   //number
  8.         $gpio->setup(17,"out");
  9.         $gpio->setup(22,"out");
  10.         $gpio->setup(10,"out");

  11.         $gpio->setup(14,"out");  //tube
  12.         $gpio->setup(15,"out");
  13.         $gpio->setup(18,"out");
  14.         $gpio->setup(23,"out");

  15.         $gpio->setup(9,"out");   //dot
  16.         $gpio->setup(25,"out");


  17.         $t=decbin($tube);
  18.         $lent=strlen($t);

  19.          if ($lent==1)
  20.          {
  21.          $td=0;
  22.          $tc=0;
  23.          $tb=0;
  24.          $ta=$t;
  25.          }

  26.          else if($lent==2)
  27.          {
  28.          $td=0;
  29.          $tc=0;
  30.          $tb=substr($t,0,1);
  31.          $ta=substr($t,1,1);
  32.          }
  33.          else if($lent==3)
  34.          {
  35.          $td=0;
  36.          $tc=substr($t,0,1);
  37.          $tb=substr($t,1,1);
  38.          $ta=substr($t,2,1);
  39.          }


  40.         $n=decbin($num);
  41.         $lenn=strlen($n);

  42.          if ($lenn==1)
  43.          {
  44.          $nd=0;
  45.          $nc=0;
  46.          $nb=0;
  47.          $na=$n;
  48.          }
  49.          else if($lenn==2)
  50.          {
  51.          $nd=0;
  52.          $nc=0;
  53.          $nb=substr($n,0,1);
  54.          $na=substr($n,1,1);
  55.          }
  56.          else if($lenn==3)
  57.          {
  58.          $nd=0;
  59.          $nc=substr($n,0,1);
  60.          $nb=substr($n,1,1);
  61.          $na=substr($n,2,1);
  62.          }
  63.          else if($lenn==4)
  64.          {
  65.          $nd=substr($n,0,1);
  66.          $nc=substr($n,1,1);
  67.          $nb=substr($n,2,1);
  68.          $na=substr($n,3,1);



  69.         $gpio->output(4,$nd);
  70.         $gpio->output(17,$nc);
  71.         $gpio->output(22,$nb);
  72.         $gpio->output(10,$na);

  73.         $gpio->output(14,0);
  74.         $gpio->output(15,1);
  75.         $gpio->output(18,1);
  76.         $gpio->output(23,1);


  77.         $gpio->unexportALL();


  78.         echo $td.$tc.$tb.$ta."==".$nd.$nc.$nb.$na."\n";

  79.         }



  80. $i=1;
  81. while($i>0)
  82. {
  83. echo "!!".date("s")."!!"."\n";

  84. $t=7;
  85. $n=substr(date("s"),1,1);
  86. echo "--".$t." ".$n."--"."\n";
  87. light($t,$n);

  88. usleep(500000);

  89. }


  90. ?>
复制代码
usleep是為了清楚看到上述的那種狀況
因為目前我只先做秒的個位 所以程式中省略的部分我就不貼上了
echo是debug用的 可以無視
gpio4,17,22,10是甚麼數字
      14,15,18,23是第幾根數字管

麻煩各位大大們了 看看有沒有甚麼辦法可解決
若有甚麼不了解的部分 麻煩大大們提出
替小弟我解決這個問題吧!!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则