Código do robô
Autor: Jean Carlos de Araujo | Publicado: 2011-06-15T12:40:00-07:00

Iremos dividir o código abaixo em funções para que fique melhor organizado. O código abaixo foi testado e funciona perfeitamente:

/*
Atenção para que o robô possa funcionar corretamente as seguintes regras devem valer:

&nbsp;1. Se fótoscópio norte é o 1 (ligado na serial 0) servo do norte é o 2 (ligado na digital pwm 5);
&nbsp;2. Se fótoscópio sul é o 2 (ligado na serial 1) servo do sul é o 1 (ligado na digital pwm 3);
&nbsp;3. Se fótoscópio leste é o 3 (ligado na serial 3) servo do leste é o 4 (ligado na digital pwm 9);
&nbsp;4. Se fótoscópio oeste é o 4 (ligado na serial 4) servo do oeste é o 3 (ligado na digital pwm 6);
*/

#include &lt;Servo.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Esta biblioteca contem as operações para manuseio e reconhecimento dos servos
Servo servo[4];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Cria um vetor do tipo servo para os 4 servos (o tipo servo é tipo importado da biblioteca servo.h)

//cria constantes inteiras relativas as portas de entrada analógicas
const int pinLDRtower1 = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //pino do fótoscópio 1 na porta 0, etc...
const int pinLDRtower2 = 1;
const int pinLDRtower3 = 2;
const int pinLDRtower4 = 3;

//criação das variáveis
int LDRtower[5];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //variável do tipo número inteiro que irá receber a tensão do circuito do fotoscópio
int sensibilidade = 390;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //variável do tipo número inteiro indicando a quantidade mínima de bits recebidos pela porta analógica quando ha presença e luz
int contador;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //variável do tipo número inteiro que servirá de contador. Será usado para comparar qual fótoscópio recebeu sinal maior
int daVez;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //variável que irá definir qual fótoscópio o robô tem que seguir (qual é o da vez)
int fonteLuzDetectada;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //variável do tipo número inteiro que servirá de semáforo para dar inicio aos movimentos do robô caso haja uma fonte emisora de fótons

void setup(){
&nbsp; //mostrar para o CI onde estão ligados os Servos
&nbsp; servo[0].attach(3); //servo 0 corresponde ao primeiro servo ligado na porta 3, assim por diante...
&nbsp; servo[1].attach(5);
&nbsp; servo[2].attach(6);
&nbsp; servo[3].attach(9);

&nbsp; //inicializo cada valor do vetor que recebe os valores do fótoscópio com 0
&nbsp; for(contador = 1; contador &lt; 5; contador++){
&nbsp;&nbsp;&nbsp; LDRtower[contador] = 0;
&nbsp; }

&nbsp; //inicializo o funcionamento da porta serial com leitura 9600bps (bps = bites por segundo)
&nbsp; Serial.begin(9600);
}

void zerarVarDeControle(int daVez, int fonteLuzDetectada){
&nbsp; //zerar as variáveis que iram definir qual lado o robô deve seguir
&nbsp; daVez = 0;
&nbsp; fonteLuzDetectada = 0;
}

void receberLeiturasAssociandoFotoscopioaPino(int LDRtower[4], int pinLDRtower1, int pinLDRtower2, int pinLDRtower3, int pinLDRtower4){
&nbsp; //faz com que cada valor do vetor de fótoscopios receba as medidas de suas respectivas portas
&nbsp; LDRtower[1] = analogRead(pinLDRtower1); //A torre do LDR 1 recebe os valores da porta analógica 0 (pinLDRtower1), e assim por diante...
&nbsp; LDRtower[2] = analogRead(pinLDRtower2);
&nbsp; LDRtower[3] = analogRead(pinLDRtower3);
&nbsp; LDRtower[4] = analogRead(pinLDRtower4);
}

void funcaoDeixarRobodePe(Servo servo[4]){
&nbsp; //deixa o robô em pé colocando todos os servos num angulo de 90º
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
}

