• 專注電子技術學習與研究
    當前位置:單片機教程網 >> Arduino >> 瀏覽文章

    運動會電控計時

    作者:未知   來源:互聯網   點擊數:  更新時間:2014年07月31日   【字體:

    最近開始在做一個運動會上用的電控計時,就是在攝像頭前放一個計時器,然后發令槍一響就開始計時。當運動員跑過終點線時,只要看一下過線時的時間就可以了。發令端用聲音傳感器加紅外開關加apc220無線模塊。接受端用一個8位的數碼管。下面是接收端的一些代碼:

    //電控計時時間顯示端,串口接收數據,接收到's'開始計時,接收到'o'停止計時,接收到'b'數據清零。
    //已經開始計時后再接收's'無用,只有接收到'b'或'o'后再接收's'才開始計時。
    //使用DFRobot電子積木互動媒體SPI接口8位LED靜態掃描顯示器
    unsigned long time;
    unsigned long time1;
    const int latchPin = 8;
    const int clockPin = 3;
    const int dataPin = 9;
    int i=0;
    int j=0;
    char inchar;
    int   bitToSet=0;
    byte Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

    void setup(){
      pinMode(latchPin, OUTPUT);
      pinMode(dataPin, OUTPUT); 
      pinMode(clockPin, OUTPUT);
      Serial.begin(9600);
      Serial.println("reset");

    }
    void loop(){
    time = millis();
       if (Serial.available() > 0) {
         inchar=Serial.read();
         if (inchar=='s'&&j==0)
        {
         time1=millis();
        j=1; 
        }
        if (inchar=='o')
       {
        j=0;
        }
       if(inchar=='b')
        
         bitToSet=0;
         j=0;
           for(i=0;i<9;i++)
      {
      digitalWrite(latchPin, LOW);
      shiftOut(dataPin, clockPin, MSBFIRST, Tab[bitToSet]);
      }
       digitalWrite(latchPin, HIGH);
        }
       }
      if(j==1)
      {
        time-=time1;
      for(i=0;i<9;i++)
      {
      digitalWrite(latchPin, LOW);
     if(i==0)
      bitToSet=time;
      if(i==1)
      bitToSet=(time0-time)/10;
      if(i==2)
      bitToSet=(time00-time0)/100;
       if(i==3)
      bitToSet=(time000-time00)/1000;
         if(i==4)
      bitToSet=(time0000-time000)/10000;
      if(i==5)
      bitToSet=(time00000-time0000)/100000;
      if(i>5)  //前三位數字始終是零
        bitToSet=0;
      shiftOut(dataPin, clockPin, MSBFIRST, Tab[bitToSet]);
      }
       digitalWrite(latchPin, HIGH);
      delay(20);
      }
     
    }

     

    用了熱轉印法制作了電路板,花了我2天的時間才把電路板做出來,現在說說期間的經驗所得。

    首先電路圖原來想用Protel來畫的,無奈10年沒有用這個軟件了,看了都暈。后來想到了用Flash畫圖來畫電路,發現真的很好用。首先可以創建很多影片剪輯,然后將一些基本原件的針腳都按照比例一個一個畫好,我是10個像素表示1mm。然后可以來繪制電路板了,直接可以使用影片剪輯里的基本原件,走線也按照等比例來繪制,即1mm用10個像素來表示。最后再電路外面繪制一個方框,記住方框的長寬。然后復制整個方框里的線路,將其粘貼到word里,然后更改圖片大小,用Flash里方框的像素除以10表示mm。這樣打印出來的圖和真實的尺寸是一樣的。最后重要提醒,千外不要把整張熱轉印紙放激光打印機里去打印,我就這樣把單位的打印機給卡死了。要像下面這樣,在中間貼一塊打印。
    打印完后將熱轉印紙倒復在覆銅板上,然后拿電熨斗壓在上面,小心移動,熨斗溫度要高點,不然很難整個轉印上去。轉印后的覆銅板忘記拍照了......如果有什么斷線的用記號筆補一下,就是用那種寫著防水的記號筆。然后放在三氯化鐵溶液里泡著,具體濃度多少我也搞不清楚,反正就用水調了一些。等銅化掉后就成了,看看我做的:

     

    然后拿轉頭轉孔。
    我之所以搞了兩天,主要原因是電路畫錯了,結果導致做好的板廢了,這里提醒一定要保證圖的正確性后在開始做。
    還有今天下午發生的,焊接的時候不小心把輸出電源和接地連起來了(不小的,因為vcc與gnd走線太近了,所以提醒vcc與gnd走線要分開。在通電之前先用萬用表測一下,正常的vcc與gnd之間應該有幾千歐的阻值。),導致我的arduino nano直接冒煙掛掉了。害的我只能把廢掉的挖出來在裝上一個新的......欲哭無淚啊......
    最后終于完工的電控計時電路板:




    上圖是發令端和計時端的電路。其實還有問題,就是用9V的電池來驅動會出現無法無線發射,只能用arduino nano連著電源來供電,那9V電池接口也是白做了,不過我在網上剛淘了兩塊9V的鋰電,不知道行不行。
    關閉窗口

    相關文章

    国产农村精品一级毛片视频_亚洲Av无码专区国产乱码在线观看_亚洲综合国产Av_天天影视网天天综合色