肯定很多人都不会做到这么极端。这两者一定是相辅相成的,但你觉得怎样的规模的任务才合适交给独立的分立元件来做呢?这就是一个要考虑实现难度和功能必要性的任务了。我们不妨考虑这样的一个场景:如果你现在想要使用Arduino完成一个比较复杂的演示项目,要装进去的内容有很多,你会为一个需要控制开关的闪烁灯安排一段子程序吗?
显然,这样并不太合适。更别提为了控制闪烁灯还要打乱主程序的时序。因此把这部分没什么意义的电路交给分立元件就是一个好主意。再停顿一下,为了这样的目的,你会怎么设计电路?
实际上,答案已经呼之欲出了,对于无线电爱好者来说,最常见的一个定时/震荡电路就是555电路所组成的。你可以用555电路来搭出一个简单的多谐振荡器来控制闪烁灯的通断,而用Arduino来控制555电路的启停。这样虽然不能节省IO口,但是在软件编写的压力上会减轻很多。这就是某种意义上来说,软硬件双管齐下能够带给我们的好处。
同样的道理,我们既然能够用硬件来减少软件的负担,我们也同样可以用软件来减少硬件的开销。最熟悉的例子当属按键去抖了。在要求不高的情况下,软件去抖非常方便,而去抖的写法已经成为了基本功的一部分。
最好的设计永远是平衡了硬件和软件的负担的,好的设计可以加快开发的速度,减少错误发生的概率。而如果能平衡好一个项目的话,你的设计功力一定又有长进!