jacky770123 发表于 2013-2-8 16:54:03

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

廢話不多說了 先看影片的狀況吧

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

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

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

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

<?php

      function light($tube,$num)
      {

      require_once("GPIO.php");

      $gpio = new GPIO();

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

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

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


      $t=decbin($tube);
      $lent=strlen($t);

         if ($lent==1)
         {
         $td=0;
         $tc=0;
         $tb=0;
         $ta=$t;
         }

         else if($lent==2)
         {
         $td=0;
         $tc=0;
         $tb=substr($t,0,1);
         $ta=substr($t,1,1);
         }
         else if($lent==3)
         {
         $td=0;
         $tc=substr($t,0,1);
         $tb=substr($t,1,1);
         $ta=substr($t,2,1);
         }


      $n=decbin($num);
      $lenn=strlen($n);

         if ($lenn==1)
         {
         $nd=0;
         $nc=0;
         $nb=0;
         $na=$n;
         }
         else if($lenn==2)
         {
         $nd=0;
         $nc=0;
         $nb=substr($n,0,1);
         $na=substr($n,1,1);
         }
         else if($lenn==3)
         {
         $nd=0;
         $nc=substr($n,0,1);
         $nb=substr($n,1,1);
         $na=substr($n,2,1);
         }
         else if($lenn==4)
         {
         $nd=substr($n,0,1);
         $nc=substr($n,1,1);
         $nb=substr($n,2,1);
         $na=substr($n,3,1);



      $gpio->output(4,$nd);
      $gpio->output(17,$nc);
      $gpio->output(22,$nb);
      $gpio->output(10,$na);

      $gpio->output(14,0);
      $gpio->output(15,1);
      $gpio->output(18,1);
      $gpio->output(23,1);


      $gpio->unexportALL();


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

      }



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

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

usleep(500000);

}


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

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


页: [1]
查看完整版本: 速度太快 ? 訊號 ? 請大大們幫幫我 ...