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

 

Преобразователь сигнала радиоуправления в данные 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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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