- Componentes: 2 Motores + 2 sensores de reconhecimento de cor + Placa Arduíno + Fios.
- Descrição: Na frente do carro temos dois sensores de luz, o carro vai identificar a intensidade luminosa que esta em baixo dele, a partir desses dados é feito um calculo para determinar as propriedades da superfície que ele se encontra, a cor, textura, ate mesmo uma linha preta no chão desde que o chão seja totalmente branco, ou pode seguir uma linha branca desde que o chão seja totalmente preto.
Código => SEGUIDOR DE LINHA REVERSO.
Código para robô segue linha reverso traciona o motor
de acordo com o curva assim ele reverte o polo
para dar o angulo de curvatura.
int PortPin2 = 2; // Motor 1
int PortPin3 = 3; // Motor 1
int PortPin4 = 4; // Motor 2
int PortPin5 = 5; // Motor 2
int Inp_sensor_dir = 8;
int Inp_sensor_esq = 9;
void setup(){
pinMode(PortPin2, OUTPUT);
pinMode(PortPin3, OUTPUT);
pinMode(PortPin4, OUTPUT);
pinMode(PortPin5, OUTPUT);
pinMode(Inp_sensor_dir, INPUT);
pinMode(Inp_sensor_esq, INPUT);
}
void loop(){
drive_frente();
if((digitalRead(Inp_sensor_dir)) == HIGH){
drive_esquerda();
delay(50);
}
drive_frente();
if((digitalRead(Inp_sensor_esq))== HIGH){
drive_direita();
delay(50);
}
drive_frente();
}
void drive_esquerda(){ //função drive_esquerda
digitalWrite(PortPin2, LOW); //Motor 1
digitalWrite(PortPin4, LOW); //Motor 2
digitalWrite(PortPin3, HIGH); //Motor 1
digitalWrite(PortPin5, HIGH); //Motor 2
}
void drive_direita(){ //função drive_direita
digitalWrite(PortPin2, HIGH); //Motor 1
digitalWrite(PortPin4, HIGH); //Motor 2
digitalWrite(PortPin3, LOW); //Motor 1
digitalWrite(PortPin5, LOW); //Motor 2
}
void drive_frente(){ //função drive_frente
digitalWrite(PortPin2, LOW); //Motor 1
digitalWrite(PortPin3, HIGH); //Motor 1
digitalWrite(PortPin4, HIGH); //Motor 2
digitalWrite(PortPin5, LOW); //Motor 2
}
Codigo => SEGUIDOR DE LINHA DESLIGA.
Código para robô segue linha com deligamento
de um dos motor, para não dar o efeito de travamento.
int PortPin2 = 2; // Motor 1
int PortPin3 = 3; // Motor 1
int PortPin4 = 4; // Motor 2
int PortPin5 = 5; // Motor 2
int Inp_sensor_dir = 8;
int Inp_sensor_esq = 9;
void setup(){
pinMode(PortPin2, OUTPUT);
pinMode(PortPin3, OUTPUT);
pinMode(PortPin4, OUTPUT);
pinMode(PortPin5, OUTPUT);
pinMode(Inp_sensor_dir, INPUT);
pinMode(Inp_sensor_esq, INPUT);
}
void loop(){
drive_frente();
if((digitalRead(Inp_sensor_dir)) == HIGH){
drive_esquerda();
delay(200);
}
drive_frente();
if((digitalRead(Inp_sensor_esq))== HIGH){
drive_direita();
delay(200);
}
drive_frente();
}
void drive_esquerda(){ //função drive_esquerda
//digitalWrite(PortPin2, LOW); //Motor 1
digitalWrite(PortPin4, LOW); //Motor 2
//digitalWrite(PortPin3, LOW); //Motor 1
digitalWrite(PortPin5, LOW); //Motor 2
}
void drive_direita(){ //função drive_direita
digitalWrite(PortPin2, LOW); //Motor 1
//digitalWrite(PortPin4, HIGH); //Motor 2
digitalWrite(PortPin3, LOW); //Motor 1
//digitalWrite(PortPin5, LOW); //Motor 2
}
void drive_frente(){ //função drive_frente
digitalWrite(PortPin2, LOW); //Motor 1
digitalWrite(PortPin3, HIGH); //Motor 1
digitalWrite(PortPin4, HIGH); //Motor 2
digitalWrite(PortPin5, LOW); //Motor 2
}
Quais são esses motores?
ResponderExcluir