Arduino + RC
- Войдите на сайт для отправки комментариев
Втр, 30/05/2017 - 20:48
У меня есть RC HK-T6A, решил подключить к простой машинке.

Использовать можно любую аппаратуру RC.
Приемник работает как сервоконтролер, и в принципе можно использовать библиотеку SERVO, но я воспользовался командой - pulseIn
Использовал Arduino mini 168, драйвер 2А.
Вот скетч который я сделал:
/*
Пульт HobbyKing HK-T6A V2
*/
// Моторы подключаются к клеммам M1+,M1-,M2+,M2-
// Motor shield использует четыре контакта 6,5,7,4 для управления моторами
#define M21 6 //мотор 2 +
#define M11 5 //мотор 1 +
#define M20 7 //мотор 2 -
#define M10 4 //мотор 1 -
const int CH1 = A1; // вперед назад
const int CH2 = A2; // вправо влево
void setup()
{
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(CH1, INPUT);
pinMode(CH2, INPUT);
Serial.begin(9600);
}
void loop()
{
int chVal1 = 0;
int chVal2 = 0;
int ch11 = 0;//значение скорости от 0 до 254 для движения
int ch22 = 0;//значение скорости от 0 до 254 для поворота
chVal1 = pulseIn(CH2, true, 25000);
chVal2 = pulseIn(CH1, true, 25000);
// chVal1 = chVal1 / 3,7; // Округляем , значение влияет на плавность
// chVal2 = chVal2 / 3,7; // Округляем
if (chVal1 != 0 || chVal2 != 0)
{
if (chVal1 > 1550)
{
ch11=(chVal1-1550)*0.93;//результат должен быть от 0 до 254
if (ch11>254) ch11 = 254;
analogWrite(M11, ch11);
digitalWrite(M10, LOW);
}
if (chVal2 > 1550)
{
ch22=(chVal2-1550)*0.82;
if (ch22>254) ch22 = 254;
analogWrite(M21, ch22);
digitalWrite(M20, LOW);
}
if (chVal2 < 1450)
{
ch22=(chVal2-1150)*0.85;
if (ch22<0) ch22 = 0;
analogWrite(M21, ch22);
digitalWrite(M20, HIGH);
}
if (chVal1 < 1450)
{
ch11=(chVal1-1210)*1.06;
if (ch11<0) ch11 = 0;
analogWrite(M11, ch11);
digitalWrite(M10, HIGH);
}
if ((chVal1 > 1450 && chVal1 < 1550)&& (chVal2 > 1450 && chVal2 < 1550))
{
analogWrite(M11, 0);
analogWrite(M21, 0);
digitalWrite(M20, 0);
digitalWrite(M10, 0);
}
Serial.print("chVal1 = ");
Serial.print(chVal1); // Смотрим изменения значений
Serial.print(" chVal2 = ");
Serial.print(chVal2); // Смотрим изменения значений
Serial.print("ch11 = ");
Serial.print(ch11); // Смотрим изменения значений
Serial.print(" ch22 = ");
Serial.println(ch22); // Смотрим изменения значений
}
}