3.2.5
程序设计
我们采用了Arduino单片机并写了相关的程序。Arduino是一个基于开放原始码的软硬体平台。构建于开放原始码simple
I/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境。Arduino可以使用开发完成的电子元件。例如Switch或sensors或其他控制器、LED、步进马达或其他输出装置。Arduino也可以独立运作成为一个可以跟软件沟通的接口。其特点如下:
①开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。
②使用低价格的微处理控制器(ATMEGA8或ATmega128)。可以采用USB接口供电,不需外接电源。也可以使用外部9VDC输入。
③Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入ATmega8或ATmega128芯片。有了bootloader之后,可以通过串口或者USB
to Rs232线更新固件。
④可依据官方提供的Eagle格式PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。可简单地与传感器,各式各样的电子元件连接(EX:红外线,超音波,热敏电阻,光敏电阻,伺服马达等)。
⑤支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。
⑥应用方面,利用Arduino,突破以往只能使用鼠标,键盘,CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。
arduino程序设计如下:
LiquidCrystal_I2C lcd(0x27,16,2); // set
the LCD address to 0x27 for a 16 chars and 2 line display
int button = 13;
int sensor_1 = 0;
int sensor_2 = 1;
int sensor_3 = 2;
double Value_1,Value_2,Value_3;
double v_1=487,v_2=514,v_3=490;
double pi=3.14;
double d=2.5;//传感器距离
double x,y;
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("please start measure!");
}
#include
#include
.h>
|
void loop()
{
Value_1 = analogRead(sensor_1);
Value_2 = analogRead(sensor_2);
Value_3 = analogRead(sensor_3);
lcd.clear();
lcd.print(Value_1);lcd.print("|");lcd.print(Value_2);
Value_1 = ((v_1-Value_1)/3)*pi/180;
Value_2 = ((v_2-Value_2)/3)*pi/180;
Value_3 = (abs(v_3-Value_3)/3)*pi/180;
lcd.setCursor(0,1);
x=d / ( tan(Value_2) - tan(Value_1)
);
y=x*( tan(Value_2) + tan(Value_3));
y=y+d;
lcd.print("|");
lcd.print(x);lcd.print("|");lcd.print(y);
delay(500);
}
|
4预算和前景
4.1 本仪器成本( 由淘宝网购买)
图12
如图12所示,成本合计大约190元,再加上外壳,总计约需200元。如到批量生产可以更加便宜。所以成本上远远低于现有市场上出售的激光测距仪价格。
但是,它在功能上是优于其他激光测距仪的。它可操作性强,不受光传播介质的影响,不受测量物的表面状况影响,只要能看到被测量物的首尾两个端点即可操作。而且一次操作即可得到结果。因此具有使用方便、准确高效、价格低廉等特点。如果开发生产,一定具有很强的可推广性。
4.2 本仪器发展前景
产品用途:本产品适用于家庭装修、工程装潢、建筑施工、房地产开发管理、房产测绘、房地产评估等各行各业,由于其数学原理还可用于中小学教学,可以简单、快速、精确地测量室内、室外的距离,可以精确地测量建筑物的高度。
行业用户:建筑师、中高级建筑人员、房地产测量、电力工程师、太阳能安装工程师、设备管理与安装人员、考古与文物普查人员、保险理赔人员、通讯机站设计师、建设监理、安全生产监督人员。
|