int verificaRecepcaoLuminosa(int contador, int LDRtower[4], int sensibilidade, int fonteLuzDetectada){
&nbsp; //verifica se algum fotoscopio recebeu sinal luminoso
&nbsp; for (contador = 1; contador &lt; 5; contador++){
&nbsp;&nbsp;&nbsp; if (LDRtower[contador] &gt; sensibilidade) fonteLuzDetectada = 1;
&nbsp; }
&nbsp; return(fonteLuzDetectada);
}

int achaMaior(int daVez, int contador, int LDRtower[4]){
&nbsp; //verifica qual fotoscopio recebeu sinal maior e taxa-o como daVez
&nbsp; daVez = 1;
&nbsp; for (contador = 2; contador &lt; 5; contador++) if (LDRtower[daVez] &lt; LDRtower[contador]) daVez = contador;
&nbsp; return(daVez);
}

void irEmDirecaoAoFotoscopio1(Servo servo[4]){
&nbsp; //movimento de sincrono que inicia a movimentação do robô em direção ao fotoscopio 1:
&nbsp; 
&nbsp; //deita uma perna
&nbsp; servo[0].write(45);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; servo[0].write(0);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; //deita a outra
&nbsp; servo[0].write(0);
&nbsp; servo[1].write(135);
&nbsp; servo[2].write(135);
&nbsp; servo[3].write(135);
&nbsp; delay(500);

&nbsp; servo[0].write(0);
&nbsp; servo[1].write(180);
&nbsp; servo[2].write(180);
&nbsp; servo[3].write(180);
&nbsp; delay(100);

&nbsp; //pula!
&nbsp; servo[0].write(180);
&nbsp; servo[1].write(0);
&nbsp; servo[2].write(180);
&nbsp; servo[3].write(180);
&nbsp; delay(500);

&nbsp; //levanta uma perna
&nbsp; servo[0].write(135);
&nbsp; servo[1].write(0);
&nbsp; servo[2].write(135);
&nbsp; servo[3].write(135);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(0);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; //levanta a outra
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(45);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);
}

void irEmDirecaoAoFotoscopio2(Servo servo[4]){
&nbsp; //movimento de sincrono que inicia a movimentação do robô em direção ao fotoscopio 2:
&nbsp; 
&nbsp; //deita uma perna
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(45);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(0);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; //deita a outra
&nbsp; servo[0].write(135);
&nbsp; servo[1].write(0);
&nbsp; servo[2].write(135);
&nbsp; servo[3].write(135);
&nbsp; delay(500);

&nbsp; servo[0].write(180);
&nbsp; servo[1].write(0);
&nbsp; servo[2].write(180);
&nbsp; servo[3].write(180);
&nbsp; delay(100);

&nbsp; //pula!
&nbsp; servo[0].write(0);
&nbsp; servo[1].write(180);
&nbsp; servo[2].write(180);
&nbsp; servo[3].write(180);
&nbsp; delay(500);

&nbsp; //levanta uma perna
&nbsp; servo[0].write(0);
&nbsp; servo[1].write(135);
&nbsp; servo[2].write(135);
&nbsp; servo[3].write(135);
&nbsp; delay(500);

&nbsp; servo[0].write(0);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; //levanta a outra
&nbsp; servo[0].write(45);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);
}

void irEmDirecaoAoFotoscopio3(Servo servo[4]){
&nbsp; //movimento de sincrono que inicia a movimentação do robô em direção ao fotoscopio 3:
&nbsp; 
&nbsp; //deita uma perna
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(45);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(0);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; //deita a outra
&nbsp; servo[0].write(135);
&nbsp; servo[1].write(135);
&nbsp; servo[2].write(0);
&nbsp; servo[3].write(135);
&nbsp; delay(500);

&nbsp; servo[0].write(180);
&nbsp; servo[1].write(180);
&nbsp; servo[2].write(0);
&nbsp; servo[3].write(180);
&nbsp; delay(100);

&nbsp; //pula!
&nbsp; servo[0].write(180);
&nbsp; servo[1].write(180);
&nbsp; servo[2].write(180);
&nbsp; servo[3].write(0);
&nbsp; delay(500);

&nbsp; //levanta uma perna
&nbsp; servo[0].write(135);
&nbsp; servo[1].write(135);
&nbsp; servo[2].write(135);
&nbsp; servo[3].write(0);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(0);
&nbsp; delay(500);

&nbsp; //levanta a outra
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(45);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);
}

void irEmDirecaoAoFotoscopio4(Servo servo[4]){
&nbsp; //movimento de sincrono que inicia a movimentação do robô em direção ao fotoscopio 4:
&nbsp; 
&nbsp; //deita uma perna
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(45);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(0);
&nbsp; delay(500);

&nbsp; //deita a outra
&nbsp; servo[0].write(135);
&nbsp; servo[1].write(135);
&nbsp; servo[2].write(135);
&nbsp; servo[3].write(0);
&nbsp; delay(500);

&nbsp; servo[0].write(180);
&nbsp; servo[1].write(180);
&nbsp; servo[2].write(180);
&nbsp; servo[3].write(0);
&nbsp; delay(100);

&nbsp; //pula!
&nbsp; servo[0].write(180);
&nbsp; servo[1].write(180);
&nbsp; servo[2].write(0);
&nbsp; servo[3].write(180);
&nbsp; delay(500);

&nbsp; //levanta uma perna
&nbsp; servo[0].write(135);
&nbsp; servo[1].write(135);
&nbsp; servo[2].write(0);
&nbsp; servo[3].write(135);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(0);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; //levanta a outra
&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(45);
&nbsp; servo[3].write(90);
&nbsp; delay(500);

&nbsp; servo[0].write(90);
&nbsp; servo[1].write(90);
&nbsp; servo[2].write(90);
&nbsp; servo[3].write(90);
&nbsp; delay(500);
}

