ArduinoGP2D12红外线测距传感器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最近忙生活琐事,很少搞这些小东东,今天闲了一下就发表一个Arduino控制GP2D12的小实例,仅供大家参考! 器材:Arduino开发板,GP2D12,1602字符液晶,连接线若干。 Arduino开发板和1602字符液晶我就不多介绍了,前面都提到过。 GP2D12是日本SHARP公司生产的红外距离传感器,价格便宜,测距效果还不错,主要用于模型或机器人制作。 技术规格如下: 探测距离:10-80cm 工作电压:4-5.5V 标准电流消耗:33-50 mA 输出量:模拟量输出,输出电压和探测距离成比例 从曲线图中我们可以看出,输出电压并非是线性的,所以这个测距也就只能测个大概,如果要精度高的话就需要做非线性校正,这里我们就不讨论这个问题了。 实验原理: GP2D12根据距离的远近输出相应的电压,经Arduino开发板0号模拟口输入,转换成数字量,根据公式计算得到需要显示的数据。 实验原理图: 实验实物图: 没有障碍物,显示范围超出。 有障碍物时显示测量距离。 经实验,需要在GP2D12的电源端加个10UF以上的电解电容,稳定供电电压,以保证输出模拟电压更稳定。 实验代码: /********************************************************************/ int GP2D12=0; int ledpin = 13; int LCD1602_RS=12;?? int LCD1602_RW=11;?? int LCD1602_EN=10;?? int DB[] = {6, 7, 8, 9}; char str1[]= www.DFR; char str2[]=Renge:00cm; char str3[]=Renge Over; /********************************************************************/ ? /********************************************************************/? void LCD_Command_Write(int command) { ?int i,temp; ?digitalWrite( LCD1602_RS,LOW); ?digitalWrite( LCD1602_RW,LOW); ?digitalWrite( LCD1602_EN,LOW); ?temp=command 0xf0; ?for (i=DB[0]; i = 9; i++) ?{ ?? digitalWrite(i,temp 0x80); ?? temp = 1; ?} ? ?digitalWrite( LCD1602_EN,HIGH); ?delayMicroseconds(1); ?digitalWrite( LCD1602_EN,LOW); ?temp=(command 0x0f)4; ?for (i=DB[0]; i = 10; i++) ?{ ?? digitalWrite(i,temp 0x80); ?? temp = 1; ?} ?digitalWrite( LCD1602_EN,HIGH); ?delayMicroseconds(1); ?digitalWrite( LCD1602_EN,LOW); } /********************************************************************/ void LCD_Data_Write(int dat) { ? ?int i=0,temp; ?digitalWrite( LCD1602_RS,HIGH); ?digitalWrite( LCD1602_RW,LOW); ?digitalWrite( LCD1602_EN,LOW); ?temp=dat 0xf0; ?for (i=DB[0]; i = 9; i++) ?{ ?? digitalWrite(i,temp 0x80); ?? temp = 1; ?} ?digitalWrite( LCD1602_EN,HIGH); ?delayMicroseconds(1); ?digitalWrite( LCD1602_EN,LOW); ?temp=(dat 0x0f)4; ?for (i=DB[0]; i = 10; i++) ?{ ?? digitalWrite(i,temp 0x80); ?? temp = 1; ?} ?digitalWrite( LCD1602_EN,HIGH); ?delayMicroseconds(1); ?digita

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档