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

Programa Final ( quase ) de novo

Ir para baixo

Programa Final ( quase ) de novo Empty Programa Final ( quase ) de novo

Mensagem por Admin Sex Jun 09, 2017 8:57 pm

int andarFrente = 80;
int andarEsq = 90;// esquerda e mais rapido do que o direita
int andarDir = 90;
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();

}

void verificaDistancia() {

medida_dist = 0;
for (int i = 0; i >= 3; i++) {

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);
}

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 <= -100) {//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 >= 100) {//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
verificaDistancia();
}
}

}

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