

ALS писал(а):В TREX уже залита прошивка, которая позволяет управлять всем хозяйством "из коробки".


ALS писал(а):По-чесноку, даже я, взяв ее впервые в руки, ничего не стал бы там допиливать и добавлять.
Код уже залит и он дает полное управление тем, что уже есть - от этого и надо отталкиваться.


ALS писал(а):slom, дружище, ты только не накосяч.
В баню IDE.
В TREX уже залита прошивка, которая позволяет управлять всем хозяйством "из коробки".
https://www.sparkfun.com/products/12075
читаем User Manual, на пятой странице :
Sample Code:
The T’REX robot controller comes pre-loaded with the “Arduino Nano w/ 328” bootloader
and sample code that lets you use the controller right out of the box.
На стр. 9-12 подробно расписан протокол.
Управление девайсом - пакетами по 27 байт, инфа с датчиков и проч - пакеты по 24 байта.
Т.о. тебе для начала надо запустить на компе любую терминальную программу и в соответствии с мануалом попробовать подать туда пакет, руководствуясь описанием.
А полезешь сейчас программировать дуню - это тебе недели на две никчемного разбирательства с тем, что тебе пока в принципе не нужно.
 
 


 );
 );

 
  
  
  
 ALS писал(а):http://digitalchip.ru/terminal-1-9b-rabotaem-s-com-portom
как работать -
выставляешь свой ком-порт, его скорость, жмешь connect
в верхнем окне должны приходить 24-байтные пакеты статуса
внизу - строка, которую надо забить 27-байтной посылкой (в шестнадцатиричных кодах), каждый код соответсвует одному байту этой самой посылки.
убираешь галку "CR"
жмешь "Send"
если все правильно, то железяка примет пакет и покрутит колесами/сервами или сделает еще что-то полезное.
Там же - кнопки макросов, на каждый из которых можно забить свою посылку, т.о. можно будет управлять нажатием на соответствующую кнопку.
Когда разберешся с пакетами, тогда можно будет думать о "прослойке" между стандартным RC-приемником и TREX-ом.
Комплектов для RC у меня нет, я не увлекаюсь моделями. В "модельной" ветке не севинфо я просто иногда помогаю камрадам с какой-либо нестандартной электроникой.
ATюярцfxxxшЂ<0>Ђ<0>ЂЂЂ 
 41 54 FE FF F0 F6 06 06 66 78 78 78 F8 80 00 80 00 80 80 80 



ALS писал(а):slom, дружище, ты пойми, пож-ста, правильно.
Если у тебя с английским тоже тяжко, то не выучив хотя бы сотню слов, ты даже программировать не сможешь.
Вообще никак и ничего.
Тогда придется либо предлагать деньги, чтоб ЗА ТЕБЯ кто-то это сделал, либо... ну я не знаю, еще с полгода потратить на изучение азов.
Просто там английским по-белому написано :
1. Start byte – must be 0x0F (15 decimal)
это, типа, признак начала посылки и он должен только таким и никаким другим.
Есть и константы, которые нельзя забивать нулями от балды, напр., адрес I2C по дефолту - 0х07, его НЕ НАДО менять.
Чувствительности сенсоров также не стоит обнулять, а какие они по дефолту - наверняка, есть в доке.
Дальше не стал читать, некогда, сорри. Вечером.


а выходит нужно
0xF0 00 00 ff 00 ff 00 ff и так далие?

ALS писал(а):а выходит нужно
0xF0 00 00 ff 00 ff 00 ff и так далие?
Да, первые два байта в статусе должны быть F0 00.
Это значит, что скорость порта в твоей программе сейчас выставлена неправильно.
А, кстати, какая именно ?

 
 
void Bluetooth()
{
  //============================================================= Bluetooth Control ===================================================
  static byte d,e;                                             // data and error bytes
  if(Serial.available()>2)                                     // Command is 3 bytes in length
  {
    d=Serial.read();                                           // read byte from buffer
    if(d!=startbyte)                                           // if byte is not a start byte (0x0F)
    {
      lmspeed=0;                                               // bad data received
      rmspeed=0;                                               // set motor speeds to 0
      e=0;                                                     // error flag reset
    }
    else
    {
      lmspeed=(int(Serial.read())-127)*2-1;                    // good data received
      rmspeed=(int(Serial.read())-127)*2-1;                    // read values for left and right motors
    }
  }
  else                                                         // less than 3 bytes in buffer
  {
    e++;                                                       // count program loops with less than 3 bytes in buffer
    if(e>100)                                                  // assume lost signal if buffer less than 3 bytes for too long
    {
      lmspeed=0;                                               // stop left motor
      rmspeed=0;                                               // stop right motor
      e=0;                                                     // reset error counter
    }
  }
  Motors();                                                    // update motors 
}
void BluetoothConfig()                                         // This code intended for a DAGU bluetooth module - may not work with other brands
{
  long baud[]={9600,115200,57600,38400,19200,4800,2400,1200};  // try 9600 first as this is default setting then try other baud rates
  byte br=0,d;
  while(mode==0 && br<8)                                       // scan through different baud rates and attempt to configure bluetooth module
  {
    Serial.begin(baud[br]);                                    // enable T'REX serial at baud rate baud[br]
    Serial.print("AT");                                        // send "AT" to see if bluetooth module is connected
    delay(1500);                                               // wait for bluetooth module to respond
    
    if(Serial.available()>1)                                   // after 1 second the bluetooth module should respond
    {
      byte i=Serial.read();                                    // should be 79 "O"
      byte j=Serial.read();                                    // should be 75 "K"
      if(i==79 && j==75)                                       // if response is "OK" then cofigure bluetooth module
      {
        EmptyBuffer();                                         // clear buffer
        Serial.print("AT+NAMET'REX");                          // ensure name is set to "T'REX"
        delay(1500);                                           // wait for bluetooth module to respond
        EmptyBuffer();                                         // clear buffer
        Serial.print("AT+PIN1234");                            // ensure PIN is set to "1234"
        delay(1500);                                           // wait for bluetooth module to respond
        EmptyBuffer();                                         // clear buffer
        if(br!=0)                                              // if bluetooth baud rate was not 9600
        { 
          Serial.print("AT+BAUD4");                            // set bluetooth baud rate to 9600
          delay(1500);                                         // wait for bluetooth module to respond
          EmptyBuffer();                                       // clear buffer
          Serial.end();                                        // close serial communications at current baud rate
          Serial.begin(9600);                                  // set T'REX controller serial communications to 9600
        }
        mode=2;                                                // bluetooth module successfully detected and configured - change to bluetooth mode
      }        
    }
    if(mode==0)                                                // bad response - bluetooth module not communicating at current baud rate
    {
      EmptyBuffer();
      Serial.end();                                            // close serial communications at this baud rate
      br++;                                                    // prepare to try next baud rate
    }
  }
}
void EmptyBuffer()
{
  byte b;
  while(Serial.available())                                    // empty buffer once response is received
  {
    b=Serial.read();
  }
}
//=============================================================== Bluetooth AT+ commands ===========================================
/*
--------- Test Communications --------
 Send: AT            Receive: OK
 
 
 ---------- Change Baud Rate ----------
 Send: AT+BAUD1      Receive: OK1200
 Send: AT+BAUD2      Receive: OK2400
 Send: AT+BAUD3      Receive: OK4800
 Send: AT+BAUD4      Receive: OK9600
 Send: AT+BAUD5      Receive: OK19200
 Send: AT+BAUD6      Receive: OK38400
 Send: AT+BAUD7      Receive: OK57600
 Send: AT+BAUD8      Receive: OK115200
 
 
 ------------ Change Name -------------
 Send: AT+NAMEname   Receive: OKsetname
 
 
 --------- Change Pairing Code --------
 Send: AT+PIN1234    Receive: OKsetpin
 
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0