/* Altere os valores das portas em "#define" para as portas
que estiverem em uso no projeto.
*/
//Portas Leitura de controle
#define CMF A0 //Comando Frente
#define CMB A1 //Comando Ré
#define CMD A2 //Comando Direita
#define CME A3 //Comando Esquerda
//Portas de controle de motores
#define MA1 2 //Controle Porta A do motor 1
#define MB1 3 //Controle Porta B do motor 1
#define MA2 4 //Controle Porta A do motor 2
#define MB2 5 //Controle Porta B do motor 2
int VM[] = {0, 0, 0, 0}; //guarda valores mapeados das portas analogicas
int Botao[] = {LOW, LOW, LOW, LOW}; //Guarda o estado dos botões
int PA[] = {CMF, CMB, CMD, CME}; //Guarda as portas de leitura em uma variavel
int PD[] = {MA1, MB1, MA2, MB2}; //Guarda as portas de comando em uma variavel
void setup() {
for (int Np = 0; Np <= 3; Np++) { //laço que se repete 4 vezes até que Np seja igual a 3
pinMode(PA[Np], INPUT); //define todas as portas em PA como Entrada
pinMode(PD[Np], OUTPUT); //define todas as portas em Pd como Saída
digitalWrite(PD[Np], LOW); //desliga todas as portas de saída
}
}
void loop() {
for (int Np = 0; Np <= 3; Np++) { //laço que se repete 4 vezes até que Np seja igual a 3
int VL[Np];
VL[Np] = analogRead(PA[Np]); //faz a leitura das portas analogicas e guarda em VL
VM[Np] = map(VL[Np], 0, 1023, 0, 255); //mapeia o valor lido de cada porta analogica
if (VM[Np] >= 200) { //verifica se o valor mapeado é igual ou maior que 150 (dentre 3-5v)
Botao[Np] = HIGH; //altera o estado de um dos botões que corresponda á porta lida
} else {
Botao[Np] = LOW;
}
}
if (Botao[0] == HIGH) { //frente
digitalWrite(MA1, HIGH); //porta A motor 1
digitalWrite(MA2, HIGH); //porta A motor 2
} else if (Botao[1] == HIGH) { //ré
digitalWrite(MB1, HIGH); //porta B motor 1
digitalWrite(MB2, HIGH); //porta B motor 2
} else if (Botao[2] == HIGH) { //direita
digitalWrite(MA1, HIGH); //porta A motor 1
digitalWrite(MB2, HIGH); //porta B motor 2
} else if (Botao[3] == HIGH) { //esquerda
digitalWrite(MB1, HIGH); //porta B motor 1
digitalWrite(MA2, HIGH); //porta A motor 2
} else { //Desligado
for (int Np = 0; Np <= 3; Np++) {
digitalWrite (PD[Np], LOW); //desliga todas as portas digitais dos motores
}
}
}