在许多情况下,我们需要通过程序实现相同的按钮对应的多个操作,如开关按钮,然后关闭(注意,这里指的是轻触摸按钮,而不是通过自锁开关);另一个例子是播放按钮,按下播放,然后按下暂停。
为了更简单、更清晰地呈现中继触发控制的原理,我做了这个小项目。项目原理图和线路连接如上图所示。
所需材料:
继电器 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 保持和切换开关状态的使用范例。