有很多情况下我们会用到电脑控制照明的开关,比如:智能家居,如果屋里没人,那么控制系统自动关灯以达到省电的目的;比如有很多场合,当会员刷卡后,系统才给照明,或系统才会启动某个设备等等。
传统的实现办法要使用单片机开发接口板,电脑的软件使用232/485串口通讯协议来发送指令给接口板。这种办法的缺点是:1.需要软件人员+硬件人员来合作完成,开发周期长;2.串口等复杂参数需要配置,不利于用户方便使用。3.需要外接电源来给单片机供电;
我们在这里给大家介绍一种软件人员也能完成的方法:
这种方法的优点是:
1. 只需要进行软件开发;
2. 硬件使用USB线连接电脑USB接口,无需任何其他配置就可以使用;
3. 无需外接电源,直接由USB获取所需电量;
要准备的东西如下:
所需硬件:
1.1018-PhidgetInterfaceKit 8/8/8 接口板
3. 灯泡和灯座 (可以在普通五金店买到)
5. 电源线 (从中间剪断,只保留插头和一段电线就可以了)
连接后的实物图如下图所示:
上电后电灯泡是不亮的。
点击“开”或“关”就可以打开和关闭电灯泡了!
软件关键源码(以C#为例,更多编程语言范例,请参考:http://www.guigujianwen.com/2016/06/17/phidgets_programming/)分析如下:
[csharp] view plain copy
- 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 接口板 “已和硬件成功建立连接!”;
- }
- private void checkBox1_CheckedChanged(object sender, EventArgs e)
- {
- if (this.checkBox1.Checked) //打勾=开
- {
- this.checkBox1.Text = “关;
- this.pictureBox1.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + “//lights_On.png”);
- }
- else//=关/span>
- {
- this.checkBox1.Text = “开a”;
- 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[6] =true;//开灯
ifKit.outputs[6] =false;//关灯
用这个方法是不是超级无敌简单呢/p>
方法二:

使用一块 1014 – PhidgetInterfaceKit 0/0/4 (接口板-4口) 地址:http://www.guigujianwen.com/2016/06/24/1014_2-phidgetinterfacekit-004/
就可以直接连接电脑USB来控制电灯的开关。这个接口板的特点是可以带4条线路的用电设备!保险丝和灯泡的接法同上,把上面的代码做如下修改:
接0口:
ifKit.outputs[0] =true;//开灯
ifKit.outputs[0] =false;//关灯
接1口:
ifKit.outputs[1] =true;//开灯
ifKit.outputs[1] =false;//关灯
接2口:
ifKit.outputs[2] =true;//开灯
ifKit.outputs[2] =false;//关灯
接3口:
ifKit.outputs[3] =true;//开灯
ifKit.outputs[3] =false;//关灯
——————————————
转自:http://blog.csdn.net/soft2buy/article/details/6248333
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!