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