友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com
很多情况下我们需要通过程序去实现同一个按钮对应多个操作,例如开关机按钮,按一下开,再按一下就关(注意,这里是指用轻触按钮,而不是通过自锁开关从物理上实现);再例如播放按钮,按一下播放,再按一下暂停。
现在我们会在这样的开关下接一个继电器,通过拨动开关来控制所接入的设备。
为了更简单清晰地呈现中继触发控制的原理,我做了这个小项目。项目的原理图和线路连线如上图。
所需材料:
继电器 X 1
330Ohm 电阻 X 2
晶体管 NPN 2N2222 X 1
二极管 1N4148 X 1
按钮 X 1
LED X 1
按钮连接上拉电阻,需要二极管来截留从继电器线圈返回的电流。这被称为续流二极管(或飞轮二极管)。
工作原理:这里我使用了一个按钮作为拨动开关,它可以模拟打开和关闭而不是用两个按钮。对于继电器上的负载,暂时只使用Led来演示。
大多数类似项目的这一部分被忽略了。用欧姆表,找到线圈端子的位置。它的值大约或小于100欧姆。找到线圈上没有电压的触点闭合NC(常闭)~0Ohm。(对其他触点NO(常开)开路电阻执行相同操作。)
看图片并根据原理图正确连接晶体管E(发射极),B(基极),C(集电极)。
/********************* Simple toggle switch Created by: P.Agiakatsikas *********************/ int button = 8; int led = 13 int status = false; void setup(){ pinMode(led, OUTPUT); pinMode(button, INPUT_PULLUP); // set the internal pull up resistor, unpressed button is HIGH } void loop(){ //a) if the button is not pressed the false status is reversed by !status and the LED turns on //b) if the button is pressed the true status is reveresed by !status and the LED turns off if (digitalRead(button) == true) { status = !status; digitalWrite(led, status); } while(digitalRead(button) == true); delay(50); // keeps a small delay }
如果你需要 Proteus 文件,点这里下载。
之前还有一篇《用 Arduino 实现最简单的拨动开关》,这里提供了一个更简单的 Arduino 保持和切换开关状态的使用范例。
via
标签: arduino教程编程level3开关按键开led按键开关轻触开关拨动开关
评论列表