這個(gè)世界上,極端的人有兩種,一種習(xí)慣將所有的事情全都交給單片機(jī)做,而另一種習(xí)慣將所有的事情都分解,然后全都交給分立元件來實(shí)現(xiàn)。你是哪一種?
肯定很多人都不會(huì)做到這么極端。這兩者一定是相輔相成的,但你覺得怎樣的規(guī)模的任務(wù)才合適交給獨(dú)立的分立元件來做呢?這就是一個(gè)要考慮實(shí)現(xiàn)難度和功能必要性的任務(wù)了。我們不妨考慮這樣的一個(gè)場景:如果你現(xiàn)在想要使用Arduino完成一個(gè)比較復(fù)雜的演示項(xiàng)目,要裝進(jìn)去的內(nèi)容有很多,你會(huì)為一個(gè)需要控制開關(guān)的閃爍燈安排一段子程序嗎?
顯然,這樣并不太合適。更別提為了控制閃爍燈還要打亂主程序的時(shí)序。因此把這部分沒什么意義的電路交給分立元件就是一個(gè)好主意。再停頓一下,為了這樣的目的,你會(huì)怎么設(shè)計(jì)電路?
實(shí)際上,答案已經(jīng)呼之欲出了,對(duì)于無線電愛好者來說,最常見的一個(gè)定時(shí)/震蕩電路就是555電路所組成的。你可以用555電路來搭出一個(gè)簡單的多諧振蕩器來控制閃爍燈的通斷,而用Arduino來控制555電路的啟停。這樣雖然不能節(jié)省IO口,但是在軟件編寫的壓力上會(huì)減輕很多。這就是某種意義上來說,軟硬件雙管齊下能夠帶給我們的好處。
同樣的道理,我們既然能夠用硬件來減少軟件的負(fù)擔(dān),我們也同樣可以用軟件來減少硬件的開銷。最熟悉的例子當(dāng)屬按鍵去抖了。在要求不高的情況下,軟件去抖非常方便,而去抖的寫法已經(jīng)成為了基本功的一部分。
最好的設(shè)計(jì)永遠(yuǎn)是平衡了硬件和軟件的負(fù)擔(dān)的,好的設(shè)計(jì)可以加快開發(fā)的速度,減少錯(cuò)誤發(fā)生的概率。而如果能平衡好一個(gè)項(xiàng)目的話,你的設(shè)計(jì)功力一定又有長進(jìn)!
(審核編輯: 林靜)
分享