Pessoal eu queria q quando o comando do sensor ultra sonico for verdadeiro ele seguisse a rotina mas se caso a leitura dos sensores ldr forem maior que o valor corte ele saisse imediatamente como vou fazer isso ?

if((distancia_ultra_frente_baixo > 3)&&(distancia_ultra_frente_baixo <11))
{

parado (); // parar
delay(400);
for(int i = 0; i < 2; i++){ // tras
tras();
}

for(int i = 0; i < 10; i++){ // esquerda
calibrar_esquerda();
}

for(int i = 0; i < 4; i++){ // frente
frente();
}
for(int i = 0; i < 7; i++){ // direita
calibrar_direita();
}
for(int i = 0; i < 8; i++){ // frente
frente();
}

for(int i = 0; i < 6; i++){ // direita
calibrar_direita();
}
}

como vou interromper( tipo no meio da rotina ) caso algum ldr for > valor corte  ?

Exibições: 324

Responder esta

Respostas a este tópico

Oi Carlos, boa tarde,

como voce só postou uma parte do çodigo, não ficou claro para mim qdo  acontece: 

"comando do sensor ultra sonico for verdadeiro ".

Mas para sair de um for ou while voce usa     break.

Espero ter ajudado

Rui

Foi mal estava com pressa !  tentei usar o break mas nao deu muito certo ficou a mesma coisa o q pode estar acontecendo ? eu queria q ele ficava testando enquanto ele estivesse desviando do obstaculo o q pode estar errado ?

#include <Ultrasonic.h>
#include <Servo.h>
Ultrasonic ultra_frente_baixo(7,8); // (Trig PIN,Echo PIN)
//Ultrasonic ultra_frente_cima (4,3); // (Trig PIN,Echo PIN)
//Ultrasonic ultra_esquerda (5,6); // (Trig PIN,Echo PIN)
//Ultrasonic ultra_direita (1,2); // (Trig PIN,Echo PIN)
// servo direita o 2 servo elevador 1 servo esquerda 0;
int sensorld = A1;
int sensorle = A2;
int sensorce = A3;
int sensorcd = A0;
int sensorccd =A4;
int sensorcce =A5;
int valorcorte = 700;
int valorle , valorld , valorce , valorcd , valorccd , valorcce = 0 ;
int esquerdaf = 10;
int esquerdat = 9;
int direitaf = 12;
int direitat = 11;
int verde = 110;
int leitura;
int estado;
Servo servo1;
Servo servo2;
Servo servo3;
void noventa_esquerda()
{
digitalWrite(esquerdaf,1);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(150);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(50);

}
void noventa_direita()
{
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,1);
digitalWrite(direitat,0);
delay(150);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(50);
}
void tras()
{
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,1);
digitalWrite(direitaf,0);
digitalWrite(direitat,1);
delay(80);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(100);
}

void calibrar_canto_direita()
{
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,1);
digitalWrite(direitat,0);
delay(80);

digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(100);
}


void calibrar_canto_esquerda()
{
digitalWrite(esquerdaf,1);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(80);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(100);
}
void calibrar_direita()
{
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,1);
digitalWrite(direitat,0);
delay(80);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(50);
}
void calibrar_esquerda()
{
digitalWrite(esquerdaf,1);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(80);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(50);
}
void frente()
{

digitalWrite(esquerdaf,1);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,1);
digitalWrite(direitat,0);
delay(80);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(100);
}

void calibrar()
{
digitalWrite(esquerdaf,1);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);
delay(50);
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,1);
digitalWrite(direitat,0);
delay(50);
}

void parado ()
{
digitalWrite(esquerdaf,0);
digitalWrite(esquerdat,0);
digitalWrite(direitaf,0);
digitalWrite(direitat,0);

}

void setup() {
pinMode(esquerdaf,OUTPUT);
pinMode(esquerdat,OUTPUT);
pinMode(direitaf,OUTPUT);
pinMode(direitat,OUTPUT);
servo1.attach(5);
servo2.attach(2);
servo3.attach(6);
servo1.write(180); // garra levantada
servo2.write(140); //mao direita fechada
servo3.write(60); //mao esquerda fechada

}

