×

使用Arduino的光跟踪器

消耗积分:0 | 格式:zip | 大小:0.03 MB | 2022-11-01

张龙祥

分享资料个

描述

这个想法是受到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)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !