0

我正在尝试制作一个装置,您可以在其中按下一个板上的按钮并将伺服器移动到另一块板上的 90 度或 180 度。如果它是 90,那么它会移动到 180,反之亦然。

我对这些东西不是很了解,因为这是我的第一个主要项目,所以请多多包涵。我已经让无线系统工作了(多亏了几个小时的谷歌搜索)和一个用于 LED 的切换系统(用于测试无线是否工作)。

我正在使用其中一个微型射频发射器、两个 Nano 和 Radio Shack 的伺服器。问题是伺服没有打开,但我的测试 LED 会打开和关闭。这是接收端的代码:

#include <VirtualWire.h>
#include <ServoTimer2.h>

const int releu_pin = 9;
const int servoPin = 6;
const int transmit_pin = 12;
const int receive_pin = 3;//pin connected between RX module and Arduino
const int transmit_en_pin = 5;

ServoTimer2 myservo;  

void setup() {
    myservo.attach(servoPin);
    myservo.write(45);
    vw_set_tx_pin(transmit_pin);
    vw_set_rx_pin(receive_pin);
    vw_set_ptt_pin(transmit_en_pin);
    vw_set_ptt_inverted(true);
    vw_setup(2000);//speed communication bps

    vw_rx_start(); // activate receiving mode
    pinMode(releu_pin, OUTPUT);
    pinMode(LED_BUILTIN, OUTPUT); //Debug
}

void loop() {
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    if (vw_get_message(buf, &buflen)) {
      //verify if any data is received
      if(buf[0]=='1') {
        //if received 1 turn ON releu_pin 
        myservo.write(90);
        digitalWrite(releu_pin , HIGH);
        digitalWrite(LED_BUILTIN, HIGH); //Debug
        delay(100); 
      }  
     if(buf[0]=='0') {
        myservo.write(180);
        digitalWrite(releu_pin , LOW);
        digitalWrite(LED_BUILTIN, LOW); //Debug
        delay(100); 
    }
  }
}
4

0 回答 0