Arduino无线伺服代码

时间:2017-05-24 20:56:53

标签: c++ arduino wireless servo

我试图制作一个装置,你按下一块板上的一个按钮,它将伺服器移动到另一块板上的90度或180度。如果它在90,那么它移动到180,反之亦然。

我对这些东西知之甚少,因为这是我的第一个重大项目,所以请耐心等待。我已经有无线系统正常工作(多亏了几个小时的谷歌搜索)和LED的切换系统(用于测试无线是否正常工作)。

我使用的是微型射频发射器,两个Nanos和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); 
    }
  }
}

0 个答案:

没有答案