Машина на arduino

NBystrov

Доброго времени суток!
И так, будучи в творческом настроении духа, моя душа решила начать творить и под руку мне попались следующие ингридиенты:
Машина на радиоуправлении с бк мотором и классической сервой
Arduino nano и модуль bluetooth hc-06
Так вот, решил я сделать управление этой машинкой через свой смартфон на андройд. Только вот беда, “интузиазм” есть, а опыта работы на ардуино - ноль
Есть у нас на сайте люди которые “могут” и хотят помочь написать скетч или хотя бы подсказать.
Нашел много инфы на просторах интеренета, но дальше чем просто управлять сервой продвинуться не могу, ибо правильно управлять регулятором просто так не получится.
Есть тут сведующие в этих делах?

l1511

Добрый день.
А чем отличаются в управлении регулятор хода и сервопривод?

NBystrov
l1511:

Добрый день.
А чем отличаются в управлении регулятор хода и сервопривод?

Добрый. Основная проблема с тормозом и задним ходом, дать понять ардуино как правильно управлять этим эллементом

Musgravehill
NBystrov:

Добрый. Основная проблема с тормозом и задним ходом, дать понять ардуино как правильно управлять этим эллементом

Центр сервы (1500) = тормоз регулятора.
Полное отклонение сервы назад (0) = полный газ назад.
Полное отклонение сервы вперед (2000) = полный газ вперед.

Вот парсер serial для такой строки
var0,var1,var2,var3.var0,var1,var2,var3.var0,var1,var2,var3.
Переменные через зпт, окончание - тчк.


#include <string.h> // we'll need this for subString
#include <SoftwareSerial.h>
SoftwareSerial MODEM_serial(7, 8); // RX, TX

const char EOPmarker = '.'; //This is the end of packet marker
char serialbuf[32]; //This gives the incoming serial some room. Change it if you want a longer incoming.
#define MAX_STRING_LEN 20 // like 3 lines above, change as needed.



if (MODEM_serial.available() > 0) { //makes sure something is ready to be read
    static int bufpos = 0; //starts the buffer back at the first position in the incoming serial.read
    char inchar = MODEM_serial.read(); //assigns one byte (as serial.read()'s only input one byte at a time
    if (inchar != EOPmarker) { //if the incoming character is not the byte that is the incoming package ender
      serialbuf[bufpos] = inchar; //the buffer position in the array get assigned to the current read
      bufpos++; //once that has happend the buffer advances, doing this over and over again until the end of package marker is read.
    }
    else { //once the end of package marker has been read
      serialbuf[bufpos] = 0; //restart the buff
      bufpos = 0; //restart the position of the buff

      motionDetection_raw = atoi(subStr(serialbuf, ",", 1));
      accel_X_raw = atoi(subStr(serialbuf, ",", 2));
      accel_Y_raw = atoi(subStr(serialbuf, ",", 3));
      accel_Z_raw = atoi(subStr(serialbuf, ",", 4));

      Serial.println();
      Serial.print("md=");
      Serial.print(motionDetection_raw, DEC);
      Serial.print(" x=");
      Serial.print(accel_X_raw, DEC);
      Serial.print(" y=");
      Serial.print(accel_Y_raw, DEC);
      Serial.print(" z=");
      Serial.print(accel_Z_raw, DEC);
      Serial.println();







    }
  }

Спец.функция в главном скетче:


char* subStr (char* input_string, char *separator, int segment_number) {
  char *act, *sub, *ptr;
  static char copy[MAX_STRING_LEN];
  int i;
  strcpy(copy, input_string);
  for (i = 1, act = copy; i <= segment_number; i++, act = NULL) {
    sub = strtok_r(act, separator, &ptr);
    if (sub == NULL) break;
  }
  return sub;
}
NBystrov

Musgravehill
Очень интересно, большое спасибо. Вечером буду пробовать

Musgravehill

При тесте вместо регулятора удобно использовать серву, чтобы не гонять мотор, а просто смотреть на положение качалки.

AlexeyOleynikov

Для быстро собрать есть готовая оболочка: remotexy.com/ru/
Ребенок делает лего игрушки, я ему сделал модуль на ардуинке:

kabuum
l1511:

Добрый день.
А чем отличаются в управлении регулятор хода и сервопривод?

На многих регуляторах задний ход включается после тормоза. То есть вначале надо затормозить, а после уже ехать назад. Это сделано для сохранения трансмиссии. Если регулятор можно настраивать, то можно поставить режим вперед/назад без тормоза.