Я пытаюсь придумать, где вы нажимаете кнопку на одной доске, и она перемещает сервопривод либо на 90 градусов, либо на 180 градусов на другой доске. Если это в 90 тогда, это перемещается в 180 и наоборот.
Я не очень осведомлен, когда дело доходит до этого материала, так как это мой первый крупный проект, так что терпите меня. У меня уже есть работающая беспроводная система (благодаря часам поиска в Google) и переключающая система для светодиода (для проверки работоспособности беспроводной сети).
Я использую один из крошечных радиопередатчиков, два Nanos и сервопривод от Radio Shack. Проблема в том, что сервопривод не включается, но мой тестовый светодиод включается и выключается. Вот код для конца получателя вещей:
#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);
}
}
}
Задача ещё не решена.
Других решений пока нет …