<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[RemoteXY community — Радиоуправляемые модели]]></title>
		<link>https://forum.remotexy.com/viewtopic.php?id=161</link>
		<atom:link href="https://forum.remotexy.com/extern.php?action=feed&amp;tid=161&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Радиоуправляемые модели.]]></description>
		<lastBuildDate>Sat, 15 Jul 2017 14:12:23 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Радиоуправляемые модели]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=802#p802</link>
			<description><![CDATA[<p>было бы не плохо если еще схему приложили))</p>]]></description>
			<author><![CDATA[null@example.com (oleg_str)]]></author>
			<pubDate>Sat, 15 Jul 2017 14:12:23 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=802#p802</guid>
		</item>
		<item>
			<title><![CDATA[Re: Радиоуправляемые модели]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=602#p602</link>
			<description><![CDATA[<p>Первый проект с иcпользованием RemoteXY был создан совершенно случайно.<br />Детям была подарена игрушка Ford Shelby&nbsp; с 4-х канальным управлением, которая им вскоре надоела и была сломана. Катали её без пульта, от чего был сожжён обратным током от двигателя контроллер управления. Я взялся за дело и за пару бессонных ночей придумал новое управление. С телефона.<br />Использовал следующие платы: <br /><strong>HC-05</strong>, <strong>Arduino PRO mini</strong>, <strong>TB6612FNG </strong> и старый добрый КРЕН5А<br />Захотелось не просто управлять движением, а добавить световую индикацию с автоматическим управлением.<br />Алгоритм родился следующий (АР- автоматический режим, РР - ручной режим):<br />1. При движении вперёд или назад выключается стоп-сигнал (АР)<br />2. При остановке включается стоп-сигнал (АР)<br />3. При движении назад - включается задний ход (АР)<br />4. Включение фар с телефона (РР)<br />5. При повороте вправо-влево, мигает соответствующий поворотник (АР)<br />6. Управление скоростью двигателя вперёд-назад (РР)<br />Код изначально создан в RemoteXY , но был доработан под этот проект<br /></p><div class="codebox"><pre><code>/*
 * Питание на всю электронику через КРЕН5А
 * драйвер двигателей TB6612FNG с управлением напряжением на двигатели
 * AIN1, AIN2 входы двигателя вперёд-назад
 * BIN1, BIN2 входы двигателя поворота
 * AO1, AO2 выходы двигателя вперёд-назад
 * BO1, BO2 выходы поворота
 * PWMA на выход 9 ШИМ (управление скоростью)
 * PWMB (незачем управлять скоростью, потому что это поворот, просто подаем высокий уровень), STBY, VCC на +5В
 * VM питание моторов 7.4В. Подключение к двум аккумуляторам 18650 3.7В (последовательное соединение)
 * Bluetooth HC-05
 */
#define REMOTEXY_MODE__SOFTSERIAL
#include &lt;SoftwareSerial.h&gt; 
#include &lt;RemoteXY.h&gt; 
// настройки соединения  
#define REMOTEXY_SERIAL_RX 3
#define REMOTEXY_SERIAL_TX 2
#define REMOTEXY_SERIAL_SPEED 9600 
// конфигурация интерфейса   
#pragma pack(push, 1) 
uint8_t RemoteXY_CONF[] = 
  { 255,6,0,0,0,83,0,6,0,0,
  1,0,4,0,27,27,1,226,150,178,
  0,1,0,4,36,27,27,3,226,150,
  188,0,1,0,35,36,27,27,2,226,
  151,132,0,1,0,69,36,27,27,6,
  226,150,186,0,2,0,35,1,19,10,
  3,226,152,128,0,79,70,70,0,4,
  128,35,17,60,11,1,130,1,4,0,
  27,63,4,130,1,35,36,61,27,4 };
// структура определяет все переменные вашего интерфейса управления  
struct { 
// управляющие переменные
  uint8_t FWD;       // вперёд
  uint8_t BCKWD;     // назад 
  uint8_t LEFT;      // влево 
  uint8_t RIGHT;     // вправо
  uint8_t R_LIGHT;   // фары
  int8_t  ACCELERATE;// =0..100 положение слайдера
  int SPEED;         //скорость
  uint8_t connect_flag;  // =1 if wire connected, else =0
} RemoteXY; 
#pragma pack(pop) 
///////////////////////////////////////////// 
//           END RemoteXY include          // 
///////////////////////////////////////////// 
#define PIN_FWD 4      //+мотора движения
#define PIN_BCKWD 5    //-мотора движения
#define PIN_LEFT 6     //+мотора поворота
#define PIN_RIGHT 7    //-мотора поворота
#define PIN_R_LIGHT 8  //фары
#define PIN_RIGHT_LIGHT 11  //правые поворотники
#define PIN_LEFT_LIGHT 12   //левые поворотники
#define PIN_STOP_LIGHT 13   //стоп-сигналы
#define PIN_MOTOR_SPEED 9   //управление скоростью
int BLINK = LOW;
long previousMillis = 0;   // здесь будет храниться время последнего изменения состояния светодиода 
long interval = 500;       // частота мигания поворотников (0.5 Гц)
void setup()  
{ 
  RemoteXY_Init ();  
//выходы и входы
  pinMode (PIN_FWD, OUTPUT);
  pinMode (PIN_BCKWD, OUTPUT); //использовать выход для подключения света заднего хода
  pinMode (PIN_LEFT, OUTPUT);
  pinMode (PIN_RIGHT, OUTPUT);
  pinMode (PIN_R_LIGHT, OUTPUT);
  pinMode (PIN_RIGHT_LIGHT, OUTPUT);
  pinMode (PIN_LEFT_LIGHT, OUTPUT);
  pinMode (PIN_STOP_LIGHT, OUTPUT); 
  pinMode (PIN_MOTOR_SPEED, OUTPUT);
  // TODO you setup code 
} 
void loop()  
{  
  RemoteXY_Handler (); 
  analogWrite(PIN_MOTOR_SPEED, (RemoteXY.ACCELERATE)*2.55); //управление скоростью: 0..100*2.55 чтобы получить диапазон 0..255
  digitalWrite(PIN_FWD,     (RemoteXY.FWD==0)?LOW:HIGH);    //вперёд
  digitalWrite(PIN_BCKWD,   (RemoteXY.BCKWD==0)?LOW:HIGH);  //назад
  digitalWrite(PIN_LEFT,    (RemoteXY.LEFT==0)?LOW:HIGH);   //влево
  digitalWrite(PIN_RIGHT,   (RemoteXY.RIGHT==0)?LOW:HIGH);  //вправо
  digitalWrite(PIN_R_LIGHT, (RemoteXY.R_LIGHT==0)?LOW:HIGH);//фары
//стоп-сигнал
 if (RemoteXY.FWD==HIGH||RemoteXY.BCKWD==HIGH)    //пришёл сигнал - отключаем стопы
    {
     digitalWrite(PIN_STOP_LIGHT,LOW);            //отключение стопов при движении вперед
    }
     else digitalWrite(PIN_STOP_LIGHT,HIGH);      //стоит машина - включаем стопы
//используем таймер вместо delay
  if (millis() - previousMillis &gt;= interval)     
   {
    previousMillis = millis();
    if (BLINK == LOW) 
      {
       BLINK = HIGH;
      } 
       else 
        {
         BLINK = LOW;
        }
    }
//поворотники
 if (RemoteXY.LEFT==HIGH)             //пришел сигнал - мигаем поворотником влево
 {
  digitalWrite(PIN_LEFT_LIGHT,BLINK); //левый поворотник
 }
   else
      {
       digitalWrite(PIN_LEFT_LIGHT,LOW);
      }
  if (RemoteXY.RIGHT==HIGH)            //пришёл сигнал - мигаем поворотником вправо
 {
  digitalWrite(PIN_RIGHT_LIGHT,BLINK); //правый поворотник
 }
   else
      {
       digitalWrite(PIN_RIGHT_LIGHT,LOW);
      }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (IvanSerov)]]></author>
			<pubDate>Sun, 23 Apr 2017 20:21:28 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=602#p602</guid>
		</item>
		<item>
			<title><![CDATA[Радиоуправляемые модели]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=601#p601</link>
			<description><![CDATA[<p>Предлагаю в данной теме делиться опытом внедрения RemoteXY в радиоуправление.</p>]]></description>
			<author><![CDATA[null@example.com (IvanSerov)]]></author>
			<pubDate>Sun, 23 Apr 2017 19:58:43 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=601#p601</guid>
		</item>
	</channel>
</rss>
