【问题标题】:cannot turn on relay indefinitely on an arduino无法在 arduino 上无限期地打开继电器
【发布时间】:2020-03-20 09:06:15
【问题描述】:

我想做一个像 Knocki(https://knocki.com) 这样的设备,它本质上是一个使用振动传感器的继电器控制。我可以检测到振动,但问题是,一旦我敲门,继电器就会闪烁然后关闭。我知道这是由于缺乏编程造成的。有人可以帮我写代码,这样当我敲门时,继电器就会无限期地打开;直到我再次敲门关闭继电器。

是的,你可能会说这段代码是从某个地方复制的(https://wiki.keyestudio.com/Ks0068_keyestudio_37_in_1_Sensor_Kit_for_Arduino_Starters#Project_21:_Vibration_Sensor).I 取自振动传感器的主页。代码最初是这样的,每次我敲门时,板载 Arduino 的 LED 都会亮起。另外,现在每次我敲门继电器都会微弱闪烁(虽然正确,与我的敲门同步)


#define SensorLED     13
#define SensorINPUT   3  //Connect the sensor to digital Pin 3 which is Interrupts 1.
unsigned char state = 0;
int Relay = 5;


void setup() 
{ 
  pinMode(SensorLED, OUTPUT); 
  pinMode(SensorINPUT, INPUT);
  attachInterrupt(1, blink, FALLING);// Trigger the blink function when the falling edge is detected
  }
void loop()
{  if(state!=0)
      {

        state = 0;
        digitalWrite(SensorLED,HIGH);
        delay(500);
        digitalWrite(Relay,HIGH);
      }  
      else
        digitalWrite(SensorLED,LOW);
        digitalWrite(Relay,lOW);
} 
void blink()//Interrupts function
{  state++;

【问题讨论】:

  • 请在其数据表中检查您的继电器所需的电压和电流。您的继电器可能需要更多电源才能继续运行。
  • @RobertoFRey 它是一个简单的 5v 继电器。但现在你提到它,我的电路板目前正在为我的 3.3 v 上的一个 5v 继电器和一个振动传感器供电。这有什么不同吗??

标签: arduino sensors relay


【解决方案1】:

是的,它在您的代码中:(坏的)示例仅因为有一个

digitalWrite(SensorLED,HIGH);
->>>   delay(500);

延迟 1/2 秒以保持 LED 亮起。因此,作为检查,在中继线之后放置另一个延迟,它也应该持续 1/2 秒(因此 LED 总共点亮 1 秒)

    digitalWrite(SensorLED,HIGH);
    delay(500);
    digitalWrite(Relay,HIGH);
   delay(500);

这只是为了检查 -> 下一步:
摆脱延迟(请参阅中的 blinkwithoutdelay 示例

Arduino->File->Examples->2.Digital -> blinkwithoutdelay


并引入第二个状态变量,例如

 bool relayStateOn = false;

让继电器和 LED 独立开/关。(如果那是 - 我理解 - 你想做什么)

【讨论】:

  • 我希望能够用我的手敲门和继电器打开或关闭。现在我的敲门只是让继电器停止了一段时间,然后它又重新打开。我想要它让它保持关闭,直到我再次敲门,有点像一个开关
  • 是的,我理解你的愿望。您是否像我写的那样更改了代码,这里没有人会为您编写程序 - 所以请显示您所做的更改 - 编辑您的问题,如何立即集成等等。并在文档中查看您的继电器是否在 HIGH 或 LOW 时关闭。一些 PCB 继电器通过集成电子设备提供这两种选择。因此,请查看您是否有正确的输入以及程序状态是否适合硬件连接
【解决方案2】:

如果您从电路板上为继电器供电,那不是问题。请在尝试打开继电器时检查继电器中的电压,如果电压下降,则表示继电器的此输出未提供必要的电流。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多