void loop(){
valorle = analogRead(sensorle);
valorld = analogRead(sensorld);
valorce = analogRead(sensorce);
valorcd = analogRead(sensorcd);
valorccd = analogRead(sensorccd);
valorcce = analogRead(sensorcce);
int distancia_ultra_frente_baixo = ultra_frente_baixo.Ranging(CM);
//int distancia_ultra_frente_cima = ultra_frente_cima.Ranging(CM);

while((valorld < valorcorte) && (valorle > valorcorte) && (valorcd < valorcorte) && (valorce > valorcorte)) // 1
{
estado = 3;
calibrar_canto_direita();
break;
}

while((valorld > valorcorte) && (valorle > valorcorte) && (valorcd < valorcorte) && (valorce < valorcorte)) // 2
{

frente();
break;
}
while((valorld < valorcorte) && (valorle > valorcorte) && (valorcd < valorcorte) && (valorce < valorcorte)) // 3
{
estado = 3;
calibrar_direita();
break;
}

while((valorld > valorcorte) && (valorle < valorcorte) && (valorcd < valorcorte) && (valorce < valorcorte)) //5
{
estado = 3;
calibrar_esquerda();
break;
}
while((valorld > valorcorte) && (valorle < valorcorte) && (valorcd > valorcorte) && (valorce < valorcorte)) // 6
{
estado = 3;
calibrar_canto_esquerda();
break;
}
while((valorld < valorcorte) && (valorle < valorcorte) && (valorcd < valorcorte) && (valorce > valorcorte)) // 7
{
estado = 3;
calibrar_canto_direita();
break;
}
while((valorld < valorcorte) && (valorle < valorcorte) && (valorcd > valorcorte) && (valorce < valorcorte)) // 8
{
estado = 3;
calibrar_canto_esquerda();
break;
}


while((valorld > valorcorte) && (valorle > valorcorte) && (valorcd > valorcorte) && (valorce < valorcorte)) // 10
{
estado = 3;
calibrar_canto_esquerda();
break;
}
while((valorld > valorcorte) && (valorle > valorcorte) && (valorcd < valorcorte) && (valorce > valorcorte)) // 11
{
estado = 3;
calibrar_canto_direita();
break;
}
while((valorld < valorcorte) && (valorle < valorcorte) && (valorcd < valorcorte) && (valorcce > valorcorte)) // 12
{
estado = 3;
calibrar_canto_direita();
break;
}
while((valorld < valorcorte) && (valorle < valorcorte) && (valorccd > valorcorte) && (valorce < valorcorte)) // 13
{
estado = 3;
calibrar_canto_esquerda();
break;
}
if (( valorcce < valorcorte)&&( valorccd > valorcorte))
{
estado = 1;
noventa_direita();
delay(150);
}
if (( valorcce > valorcorte)&&( valorccd < valorcorte))
{
estado = 2;
noventa_esquerda();
delay(150);
}
while((valorld < valorcorte) && (valorle < valorcorte) && (valorcd < valorcorte) && (valorce < valorcorte)&& (estado == 3)) // 9
{
calibrar();
break;
}
if((valorld < valorcorte) && (valorle < valorcorte) && (valorcd < valorcorte) && (valorce < valorcorte)&& (estado == 1)) // 9
{
noventa_direita();
delay(150);
}

if((valorld < valorcorte) && (valorle < valorcorte) && (valorcd < valorcorte) && (valorce < valorcorte)&& (estado == 2)) // 9
{
noventa_esquerda();
delay(150);
}
if((valorld > valorcorte) && (valorle > valorcorte) && (valorcd > valorcorte) && (valorce > valorcorte)&& (estado == 3)) // 9
{
calibrar();
delay(150);
}

if((distancia_ultra_frente_baixo > 3)&&(distancia_ultra_frente_baixo < 11))
{

parado (); // parar
delay(400);

for(int i = 0; i < 2; i++){ // tras
tras();
}

for(int i = 0; i < 10; i++){ // esquerda
calibrar_esquerda();
}

for(int i = 0; i < 6; i++){ // frente
frente();
}

for(int i = 0; i < 8; i++){ // direita
calibrar_direita();
}

for(int i = 0; i < 8; i++){ // frente
frente();
}


for(int i = 0; i < 8; i++){ // direita
calibrar_direita();
}

for(int i = 0; i < 3; i++){ // frente
calibrar_esquerda();
}

}

}



/*
if((distancia_ultra_frente_baixo > 3)&&(distancia_ultra_frente_baixo < 15))
{
parado();

servo1.write(180); //garra levantada
servo2.write(80); //mao direita aberta
servo3.write(120); //mao esquerda aberta
servo1.write(35); //garra abaixada
delay(1000); GARRA
for(int i = 0; i < 2; i++)
{ // frente
frente();
}
servo2.write(140); //mao direita fechada
servo3.write(60); //mao esquerda fechada
delay(1000);
servo1.write(180); //garra levantada
delay(1000);
}
*/

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço