Por Daniel Atilio (12/11/2011)
Olá a todos que acompanham nosso blog, como já sabem, postei nossos códigos e o código do nosso MiniProjeto, hoje postarei o código fonte do nosso robôzinho, espero que aproveitem:
//..........CÓDIGO FINAL DO CARRINHO..........||
//Declaração de Variáveis
//......................:>Leds
const int ledPin_1=7; //Simboliza a variável A (sensor e motor)
const int ledPin_2=8; //Simboliza a variável B (sensor e motor)
/*Leds nos pinos 7 e 8 para melhor visão da pista para o robô*/
//......................:>Motores
//Motor A
const unsigned char Sentido1_A=5 ; //const unsigned char bloquea outros valores sem ser HIGH ou LOW
const unsigned char Sentido2_A=6 ;
//Motor B
const unsigned char Sentido1_B=9 ;
const unsigned char Sentido2_B=10 ;
/*Sentido 1 é para trás (ré), sentido 2 é para frente*/
//......................:>Sensores
//Sensor A
const unsigned char EncoderTxA=3;
const unsigned char EncoderRxA=2;
//Sensor B
const unsigned char EncoderTxB=13;
const unsigned char EncoderRxB=12;
/*Sensores, Encoder é o tipo de Sensor e Tx é o transmissor (LED) e Rx é o receptor*/
//......................:>Botao
const int buttonPin = 11; //const int pois o pino não muda
int buttonState = 0; //Vai guardar o resultado do botão (pressionado ou não / HIGH ou LOW)
//Classe para setar as entradas das variáveis, no caso INPUT (entrada de dados para arduino) e OUTPUT (saída de dados do arduino)
void setup(){
//Definição da direção do Pino
/**/pinMode(ledPin_1, OUTPUT);
/**/pinMode(ledPin_2, OUTPUT);
/**/pinMode(EncoderTxA,OUTPUT);
/**/pinMode(EncoderRxA,INPUT);
/**/pinMode(EncoderTxB,OUTPUT);
/**/pinMode(EncoderRxB,INPUT);
/**/pinMode(Sentido1_A,OUTPUT);
/**/pinMode(Sentido2_A,OUTPUT);
/**/pinMode(Sentido1_B,OUTPUT);
/**/pinMode(Sentido2_B,OUTPUT);
/**/Serial.begin(9600); //Começando o padrão serial (serve para ver a compilação em tempo real, padrão 9600 da placa Duemilanove
}
//Programa principal que vai ficar rodando na placa
void loop(){
//ligando o botão
/**/buttonState = digitalRead(buttonPin);
//se o botão estiver pressionado
/**/if(buttonState == HIGH){
/****/digitalWrite(ledPin_1,HIGH); //Ascendendo Led1
/****/digitalWrite(ledPin_2,HIGH); //Ascendendo Led2
/****/digitalWrite(EncoderTxA,HIGH); //Deixando o sensor A ligado
/****/digitalWrite(EncoderTxB,HIGH); //Deixando o sensor B ligado
/****/boolean LeituraSensorA = digitalRead(EncoderRxA);//Branco=0, vai ler o resultado do receptor A e dar a resposta, Preto =1
/****/boolean LeituraSensorB = digitalRead(EncoderRxB);//Branco=0, vai ler o resultado do receptor B e dar a resposta, Preto =1
//Se o sensor A for preto e o B for branco, só vai rodar o motor B
/****/if((LeituraSensorA==HIGH)&&(LeituraSensorB==LOW))
/****/{
/******/int y=80; //Velocidade que irá para o Servo Motor
/******/analogWrite(Sentido1_B,0);
/******/analogWrite(Sentido2_B,y);
/******/analogWrite(Sentido1_A,y);
/******/analogWrite(Sentido2_A,0);
/****/}
//Se o sensor A for branco e o B for preto, só vai rodar o motor A
/****/if((LeituraSensorA==LOW)&&(LeituraSensorB==HIGH))
/****/{
/******/int y=80;
/******/analogWrite(Sentido1_B,y);
/******/analogWrite(Sentido2_B,0);
/******/analogWrite(Sentido1_A,0);
/******/analogWrite(Sentido2_A,y);
/****/}
//Se ambos os sensores forem brancos, vai girar até encontrar uma linha preta
/****/if((LeituraSensorA==LOW)&&(LeituraSensorB==LOW))
/****/{
/******/int y=80;
/******/analogWrite(Sentido1_B,y);
/******/analogWrite(Sentido2_B,0);
/******/analogWrite(Sentido1_A,0);
/******/analogWrite(Sentido2_A,y);
/****/}
//Se ambos os sensores forem pretos, os dois motores andam
/****/if((LeituraSensorA==HIGH)&&(LeituraSensorB==HIGH))
/****/{
/******/int y=90;
//Tem que sempre colocar os 4 sentidos, mesmo setando-os em 0, pois senão a placa espera receber o parametro
/******/analogWrite(Sentido1_B,0);
/******/analogWrite(Sentido2_B,y);
/******/analogWrite(Sentido1_A,0);
/******/analogWrite(Sentido2_A,y);
/****/}
/**/}
//se o botão não estiver pressionado, deixar tudo desligado (Leds, Sensor, Motor)
/**/if(buttonState == LOW)
/**/{
/****/digitalWrite(ledPin_1,LOW);
/****/digitalWrite(ledPin_2,LOW);
/****/digitalWrite(EncoderTxA,LOW);
/****/digitalWrite(EncoderTxB,LOW);
/****/analogWrite(Sentido1_B,0);
/****/analogWrite(Sentido2_B,0);
/****/analogWrite(Sentido1_A,0);
/****/analogWrite(Sentido2_A,0);
/**/}
}
Nenhum comentário:
Postar um comentário