
如何使用Arduino制作一个时钟君?
经过初略观察,我们可以发现时钟君其实是由
板子两块!
( Arduino Nano 及 时钟模块DS1307)
舵机*3!
亚克力板及杜邦线及笔等外设!
三大部分组成

所 以 呢 ? ?
外 设 篇
所以首先,我们要搭建个能够让时钟君工作的平台。
由于这是一个已有优秀前人开源的小项目,我们可以直接获得亚克力板图纸如下↓ ↓ ↓
当然,相应的处理及拼装过程,在此就不赘述了。

于是这一块就可以愉快地略过了呢!
完全没什么不对!!一点也没有偷懒呢!!!
#如需使用激光雕刻请与相应负责人联系学习使用方法及注意事项#

编 程 篇
直接进入我们的真正重点 编程篇!
现在,我们想让时钟君能够将当前时间写在亚克力板上,那么问题来了—— 要想时钟君能写字,统共分几步?#条件反射说三步的同学请反省一下好吗#

既然想写字,肯定就需要先定位。
观察下图,我们可以发现时钟君是由两支 “机械臂” 操控的,当舵机转动合适的角度,带动两臂在平面上移动,从而写出当前时间。

对上图进行简单的抽象,我们的问题突然就进入了数学的领域。#前方提醒!以下将出现一系列图片感人但逻辑缜密的分析过程,受不了的同学请抓紧时间快进,转入代码段落#


假装大型推导现场
<< 滑动查看 配合下文解说更佳 >>
由图1,先确定(Hx,Hy)对应的α角
由于TH和O1次级臂的夹角一定
所以,只要L1,L2,L3已知,L4就已知了
给出Tx和Ty之后
O1T的长度就可以求了
而且,α1=arctan(△y1/△x1)
下面就算α2就好了
很幸运,L4,L1,O1T都已知,那么α2也就算出来了
所以,给定一个T,我们就可以算出一组α(O1的和O2的)
为什么要用两个呢?为了稳!
我们获取了Hx和Hy,就可以轻易解出β了(见图2及图3)
解出β就略了
再见了
理论推导
现在让我们用代码实现吧
从几何关系入手写第一个函数!

#先算出左面舵机的角度

#再算出右面舵机的角度

对了,刚才函数里面用到一个解三角形的函数

怎么让舵机转起来呢?调用这个封装好的函数

形参是角度单位,但是究竟是几秒,还是要实际调试
此外,此处需要include这个库 ↓



当然,步长是几得自己调,直到爽为止
接着下一步…画椭圆!
#小声BB:其实0啦6啦9啦也可以写成数码管的样子嘛#
不过为了展现聪明才智,咱还是画个圈

形参多的时候一定要加注释!
以上终于将顺逆时针画圆封装到一起了!
