描述
这个想法是受到Arduino太阳能跟踪器的启发。你们都知道向日葵“追随”太阳的事实。与向日葵类似,我的光跟踪器也会跟随光线。
硬件组件
Arduino Uno/纳米
无焊面包板-迷你
伺服电机SG-90
LDR(x2)
电阻器(x2)-10kΩ
公对公跳线(x9)-10cm
2针母-母跳线(x2)-70cm
3D打印/纸板屏障(请参阅“设置”部分)
安装程序
1/2
您的设置必须与上图中的设置有些相似。
连接
伺服电机(SG-90)
S(黄色/橙色导线)-D9
(+)(红线)-5V
(-)(黑色/棕色导线)-接地(GND)
低密度无线电
第一个-A0
第二-A1
将LDR的一端连接到5V,另一端连接到10kΩ电阻器。电阻器的另一端必须接地。端口的连接必须在电阻器和LDR连接的地方。
编码
对于这个项目,您需要在草图中包含迈克尔·马戈利斯的“伺服”库。如果您是这个库的新手,并且需要参考函数,请随时关注本节中的超链接。
创建伺服对象以控制伺服,并创建名为“pos”的变量以存储伺服位置。伺服电机的初始位置必须为90°,因此将“pos”变量指定为90。为LDR创建全局变量,并创建名为“limit”的变量。将“limit”变量指定为2。
在void setup()中,使用pinMode()函数将LDR引脚配置为INPUT。使用attach()函数将伺服变量连接到引脚,并使用write()函数设置伺服位置为90°。设置一秒钟的延迟,然后继续执行空循环()。
在void循环()中,创建局部变量来存储两个LDR的数字值。在这种情况下,必须使用analogRead()。使用abs()函数计算两个值之间的绝对差。如果两个值之间的绝对差超过“极限”(2),伺服位置必须改变。如果第一个LDR的值大于第二个LDR,则存储在“pos”变量中的值必须减小。如果第二个LDR的值大于第一个LDR,则存储在“pos”变量中的值必须增加。
如果 'pos' 变量中存储的值超过 180,则必须将其重置为 180。如果 'pos' 中存储的值小于 0,则重复相同操作。最后使用 write( ) 函数,将舵机的位置设置为现在存储在“pos”变量中的值。设置 50 微秒的延迟。
如果有人对编码有疑问,请不要犹豫,在下面的评论中询问他们。
最终外观
如果有人对此项目有任何疑问或建议,请随时在下面发表评论。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !