http://www.dengfengsoft.com
如何使用天邦登峰Phidgets1014来控制电灯泡开关灯
在上一个教程里,我们介绍了用Phidgets 1018 和 Phidgets 3051来控制电灯泡的开关灯。教程网址:
http://www.dengfengsoft.com/docs/web/dengfengsoft_phidgets_powercontrol.htm
这个教程适用于同时使用别的天邦登峰Phidgets传感器,比如使用红外距离传感器实现遥感手势操作开关灯等情况。
在这个教程里,我们要介绍直接使用Phidgets 1014 来控制电灯泡的开关灯。
所需硬件:
1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)http://www.dengfengsoft.com/ViewDetails206.aspx
产品编号: 1014
4 个继电 (Relay) 输出开关交直流电
等级为: 250VAC、10 Amps (100VDC、 5 Amps) 可以接200多个电灯泡和电器
直接连接到计算机的 USB 传输端口
含USB连接线.
灯泡和灯座
数量: 1
可在五金店买到。
保险丝.
10A 250V
用于保护电路,避免电流过高。(可选)
在各电子城都能找到。
电源线
从中间剪断备用
电线若干
所需要的软件:
1..Net Framework 3.5 (Windows 7 自带,Windows XP 请下载)
2. Visual Studio 2010 Express (下载)
3. 本文范例源码 (C#)
我们先按以下步骤把所需要的硬件都搭建起来:
1. 把电源线尾部的电线抽出来,火线端先连接10A 保险丝(可选,如果要带的电器比较多,最好加这个保险丝,1个灯泡加不加都行),然后接入1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)0C口。
2. 找另一根电线,一端连接1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)的NO口,另一端连接电灯泡的正极。
3. 找另一根电线,一端连接电灯泡的负极,另一端连接电源线的地线。
连接后的实际图片如下图所示:
硬件连接完毕!
首先我们安装Phidgets驱动程序 然后把1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)的USB线插入电脑的USB口。把电源线插入接线板插座中取电。
运行我们提供的范例程序:
上电后电灯泡是不亮的。
点击“开”或“关”就可以打开和关闭电灯泡了!
软件关键源码(以C#为例,更多编程语言范例,请参考:http://www.dengfengsoft.com/dengfengsoft_phidgets_programming_resources.html)
分析如下:
private void iniPhidget()//初始化Phidget
{
try
{
//初始化InterfaceKit object
ifKit = new InterfaceKit();
//定义接口板基础事件
ifKit.Attach += new AttachEventHandler(ifKit_Attach);
ifKit.Detach += new DetachEventHandler(ifKit_Detach);
ifKit.Error += new ErrorEventHandler(ifKit_Error);
//定义接口板特殊事件
//接口板数据接收触发事件
ifKit.InputChange += new InputChangeEventHandler(ifKit_InputChange);
//接口板数据输出触发事件
ifKit.OutputChange += new OutputChangeEventHandler(ifKit_OutputChange);
//传感器数据变化事件
ifKit.SensorChange += new SensorChangeEventHandler(ifKit_SensorChange);
//Open打开连接
ifKit.open();
//等候接口板连接
ifKit.waitForAttachment();
}
catch (PhidgetException pe)
{
MessageBox.Show(pe.ToString());
}
}
void ifKit_SensorChange(object sender, SensorChangeEventArgs e)//传感器事件变化事件
{
//e.Index 传感器所插的插口编号 0-7
//e.Value 传感器的值
}
void ifKit_OutputChange(object sender, OutputChangeEventArgs e)//接口板输出事件
{
//e.Index 输出口编号
//e.Value 输出的值
}
void ifKit_InputChange(object sender, InputChangeEventArgs e)//接口板输入事件
{
//e.Index 输入口编号
//e.Value 输入的值
}
void ifKit_Error(object sender, ErrorEventArgs e)
{
//e.Description; 错误信息
}
void ifKit_Detach(object sender, DetachEventArgs e)
{
//连接状态提示
//1018-PhidgetInterfaceKit 8/8/8 接口板 "已和硬件成功断开连接!";
}
void ifKit_Attach(object sender, AttachEventArgs e)
{
//连接状态提示
//1018-PhidgetInterfaceKit 8/8/8 接口板 "已和硬件成功建立连接!";
}
// //1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口)
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (this.checkBox1.Checked) //打勾=开
{
this.checkBox1.Text = "关灯";
ifKit.outputs[0] = true; //从0信号口输出1信号打开电源(本文仅有的关键代码)
this.pictureBox1.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "\\lights_On.png");
}
else//=关?
{
this.checkBox1.Text = "开灯";
ifKit.outputs[0] = false; //从0信号口输出0信号打开电源(本文仅有的关键代码)
this.pictureBox1.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "\\lights_Off.png");
}
}
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)//窗体退出前注销所有事件
{
ifKit.Attach -= new AttachEventHandler(ifKit_Attach);
ifKit.Detach -= new DetachEventHandler(ifKit_Detach);
ifKit.InputChange -= new InputChangeEventHandler(ifKit_InputChange);
ifKit.OutputChange -= new OutputChangeEventHandler(ifKit_OutputChange);
ifKit.SensorChange -= new SensorChangeEventHandler(ifKit_SensorChange);
ifKit.Error -= new ErrorEventHandler(ifKit_Error);
//run any events in the message queue - otherwise close will hang if there are any outstanding events
Application.DoEvents();
ifKit.close();
}
我们看到,实际起作用的仅仅用了两行代码:
ifKit.outputs[0] = true;//开灯
ifKit.outputs[0] = false;//关灯
展开阅读全文