Фев 182013
 

Поворачивает практически на любой поверхности.

#include <SoftwareSerial.h>

#define Turn_on_off 2
#define LED 5

SoftwareSerial r_motor(4,3); // Передние моторы - ВСЕ РАБОТАЕТ
SoftwareSerial f_motor(13,12); // Задние моторы - ВСЕ РАБОТАЕТ

boolean prog_stat = false;

int pd2 = 0;

void setup()
{

pinMode(LED,OUTPUT);

f_motor.begin(115200);
r_motor.begin(115200);

stop_all();

digitalWrite(LED,HIGH); // Test
delay(300);
digitalWrite(LED,LOW);

}

/////////////////////////////////// Main Loop ///////////////////////

void loop()
{

pd2 = digitalRead(Turn_on_off);

if (pd2 == 1) {
delay(10);
while(digitalRead(Turn_on_off) == HIGH) delay(10);

prog_stat =! prog_stat;

if (prog_stat == true) {
digitalWrite(LED,HIGH);
forward(9,3000);
revers(9,3000);
stop_all();
left(9,4000); // 360
right(9,4000); // 360
stop_all();
digitalWrite(LED,LOW);
}
else {
digitalWrite(LED,LOW);
stop_all();
}
}

}

/////////////////////// Stop All //////////////////////

void stop_all( void ) {

f_motor.print("1F0\r");
delay(10);
f_motor.print("2F0\r");
delay(10);

r_motor.print("1F0\r");
delay(10);
r_motor.print("2F0\r");
delay(10);

}

//////////////////// Forward /////////////////////////

void forward( int speed, int wait ) {

f_motor.print("2F6\r");
delay(10);
f_motor.print("1F6\r");
delay(10);
r_motor.print("2F6\r");
delay(10);
r_motor.print("1F6\r");
delay(10);

delay(wait);

}

//////////////////// Revers //////////////////////


void revers( int speed, int wait ) {

f_motor.print("2R6\r");
delay(10);
f_motor.print("1R6\r");
delay(10);
r_motor.print("2R6\r");
delay(10);
r_motor.print("1R6\r");
delay(10);

delay(wait);

}

//////////////////// Left //////////////////////


void left( int speed, int wait ) {

f_motor.print("2F6\r");
delay(10);
f_motor.print("1R6\r");
delay(10);
r_motor.print("2R6\r");
delay(10);
r_motor.print("1F6\r");
delay(10);

delay(wait);

}

//////////////////// Right //////////////////////

void right( int speed, int wait ) {

f_motor.print("2R6\r");
delay(10);
f_motor.print("1F6\r");
delay(10);

r_motor.print("2F6\r");
delay(10);
r_motor.print("1R6\r");
delay(10);

delay(wait);

}
 Posted by at 22:57
Фев 142013
 

Основная концепция робота перевозить грузы двигаясь по линии. Основные компоненты:  Arduino Pro Atmega 168 16 Mhz (собственная разработка) Serial Motor Drivers — SparkFun.

bw-robot bw-robot1