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//......................:>Ledsconst 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 Aconst unsigned char Sentido1_A=5 ;
//const unsigned char bloquea outros valores sem ser HIGH ou LOWconst unsigned char Sentido2_A=6 ;
//Motor Bconst unsigned char Sentido1_B=9 ;
const unsigned char Sentido2_B=10 ;
/*Sentido 1 é para trás (ré), sentido 2 é para frente*///......................:>Sensores//Sensor Aconst unsigned char EncoderTxA=3;
const unsigned char EncoderRxA=2;
//Sensor Bconst unsigned char EncoderTxB=13;
const unsigned char EncoderRxB=12;
/*Sensores, Encoder é o tipo de Sensor e Tx é o transmissor (LED) e Rx é o receptor*///......................:>Botaoconst int buttonPin = 11;
//const int pois o pino não mudaint 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 placavoid 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);
/**/}}