我是7月份就从室友处得知瑞萨搞活动,一兴起便申请了,一头扎进了EE这条不归路。其实本人大学是学CS的,对嵌入式开发基本不了解,若说有点沾边的也就是汇编了,可汇编也忘得差不多了。通过对这芯片近一个月的学习和项目开发,了解了很多原先在CS课堂上迷糊的东西。虽然最后做出了一个远没达到production级别的产品,也算蛮遗憾的。
闲话少说,R7F0C80212主频才20MHz,256Byte的内存和2K的flash, 要做自行车的风火轮其他挺吃力的,因为要做出一个酷炫的风火轮,至少要存储20组图象,每个图像如果用单彩的话,按32个灯,每2度角显示一次色彩的话需要3 * 32 * 360/2 / 8= 2160Byte, 这个图像就占掉了整个flash, 若是多彩的话更多,遑论还有程序占用的空间了。不过当时申请时没想那么多,就一路做下来。不过通过一些小trick, 可以用时间来换取空间,比如采用对称图案等。
控制LED的芯片用的是LDP6803,该芯片可以通过串行数据来控制LED的亮度、色彩,这样就只需要占用瑞萨芯片的两个GPIO。一个做CLOCK,一个做DATA。
再通过一个霍尔开关,在自行车上安装一小块磁铁,这样每当自车行转到这个角落时,会产生一个低电平,在瑞萨芯片里设置一个定时器通道CH1,作为输入脉冲间隔测量,每当中断发生时便将计数器的值读取出来,平分成N份(N的大小按照需要的精细度来分,越大越精细,越有可能产生嵌套中断走上不归路),传给间隔定时器CH0的TDR00, 这样在一个自行车轮周期里会产生N个中断,在每个中断里将预定的要显示的图案时序打到LDP6803,N个组就组成了一幅图案。
然而理想很丰满,现实很骨感,虽然原理很清晰简单,由于产生各种问题,花了大量时间来克服(有些还没有克服),话不多说,先将最终效果图奉上,诸君请莫笑。
效果图1:
效果图2:
效果图3(PS:其他这张肉眼看起来挺好看的,多彩的,相机拍出来亮瞎了)