最近開始在做一個(gè)運(yùn)動(dòng)會(huì)上用的電控計(jì)時(shí),就是在攝像頭前放一個(gè)計(jì)時(shí)器,然后發(fā)令槍一響就開始計(jì)時(shí)。當(dāng)運(yùn)動(dòng)員跑過(guò)終點(diǎn)線時(shí),只要看一下過(guò)線時(shí)的時(shí)間就可以了。發(fā)令端用聲音傳感器加紅外開關(guān)加apc220無(wú)線模塊。接受端用一個(gè)8位的數(shù)碼管。下面是接收端的一些代碼:
//電控計(jì)時(shí)時(shí)間顯示端,串口接收數(shù)據(jù),接收到's'開始計(jì)時(shí),接收到'o'停止計(jì)時(shí),接收到'b'數(shù)據(jù)清零。
//已經(jīng)開始計(jì)時(shí)后再接收's'無(wú)用,只有接收到'b'或'o'后再接收's'才開始計(jì)時(shí)。
//使用DFRobot電子積木互動(dòng)媒體SPI接口8位LED靜態(tài)掃描顯示器
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) //前三位數(shù)字始終是零
bitToSet=0;
shiftOut(dataPin, clockPin, MSBFIRST, Tab[bitToSet]);
}
digitalWrite(latchPin, HIGH);
delay(20);
}
}
用了熱轉(zhuǎn)印法制作了電路板,花了我2天的時(shí)間才把電路板做出來(lái),現(xiàn)在說(shuō)說(shuō)期間的經(jīng)驗(yàn)所得。
首先電路圖原來(lái)想用Protel來(lái)畫的,無(wú)奈10年沒(méi)有用這個(gè)軟件了,看了都暈。后來(lái)想到了用Flash畫圖來(lái)畫電路,發(fā)現(xiàn)真的很好用。首先可以創(chuàng)建很多影片剪輯,然后將一些基本原件的針腳都按照比例一個(gè)一個(gè)畫好,我是10個(gè)像素表示1mm。然后可以來(lái)繪制電路板了,直接可以使用影片剪輯里的基本原件,走線也按照等比例來(lái)繪制,即1mm用10個(gè)像素來(lái)表示。最后再電路外面繪制一個(gè)方框,記住方框的長(zhǎng)寬。然后復(fù)制整個(gè)方框里的線路,將其粘貼到word里,然后更改圖片大小,用Flash里方框的像素除以10表示mm。這樣打印出來(lái)的圖和真實(shí)的尺寸是一樣的。最后重要提醒,千外不要把整張熱轉(zhuǎn)印紙放激光打印機(jī)里去打印,我就這樣把單位的打印機(jī)給卡死了。要像下面這樣,在中間貼一塊打印。
打印完后將熱轉(zhuǎn)印紙倒復(fù)在覆銅板上,然后拿電熨斗壓在上面,小心移動(dòng),熨斗溫度要高點(diǎn),不然很難整個(gè)轉(zhuǎn)印上去。轉(zhuǎn)印后的覆銅板忘記拍照了......如果有什么斷線的用記號(hào)筆補(bǔ)一下,就是用那種寫著防水的記號(hào)筆。然后放在三氯化鐵溶液里泡著,具體濃度多少我也搞不清楚,反正就用水調(diào)了一些。等銅化掉后就成了,看看我做的:

然后拿轉(zhuǎn)頭轉(zhuǎn)孔。
我之所以搞了兩天,主要原因是電路畫錯(cuò)了,結(jié)果導(dǎo)致做好的板廢了,這里提醒一定要保證圖的正確性后在開始做。
還有今天下午發(fā)生的,焊接的時(shí)候不小心把輸出電源和接地連起來(lái)了(不小的,因?yàn)関cc與gnd走線太近了,所以提醒vcc與gnd走線要分開。在通電之前先用萬(wàn)用表測(cè)一下,正常的vcc與gnd之間應(yīng)該有幾千歐的阻值。),導(dǎo)致我的arduino nano直接冒煙掛掉了。害的我只能把廢掉的挖出來(lái)在裝上一個(gè)新的......欲哭無(wú)淚啊......
最后終于完工的電控計(jì)時(shí)電路板:
上圖是發(fā)令端和計(jì)時(shí)端的電路。其實(shí)還有問(wèn)題,就是用9V的電池來(lái)驅(qū)動(dòng)會(huì)出現(xiàn)無(wú)法無(wú)線發(fā)射,只能用arduino nano連著電源來(lái)供電,那9V電池接口也是白做了,不過(guò)我在網(wǎng)上剛淘了兩塊9V的鋰電,不知道行不行。