sexta-feira, setembro 11, 2015

ROBÔ SEGUIDOR DE LINHA

A primeira parte do projeto ROBÓTICA NA ESCOLA foi superada com os robôs seguidores de linha em funcionamento e com pistas adequadas. Os sketchs com a programação para os dois robôs seguidores de linha – um para a faixa branca e outro para a faixa preta – se encontram abaixo, logo após o vídeo produzido com a equipe e com os robôs em funcionamento. Objetivo agora é acrescentar funcionalidades a partir de novos sensores, tanto nos robôs como na pista, para que, na Feira de Ciências em outubro, o projeto socialize o conhecimento adquirido.


SKETCH PARA SEGUIDOR DE FAIXA PRETA(RBPV1)



/*
************************************************
PROJETO ROBÓTICA NA ESCOLA 2015  
        ROBÔ SEGUIDOR DE LINHA 1          
        EE DR PEDRO VELHO – RN/BR        
************************************************
*/
#include <Servo.h> 
Servo ServoD;
Servo ServoE;
int sensorD = A2;
int sensorE = A1;
int valorSensordir = 0;
int valorSensoresq = 0; 
int valorCorte = 500;
void setup()
{
//Serial.begin(9600);
ServoD.attach(5);  
ServoE.attach(6);
}
 void loop()
{
valorSensordir = analogRead(sensorD);   
valorSensoresq = analogRead(sensorE);   
//ROTINA PARA SEGUIR LINHA PRETA
//Sensores dir e esq na linha preta
if((valorSensordir >= valorCorte) && (valorSensoresq >= valorCorte))
{   
 ServoD.write(60);    
 ServoE.write(120); 
}
//Rotina para sensores no amarelo
//Sensor dir no amarelo - desvio para esq
if((valorSensordir < valorCorte ) && (valorSensoresq >= valorCorte))
{  
 ServoD.write(60);   
 ServoE.write(90);
//Sensor esq no amarelo - desvio para dir
if((valorSensoresq < valorCorte) && (valorSensordir >= valorCorte))
{
 ServoD.write(90);   
 ServoE.write(120);
//Os dois sensores no amarelo
if((valorSensordir < valorCorte) && (valorSensoresq < valorCorte))
{
ServoD.write(80);                                            
ServoE.write(90);
delay(50);
}
}

//FIM DO SKETCH

SKETCH PARA SEGUIDOR DE FAIXA BRANCA(RBPV2)


 /*
***********************************************
PROJETO ROBÓTICA NA ESCOLA 2015
        ROBÔ SEGUIDOR DE LINHA 2      
        EE DR PEDRO VELHO – RN/BR     
***********************************************
*/
int C1=5;
int C2=6;
int M1=4;
int M2=7;
int sensMeio=A2;
int sensDir=A1;
int sensEsq=A3;
int valorCorte=850;
int velocidade=220;
int valorlinhaMeio=0;
int valorlinhaDir=0;
int valorlinhaEsq=0;
void setup()
{
int i= 0;
Serial.begin(9600);
for (i=4; i<=7; i++)
{
pinMode(i,OUTPUT);
}
}
void loop()
{
  valorlinhaMeio=analogRead(sensMeio);
  valorlinhaDir=analogRead(sensDir);
  valorlinhaEsq=analogRead(sensEsq);

//ROTINA PARA SEGUIR LINHA BRANCA
//Sensores na linha branca
if ((valorlinhaEsq < valorCorte) && (valorlinhaMeio < valorCorte) && (valorlinhaDir < valorCorte))
  {
   analogWrite (C1,velocidade);
   analogWrite(C2,velocidade);
   digitalWrite(M1,LOW);
   digitalWrite(M2,LOW);
   }
//sensor esq fora - desvio à dir
if((valorlinhaEsq > valorCorte) && (valorlinhaMeio < valorCorte) && (valorlinhaDir < valorCorte))
   {
   analogWrite (C1,velocidade);
   analogWrite(C2,velocidade);
   digitalWrite(M1,HIGH);
   digitalWrite(M2,LOW);
   }
 //sensor dir fora – desvio à esq
if((valorlinhaEsq < valorCorte) && (valorlinhaMeio < valorCorte) && (valorlinhaDir > valorCorte))
   {
   analogWrite (C1,velocidade);
   analogWrite(C2,velocidade);
   digitalWrite(M1,LOW);
   digitalWrite(M2,HIGH);
   }
  //dois sensores fora da linha
 //desvio à dir
if((valorlinhaEsq > valorCorte) && (valorlinhaMeio > valorCorte) && (valorlinhaDir < valorCorte))
   {
   analogWrite (C1,velocidade);
   analogWrite(C2,velocidade);
   digitalWrite(M1,HIGH);
   digitalWrite(M2,LOW);
   }
 //desvio à esq
if((valorlinhaEsq < valorCorte) && (valorlinhaMeio > valorCorte) && (valorlinhaDir > valorCorte))
   {
   analogWrite (C1,velocidade);
   analogWrite(C2,velocidade);
   digitalWrite(M1,LOW);
   digitalWrite(M2,HIGH);
   }
}
//FIM DO SKETCH

Nenhum comentário:

Postar um comentário