цифровая электроника
вычислительная техника
встраиваемые системы

 

Преобразователь сигнала радиоуправления в данные USB

Автор: Mike(admin) от 25-07-2018, 06:25

Игрушки с радиоуправлением всегда приносили радость как детям, так и взрослым. И особенную радость они приносили (да и сейчас приносят) радиолюбителям и энтузиастам в области электроники, поскольку им интересно не только управлять объектами на расстоянии, но и создавать и разбирать в познавательных целях всю сопутствующую электронику.


Преобразователь сигнала радиоуправления в данные USB

Но когда нет объекта управления, но есть контроллер дистанционного управления наряду с приемником радиосигналов, становится не так весело. Впрочем, можно подключить все это добро к компьютеру через порт USB как джойстик и управлять виртуальными объектами с помощью радиосигналов.


Для этой цели помимо контроллера с приемником и компьютера с USB понадобится какая-нибудь плата-переходник. В качестве такого переходника можно использовать миниатюрную Arduino-подобную плату Digispark с микроконтроллером ATtiny85. Затем следует просто подключить различные каналы приемника радиосигналов к цифровым входным контактам Arduino. Такие приемники имеют напряжение 5 В и потребляют очень мало тока, поэтому даже возможно питание всего устройства от USB-порта. Схема подключения очень проста:


Преобразователь сигнала радиоуправления в данные USB

* Линии 2 и 3 должны быть закорочены, чтобы активировать USB-устройство.


Код программы следующий:



#include <SoftRcPulseIn.h>
#include <TinyPinChange.h>
#include "DigiJoystick.h"

#define CHANNEL1_PIN   0
#define CHANNEL2_PIN   1
#define CHANNEL3_PIN   5

SoftRcPulseIn  Channel_1_Pulse;
SoftRcPulseIn  Channel_2_Pulse;
SoftRcPulseIn  Channel_3_Pulse;

byte chan1val;
byte chan2val;
byte chan3val;


void setup()
{
  Channel_1_Pulse.attach(CHANNEL1_PIN);
  Channel_2_Pulse.attach(CHANNEL2_PIN);
  Channel_3_Pulse.attach(CHANNEL3_PIN);
}

void loop()
{
  chan1val=map(Channel_1_Pulse.width_us(), 700, 2300, 0, 255);
  chan2val=map(Channel_2_Pulse.width_us(), 700, 2300, 0, 255);
  chan3val=map(Channel_3_Pulse.width_us(), 700, 2300, 0, 255);

  DigiJoystick.setX((byte) (chan1val));
  DigiJoystick.setY((byte) (chan2val));
  DigiJoystick.setXROT((byte) (chan3val));

  DigiJoystick.delay(10);
}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий