我正在尝试制作一个装置,您可以在其中按下一个板上的按钮并将伺服器移动到另一块板上的 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);
}
}
}