Robot Semovente Line Following
Robot Semovente Line Following
Questa tipologia di robot si basa sull’inseguimento di un determinato percorso definito sul terreno
attraverso scotch, vernici ad alto contrasto rispetto al colore del terreno stesso. Viene utilizzata la
tecnologia ad infrarossi per riconoscere il percorso.
Arduino Uno;
Sensori ad infrarossi (IR) x2;
Sensore ad ultrasuoni;
Modulo controllore dei motori elettrici;
Scotch nero.
Schema Circuitale:
Sensore
ultrasuoni
Sensori IR
Codice Arduino:
#define IR_SENSOR_RIGHT 11
#define IR_SENSOR_LEFT 12
//Right motor
int enableRightMotor=6;
int rightMotorPin1=7;
int rightMotorPin2=8;
//Left motor
int enableLeftMotor=5;
int leftMotorPin1=9;
int leftMotorPin2=10;
void setup()
//The problem with TT gear motors is that, at very low pwm value it does not even rotate.
//If we increase the PWM value then it rotates faster and our robot is not controlled in that speed
and goes out of line.
//Below line is important to change the frequency of PWM signal on pin D5 and D6
//Because of this, motor runs in controlled manner (lower speed) at high PWM value.
pinMode(rightMotorPin1, OUTPUT);
pinMode(rightMotorPin2, OUTPUT);
pinMode(enableLeftMotor, OUTPUT);
pinMode(leftMotorPin1, OUTPUT);
pinMode(leftMotorPin2, OUTPUT);
pinMode(IR_SENSOR_RIGHT, INPUT);
pinMode(IR_SENSOR_LEFT, INPUT);
rotateMotor(0,0);
void loop()
rotateMotor(MOTOR_SPEED, MOTOR_SPEED);
{
rotateMotor(-MOTOR_SPEED, MOTOR_SPEED);
rotateMotor(MOTOR_SPEED, -MOTOR_SPEED);
else
rotateMotor(0, 0);
if (rightMotorSpeed < 0)
digitalWrite(rightMotorPin1,LOW);
digitalWrite(rightMotorPin2,HIGH);
digitalWrite(rightMotorPin1,HIGH);
digitalWrite(rightMotorPin2,LOW);
}
else
digitalWrite(rightMotorPin1,LOW);
digitalWrite(rightMotorPin2,LOW);
if (leftMotorSpeed < 0)
digitalWrite(leftMotorPin1,LOW);
digitalWrite(leftMotorPin2,HIGH);
digitalWrite(leftMotorPin1,HIGH);
digitalWrite(leftMotorPin2,LOW);
else
digitalWrite(leftMotorPin1,LOW);
digitalWrite(leftMotorPin2,LOW);
analogWrite(enableRightMotor, abs(rightMotorSpeed));
analogWrite(enableLeftMotor, abs(leftMotorSpeed));
Vantaggi:
Semplice;
Economico;
Non richiede manutenzione.
Svantaggi: