Машина на arduino
Добрый день.
А чем отличаются в управлении регулятор хода и сервопривод?
Добрый. Основная проблема с тормозом и задним ходом, дать понять ардуино как правильно управлять этим эллементом
Добрый. Основная проблема с тормозом и задним ходом, дать понять ардуино как правильно управлять этим эллементом
Центр сервы (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;
}
Musgravehill
Очень интересно, большое спасибо. Вечером буду пробовать
При тесте вместо регулятора удобно использовать серву, чтобы не гонять мотор, а просто смотреть на положение качалки.
Для быстро собрать есть готовая оболочка: remotexy.com/ru/
Ребенок делает лего игрушки, я ему сделал модуль на ардуинке:
Добрый день.
А чем отличаются в управлении регулятор хода и сервопривод?
На многих регуляторах задний ход включается после тормоза. То есть вначале надо затормозить, а после уже ехать назад. Это сделано для сохранения трансмиссии. Если регулятор можно настраивать, то можно поставить режим вперед/назад без тормоза.