Equipe Xamuqueseguelinha
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

programa final versão 1.8.3

Ir para baixo

programa final versão 1.8.3 Empty programa final versão 1.8.3

Mensagem por Admin Sex Jun 09, 2017 9:23 pm

int andarFrente = 80;
int andarEsq = 110;// esquerda e mais rapido do que o direita
int andarDir = 110;
int esq;
int dir;
int result;
float time90graus = 0.7;
float time6cm = 2.1;// 2.2 e um pouco mais do que devia
float time14cm = 4.6;// 5.2 mt
float timePiso2 = 5;
int ultrassomread;
int medida_dist = 0;
int x = 0;
void setup() {

// put your setup code here, to run once:
pinMode(A0, INPUT);//esquerda ++
pinMode(A4, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(53, OUTPUT);
pinMode(A15, INPUT);
pinMode(31, INPUT);
pinMode(8, OUTPUT);
Serial.begin(9600);
delay(5000);
}



void loop() {

//ultrassom();//ve se tem obstaculo, se tiver, desviar
//debug();//imprime os valores dos sensores de linha

// seguirLinha();
verificaDistancia();
}

void verificaDistancia() {

medida_dist = 0;

delay(2);
digitalWrite(53, HIGH);
delay(10);
digitalWrite(53, LOW);
medida_dist = pulseIn(A15, HIGH);
if (medida_dist <= 800 && medida_dist > 10) {
desviaObstaculo();

}


}

void andar_frente(int pot_d, int pot_e) {//função para andar para frente
analogWrite(2, pot_e);
analogWrite(3, pot_d);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
}
void andar_tras(int pot_d, int pot_e) {//função para andar para tras
analogWrite(2, pot_e);
analogWrite(3, pot_d);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
}
void andar_esq(int pot_d, int pot_e) {//função para andar para esquerda
analogWrite(2, pot_e);
analogWrite(3, pot_d);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
}
void andar_dir(int pot_d, int pot_e) {//função para andar para direita
analogWrite(2, pot_e);
analogWrite(3, pot_d);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
}
void parar() {//função para andar para parar
analogWrite(2, 0);
analogWrite(3, 0);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
}
void desviaObstaculo() {//função para verificar se o obstaculo esta na frente, se tiver, desviar

parar();
delay(200);

andar_dir(75, 65);//vira 45 graus
delay(500);

parar();
delay(1000);

andar_frente(60, 50);//anda o bastante pra passar da caixa
delay(7000);

parar();
delay(1000);

andar_esq(75, 65);//virar em paralelo com a caixa
delay(1225);

parar();
delay(1000);

andar_frente(60, 50);//andar ate a linha
delay(4000);

parar();
delay(1000);

andar_dir(75, 65);//virar a direita ate voltar para linha(90 graus)
delay(400);

parar();
delay(1000);


}
void debug() {//função q imprime os valores dos sensores de linha
Serial.print("Esquerda ++ = ");
Serial.print(analogRead(A0));
Serial.print(" esquerda + = ");
Serial.print(analogRead(A3));
Serial.print(" Direita ++ = ");
Serial.print(analogRead(A2));
Serial.print(" direita + = ");
Serial.print(analogRead(A4));
Serial.print(" Resultado ");
Serial.println(result);
delay(2);
digitalWrite(53, HIGH);
delay(10);
digitalWrite(53, LOW);
medida_dist = pulseIn(A15, HIGH);
Serial.print("ultrassom");
Serial.println(medida_dist);
}

void seguirLinha() {

esq = analogRead(A0) + 1.5 * analogRead(A3); //soma os valores dos sensores da esq
// esq = esq * (-1);//multiplica esse valor por -1
dir = analogRead(A2) + 1.5 * analogRead(A4); //soma os valores dos sensores da dir
result = esq * -1 + dir; //soma os valores:sensores da direita*1 e sensores da esquerda* -1

if (result <= -150) {//ve se a soma dos valores dos sensores da direita mais a soma dos valores da esquerda sao menor q -100
andar_esq(andarEsq + 10, andarEsq); //nesse caso, virar pra esquerda
}
else {
if (result >= 150) {//e se ////se a soma nao for menor q -100
andar_dir(andarDir + 10, andarDir); //nesse caso, virar direita
}
else {//se ñ tiver q virar nem pra direita nem pra esquerda
andar_frente(andarFrente + 10, andarFrente); //andar para frente

}
}

}

void sinalizar(int tempo) {

digitalWrite(8, LOW);
digitalWrite(8, HIGH);
delay(tempo);
digitalWrite(8, LOW);

}

Admin
Admin

Mensagens : 26
Data de inscrição : 21/04/2017

https://xamuqueseguelinha.directorioforuns.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos