Всем привет. Вот начал сборку робота.

Было куплено шасси и ардуино с моторшилдом 2 версии.
На шасси установлен LiPo аккумулятор 7.4v, dc-dc преобразователь с 7.4 до 5 вольт, с целью подключения роутера по uart. Ардуино питается от 7.4в. Потом для удобства зарядки аккумулятора я распаял разъем rs232 под зарядник. Все работает, батарейка заряжается.

Собрана голова робота со светодиодными индикаторами (игрушка короче). Подключал к ардуине и мигал глазами.
Сейчас контроллер прошит вот этим кодом. Все ездит.
PHP код:
/*******************************************************************************
* ROBOT
* Filename : MyRobot01.pde
********************************************************************************/
#include <AFMotor.h> // подключили библиотеку для работы с ДПТ и ШД
AF_DCMotor Motor3(3, MOTOR12_1KHZ); // используем 1-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
AF_DCMotor Motor4(4, MOTOR12_1KHZ); // используем 2-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
int dalnomer = 4; // дальномер
int gp2;
float distance;
// -----------------------------------------------------------------
void setup(){
Motor3.setSpeed(200); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(200); // устанавливаем скорость вращения двигателя на 2-м порту
} // end setup
// -----------------------------------------------------------------
// О С Н О В Н О Й Ц И К Л П Р О Г Р А М М Ы
void loop(){
Go();
}
// -----------------------------------------------------------------
// -----------------------------------------------------------------
void Go() { // БЛУЖДАЮЩИЙ ЦИКЛ // зациклить с условием while
gp2=analogRead(dalnomer);
distance=(2914/(gp2+5))-1; // Перевод в сантиметры
do
{
Forward (250); delay(2000);
Spin_Left(); delay(2000);
Forward(200); delay(2000);
Spin_Right(); delay(2000);
Backward (150); delay(2000);
} while (distance > 6);
Stop (); delay (1000);
Backward (250); delay (2000);
Spin_Right(); delay(2000);
} // end loop
// ПОДПРОГРАММЫ ДВИЖЕНИЙ
// -----------------------------------------------------------------
void Forward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
} // end Forward
void Backward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(BACKWARD); // 1-й моторчик назад крутится
Motor4.run(BACKWARD); // 2-й моторчик назад крутится
} // end Forward
void Release (){ // выбег с остановом
Motor3.run(RELEASE);
Motor4.run(RELEASE);
} // end Release
void Stop (){ // останов
Motor3.run(BRAKE);
Motor4.run(BRAKE);
} // end Stop
void Spin_Right (){ // поворот влево
Motor3.setSpeed(500); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
} // end Spin_Right
void Spin_Left (){ // поворот влево
Motor3.setSpeed(500);// устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
Motor3.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
} // end Spin_Left
// -----------------------------------------------------------------
Сейчас подключил роутер. Связь есть, порт ардуины видно ttyUSB, светодиоды rx-tx при нажатии клавиш на компе моргают. Но оно не едет!
Программа выглядит так
PHP код:
#include <CyberLib.h>
#include <AFMotor.h>
//#define motors_init {D8_Out; D9_Out; D10_Out; D11_Out;}
//#define robot_go {D8_Low; D9_High; D10_High; D11_Low;}
//#define robot_back {D8_High; D9_Low; D10_Low; D11_High;}
//#define robot_stop {D8_Low; D9_Low; D10_Low; D11_Low;}
//#define robot_rotation_left {D8_Low; D9_High; D10_Low; D11_High;}
//#define robot_rotation_right {D8_High; D9_Low; D10_High; D11_Low;}
AF_DCMotor Motor3(3, MOTOR12_1KHZ); // используем 1-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
AF_DCMotor Motor4(4, MOTOR12_1KHZ); // используем 2-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
uint8_t inByte;
void setup()
{
Motor3.setSpeed(200); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(200); // устанавливаем скорость вращения двигателя на 2-м порту
//motors_init; //инициализация выходов моторов
D11_Out; D11_Low; //динамик
randomSeed(A6_Read); //Получить случайное значение
for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение готовности робота
UART_Init(57600);//инициализация порта для связи с роутером
wdt_enable (WDTO_500MS); //Сторожевая собака 0,5сек.
}
void loop()
{
if (UART_ReadByte(inByte)) //если что то пришло
{
switch (inByte) //смотрим какая команда пришла
{
case 'x': //стор
Stop;
break;
case 'W': //вперед
Forward;
break;
case 'D': //лево
Spin_Right;
break;
case 'A': //право
Spin_Left;
break;
case 'S': //назад
Backward;
break;
}
}
wdt_reset(); //покормить собаку
}
// ПОДПРОГРАММЫ ДВИЖЕНИЙ
// -----------------------------------------------------------------
void Forward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
} // end Forward
void Backward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(BACKWARD); // 1-й моторчик назад крутится
Motor4.run(BACKWARD); // 2-й моторчик назад крутится
} // end Forward
void Release (){ // выбег с остановом
Motor3.run(RELEASE);
Motor4.run(RELEASE);
} // end Release
void Stop (){ // останов
Motor3.run(BRAKE);
Motor4.run(BRAKE);
} // end Stop
void Spin_Right (){ // поворот влево
Motor3.setSpeed(500); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
} // end Spin_Right
void Spin_Left (){ // поворот влево
Motor3.setSpeed(500);// устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
Motor3.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
} // end Spin_Left
// -----------------------------------------------------------------
Помогите, пожалуйста. Что не так? Очень хочу закончить проект.