我无法使用Wemos D1 mini控制继电器

时间:2019-02-14 06:08:29

标签: c arduino

我正在尝试使用wemos D1 mini进行控制继电器。

我尝试使用wemos D1 mini来控制继电器,我将D1引脚连接到IN引脚,将GND连接到GND,将5V引脚连接到VCC引脚like this,但不起作用。 这是我的代码:

 int relaypin = D1;
 void setup() {
     Serial.begin(9600);
     pinMode(relaypin, OUTPUT); // Make LED pin D7 an output pin
     pinMode(relaypin, LOW);
     pinMode(LED_BUILTIN, OUTPUT);
 }
 void loop() {
      digitalWrite(relaypin, LOW); // LED off
      digitalWrite(LED_BUILTIN, LOW);
      Serial.println("LED On");
      delay(3000); // Wait 3 seconds
      digitalWrite(relaypin, HIGH); // LED on
      digitalWrite(LED_BUILTIN, HIGH);
      Serial.println("LED Off");
      delay(1000); // Wait 1 second
 }

3 个答案:

答案 0 :(得分:1)

问题出在您的setup()函数上。在将中继引脚声明为OUTPUT(即0x01)之后,您立即将其声明为LOW(即0x00),它等于INPUT

我想您应该写:digitalWrite(relaypin, LOW)

(您可以在./hardware/arduino/avr/cores/arduino/Arduino.h中看到定义)

答案 1 :(得分:0)

以下可能是原因:

  • Wemos D1 Mini在 3.3V 上运行。因此,继电器板上的输入信号电压可能不足。继电器板上的光耦合器需要 1.2V典型电压来触发输出电路。但是在您的电路中,即使从Wemos输出高电平,光耦合器上的电压也为1.7V 。因此,您的继电器被锁在相同的状态(MOST PROBABLE)
  • 5V电源电流可能不足以操作继电器

如何解决这些问题..

  • 您需要一个电压电平转换器,以将Wemos的3.3V信号转换为继电器板的5V
  • 使用额定电流更高的电源

此外,在您的代码中: 在setup()中,您定义了pinMode(relaypin,LOW),我想应该是digitalWrite(relaypin,LOW)

答案 2 :(得分:0)

使用pinMode(relaypin, OUTPUT_OPEN_DRAIN);代替pinMode(relaypin, OUTPUT);

您就像冠军一样赢了!