//função padrão do Arduino, pode ser interpretada como principal, e fica em constante loop
void loop(){
&nbsp; //zerar as variáveis que iram definir qual lado o robô deve seguir
&nbsp; zerarVarDeControle(daVez, fonteLuzDetectada);

&nbsp; //faz com que cada valor do vetor de fótoscopios receba as medidas de suas respectivas portas
&nbsp; receberLeiturasAssociandoFotoscopioaPino(LDRtower, pinLDRtower1, pinLDRtower2, pinLDRtower3, pinLDRtower4);

&nbsp; //deixa o robô em pé colocando todos os servos num angulo de 90º
&nbsp; funcaoDeixarRobodePe(servo);

&nbsp; //verifica se algum fótoscópio recebeu o sinal luminoso
&nbsp; fonteLuzDetectada = verificaRecepcaoLuminosa(contador, LDRtower, sensibilidade, fonteLuzDetectada);

&nbsp; //se recebeu quem recebeu o sinal maior
&nbsp; if (fonteLuzDetectada == 1){
&nbsp;&nbsp;&nbsp; daVez = achaMaior(daVez, contador, LDRtower);
&nbsp;&nbsp;&nbsp; //uma vez que se sabe qual é o maior sinal luminoso de acordo com a variável daVez, executa-se seu respectivo movimento de acordo com o valor de daVez.
&nbsp;&nbsp;&nbsp; switch (daVez) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1:&nbsp;&nbsp;&nbsp; //verifica se o fotoscópio da vez é o 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(daVez == 1){&nbsp;&nbsp;&nbsp; //executa as funções abaixo até que o daVez não seja mais o 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz o robô andar em direção da luz recebida pelo fótoscópio 1 até que ela suma ou outro fótoscópio receba luminosidade maior
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; irEmDirecaoAoFotoscopio1(servo);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //zerar as variáveis que iram definir qual lado o robô deve seguir
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zerarVarDeControle(daVez, fonteLuzDetectada);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz com que cada valor do vetor de fótoscopios receba as medidas de suas respectivas portas
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; receberLeiturasAssociandoFotoscopioaPino(LDRtower, pinLDRtower1, pinLDRtower2, pinLDRtower3, pinLDRtower4);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica se algum fótoscópio recebeu o sinal luminoso
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fonteLuzDetectada = verificaRecepcaoLuminosa(contador, LDRtower, sensibilidade, fonteLuzDetectada);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica qual fotoscopio recebeu sinal maior no case de deteccao de luz
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fonteLuzDetectada == 1){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daVez = achaMaior(daVez, contador, LDRtower);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2:&nbsp;&nbsp;&nbsp; //verifica se o fotoscópio da vez é o 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(daVez == 2){&nbsp;&nbsp;&nbsp; //executa as funções abaixo até que o daVez não seja mais o 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz o robô andar em direção da luz recebida pelo fótoscópio 2 até que ela suma ou outro fótoscópio receba luz maior
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; irEmDirecaoAoFotoscopio2(servo);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //zerar as variáveis que iram definir qual lado o robô deve seguir
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zerarVarDeControle(daVez, fonteLuzDetectada);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz com que cada valor do vetor de fótoscopios receba as medidas de suas respectivas portas
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; receberLeiturasAssociandoFotoscopioaPino(LDRtower, pinLDRtower1, pinLDRtower2, pinLDRtower3, pinLDRtower4);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica se algum fótoscópio recebeu o sinal luminoso
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fonteLuzDetectada = verificaRecepcaoLuminosa(contador, LDRtower, sensibilidade, fonteLuzDetectada);
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica qual fotoscopio recebeu sinal maior no case de deteccao de luz
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fonteLuzDetectada == 1){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daVez = achaMaior(daVez, contador, LDRtower);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3: //verifica se o fotoscópio da vez é o 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(daVez == 3){&nbsp;&nbsp;&nbsp; //executa as funções abaixo até que o daVez não seja mais o 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz o robô andar em direção da luz recebida pelo fótoscópio 3 até que ela suma ou outro fótoscópio receba luminosidade maior
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; irEmDirecaoAoFotoscopio3(servo);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //zerar as variáveis que iram definir qual lado o robô deve seguir
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zerarVarDeControle(daVez, fonteLuzDetectada);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz com que cada valor do vetor de fótoscopios receba as medidas de suas respectivas portas
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; receberLeiturasAssociandoFotoscopioaPino(LDRtower, pinLDRtower1, pinLDRtower2, pinLDRtower3, pinLDRtower4);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica se algum fótoscópio recebeu o sinal luminoso
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fonteLuzDetectada = verificaRecepcaoLuminosa(contador, LDRtower, sensibilidade, fonteLuzDetectada);
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica qual fotoscopio recebeu sinal maior no case de deteccao de luz
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fonteLuzDetectada == 1){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daVez = achaMaior(daVez, contador, LDRtower);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4: //verifica se o fotoscópio da vez é o 4
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(daVez == 4){ //executa as funções abaixo até que o daVez não seja mais o 4
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz o robô andar em direção da luz recebida pelo fótoscópio 4 até que ela suma ou outro fótoscópio receba luz maior
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; irEmDirecaoAoFotoscopio1(servo);
&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //zerar as variáveis que iram definir qual lado o robô deve seguir
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zerarVarDeControle(daVez, fonteLuzDetectada);
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //faz com que cada valor do vetor de fótoscopios receba as medidas de suas respectivas portas
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; receberLeiturasAssociandoFotoscopioaPino(LDRtower, pinLDRtower1, pinLDRtower2, pinLDRtower3, pinLDRtower4);
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica se algum fótoscópio recebeu o sinal luminoso
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fonteLuzDetectada = verificaRecepcaoLuminosa(contador, LDRtower, sensibilidade, fonteLuzDetectada);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verifica qual fotoscopio recebeu sinal maior no case de deteccao de luz
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fonteLuzDetectada == 1){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daVez = achaMaior(daVez, contador, LDRtower);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp; default:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //se nada acontecer deixa o robô de pé escrevendo um angulo de 90º em todos os servos
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; funcaoDeixarRobodePe(servo);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; delay(180); //tempo em microssegundos que a aplicação é repedida
&nbsp; }
}