arduino学习笔记十--Arduino 读红外测距传感器

Arduino 读红外测距传感器GP2D12 实例,仅供大家参考!
器材:Arduino 开发板,GP2D12,1602 字符液晶,连接线若干。
GP2D12 是日本SHARP 公司生产的红外距离传感器,价格便宜,测距效果还不错,主要用于模型或机器人制作。
技术规格如下:
探测距离:10-80cm
工作电压:4-5.5V
标准电流消耗:33-50 mA
输出量:模拟量输出,输出电压和探测距离成比例

实验原理图:

实验实物图:

没有障碍物,显示范围超出,


有障碍物时显示测量距离。

经实验,需要在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.DFRobot.cn";
char str2[]="Renge:00cm";
char str3[]="Renge Over";
/********************************************************************/
由于篇幅限制,1602 液晶部分程序省略。。。
/********************************************************************/
void setup (void)
{
int i = 0;
for (i=6; i <= 13; i++)
{
pinMode(i,OUTPUT);
}
LCD_Command_Write(0x28);//4 线 2 行 2x7
delay(50);
LCD_Command_Write(0x06);
delay(50);
LCD_Command_Write(0x0c);
delay(50);
LCD_Command_Write(0x80);
delay(50);
LCD_Command_Write(0x01);
}
/********************************************************************/
void loop (void)
{
float temp;
int val;
char i,a,b;
LCD_Command_Write(0x02);
delay(50);
LCD_Write_String(1,0,str1);
delay(50);
LCD_Write_String(3,1,str2);
delay(50);
while(1)
{
val = analogRead(GP2D12);
temp=val/5.8; //改变被除数,可以减小一点误差。
val=95-temp; //由于GP2D12 的输出电压与距离成反比,所以需要用一个常量相减
//改变这个常量,可以减小一点误差。
if(val>80)
{
LCD_Write_String(3,1,str3); //超出范围显示 Renge Over
}
else
{
LCD_Write_String(3,1,str2);
a=0x30+val/10;
b=0x30+val%10;
LCD_Write_Char(9,1,a);
LCD_Write_Char(10,1,b);
}
delay(500);
}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜航一直在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值