二、总结提升
以上其实是用了一种叫“查理复用”(Charlieplex)的方法。
为什么叫查理复用?
很简单,因为这个方法来源于美信半导体公司的工程师Charlie Allen。
查理复用是一种能够在驱动LED,特别是驱动大量LED时有效地节约GPIO的方法。
使用该方法,n个GPIO可以驱动 n*(n-1) 个LED,所以:
使用2个GPIO可以驱动2个LED。
使用3个GPIO可以驱动6个LED。
使用4个GPIO可以驱动12个LED。
以此类推。
这种方式能够实现的基础是:
单片机GPIO的三个状态:高电平、低电平、高阻态。
LED具有单向导电性。
查理复用设计的方法:
任意两个GPIO引脚之间串入两个LED,这两个LED为并联,且LED方向相反。
当你想要点亮某个特定的LED时,就将其两端所连接到的GPIO引脚分别设定为高电平和低电平,其它剩余的GPIO引脚设定为高阻态。
前面电动牙刷中6个LED灯的电路,就是这么设计的。