Академический Документы
Профессиональный Документы
Культура Документы
h>
#define MAX_DISTANCE 50
#define MOTOR_DIRECTION_FRONT 1
#define MOTOR_DIRECTION_BACK 0
#define LEFT_MOTOR 1
#define RIGHT_MOTOR 0
//valori primite
#define STOP 0
#define STRAIGHT_AHEAD 1
#define STRAIGHT_BACK 2
#define LEFT 3
#define RIGHT 4
boolean LEFT_MOTOR_DIRECTION = 1;
boolean RIGHT_MOTOR_DIRECTION = 1;
void setup() {
Serial.begin(115200);
}
void loop() {
Read_Serial();
setDirection(LAST_COMMAND_DIRECTION);
control_motors();
void Read_Serial(){
if (Serial.available()){
serialText = Serial.read();
Serial.println(serialText);
directia = serialText>>4;
viteza = serialText & 0x0F;
//setarea directiei
if(directia>=0x00 && directia<=0x04){
LAST_COMMAND_DIRECTION = directia;
Serial.println(LAST_COMMAND_DIRECTION);
}
//setarea vitezei
if(viteza>=0x00 && viteza <=0x0A){
LAST_COMMAND_SPEED = viteza;
Serial.println(LAST_COMMAND_SPEED);
LAST_COMMAND_SPEED=LAST_COMMAND_SPEED*10;
}
}
switch (dir){
case STRAIGHT_AHEAD: setMotorDirection(LEFT_MOTOR, MOTOR_DIRECTION_FRONT );
setMotorDirection(RIGHT_MOTOR, MOTOR_DIRECTION_FRONT );
setMotorPWM(LEFT_MOTOR,LAST_COMMAND_SPEED );
setMotorPWM(RIGHT_MOTOR,LAST_COMMAND_SPEED );
break;
if(motor==LEFT_MOTOR){
LEFT_MOTOR_DIRECTION = dir;
}
else{
RIGHT_MOTOR_DIRECTION = dir;
}
}
if(motor==LEFT_MOTOR){
LEFT_MOTOR_PWM = pwm;
}
else{
RIGHT_MOTOR_PWM = pwm;
}
void control_motors(){
int sp1;
int sp2;
if(LEFT_MOTOR_DIRECTION == MOTOR_DIRECTION_FRONT){
sp1= map(LEFT_MOTOR_PWM,0 ,100,0,400);
}
if(RIGHT_MOTOR_DIRECTION == MOTOR_DIRECTION_FRONT){
sp2= map(RIGHT_MOTOR_PWM,0 ,100,0,400);
}
if(LEFT_MOTOR_DIRECTION == MOTOR_DIRECTION_BACK){
sp1 = map(LEFT_MOTOR_PWM,0 ,100,0,-400);
}
if(RIGHT_MOTOR_DIRECTION == MOTOR_DIRECTION_BACK){
sp2 = map(RIGHT_MOTOR_PWM,0 ,100,0,-400);
}
motors.setM1Speed(sp1);
motors.setM2Speed(sp2);
}