Aller au contenu principal

Seguidor de Linha

#Seguidor de linha 1

Segue linha para frente.

Curvas de 180º para esquerda e direita.

Supera gueps.

Supera redutor de velocidade.

  numero sensorEsq1 = 0
numero sensorEsq2 = 0
numero sensorDir1 = 0
numero sensorDir2 = 0

numero limiar = 24

tarefa ciclo{
enquanto (verdadeiro) farei{
escrevernumero(1, luz(2))
escrevernumero(2, luz(3))
escrevernumero(3, luz(4))

se (luz(2)>limiar e luz(3)<limiar e luz(4)>limiar) entao {
frente(200)
}senao se (luz(2)>limiar e luz(4)>limiar) entao{
frente(100)
}senao se(luz(2)<limiar) entao{
mover(negativo(100), 100)
esperar(100)
}senao se(luz(4)<limiar) entao{
mover(100, negativo(100))
esperar(100)
}
}
}

inicio
ciclo()
fim

#Seguidor de linha 2

Levanta escavadeira ao iniciar.

Segue linha para frente.

Curvas de 180º para esqueda e direia.

Curvas de 90º para esqueda e direita.

Detecta obstáculo.

Supera gueps.

Supera redutor de velocidade.

Baixa escavadeira quando sobe a rampa.

  numero sensorEsq1 = 0
numero sensorDir1 = 0
numero sensorEsq2 = 0
numero sensorDir2 = 0

numero limiar = 20
numero val1 = 0
numero val2 = 0
numero mut = 2

booleano estanarampa = falso

tarefa levantarEscavadeira{
velocidadeatuador(150)
levantar(1000)
}

tarefa baixarEscavadeira{
velocidadeatuador(50)
baixar(1000)
}

tarefa seguidor{
sensorEsq1 = luz(2)
sensorDir1 = luz(4)
sensorEsq2 = luz(1)
sensorDir2 = luz(5)

se (sensorEsq1 > limiar e sensorDir1 > limiar) entao {
frente(40)
}senao se(sensorEsq1 < limiar e sensorDir1 > limiar ou cor(1)=="VERDE" ou cor(2)=="VERDE") entao {
se (cor(1) == "VERDE" ou cor(2) == "VERDE") entao{
frente(100)
esperar(600)

enquanto (luz(3) > limiar ) farei {
direita(100)
}

tras(40)
esperar (500)
}
senao se (sensorEsq1 < limiar e sensorEsq2 < limiar) entao{
frente(150)
esperar(600)
direita(200)
esperar(4000)
tras(40)
esperar(500)
}
senao{
val1 = subtrair(sensorEsq1, sensorDir1)
val2 = multiplicar(val1, mut)
mover(negativo(100), 100)
esperar(val2)
}
}senao se(sensorEsq1 > limiar e sensorDir1 < limiar) entao {
se (cor(4)=="VERDE" ou cor(5)=="VERDE") entao{
frente(100)
esperar(600)

enquanto (luz(3) > limiar ) farei {
esquerda(100)
}

tras(40)
esperar(500)
}
senao se (sensorDir1 < limiar e sensorDir2 < limiar) entao{
frente(150)
esperar(600)
esquerda(200)
esperar(4000)
tras(40)
esperar(500)
}
senao{
val1 = subtrair(sensorEsq1, sensorDir1)
val2 = multiplicar(val1, mut)
mover(100, negativo(100))
esperar(val2)
}
}
}

tarefa desvio {
se (ultra(1)<8) entao {
direita(100)
esperar(3500)
frente(100)
esperar (1200)
esquerda(100)
esperar (3000)
frente(150)
esperar (1200)
esquerda(200)
esperar (3200)

enquanto (luz (1) > limiar e luz (2) > limiar) farei {
frente (20)
}

frente (100)
esperar (700)
direita(200)
esperar(3000)
}
}

tarefa resgateDireita{

}

tarefa resgateEsquerda{

}

inicio
levantarEscavadeira()

enquanto(verdadeiro)farei{
se(inclinacao()>=300 e ultra(3) < 22 e ultra(4) < 22 e estanarampa == falso) entao{
estanarampa = verdadeiro
baixarEscavadeira()
}

se(estanarampa == falso) entao{
desvio()
}

escrevernumero(1, ultra(3))
escrevernumero(2, ultra(4))

se(ultra(3) > 70 e ultra(4) < 40 e estanarampa == verdadeiro)entao{
escrever(3, "Parede à esquerda, faça o regate para a direita.")
resgateDireita()
}senao se(ultra(4) > 70 e ultra(3) < 40 e estanarampa == verdadeiro)entao{
escrever(3, "Parede à dieita, faça o resgate para a esquerda.")
resgateEsquerda()
}

seguidor()
}
fim

Créditos

  • Prof. Alex

  • Prof. Assis