Preciso de ajuda - Projeto robo de Limpeza

Olá :slight_smile:

Estou fazendo TCC e to travado na programação :disappointed_relieved:

Bem o projeto é composto por : O arduino mega com o shield l293d + 2 sensores HC SR-04 numa plataforma com 2 motores DC feita por mim mesmo (imitando aquelas que é só comprar).

E como funciona : Os 2 sensores indicam o obstaculos, por exemplo, se o sensor da esquerda detectar q ha algo perto demais e o da direita detectar q o caminho esta livre o robo fara uma curvar a direita para desviar do obstaculo.

Meu problema : como comandar os motores de acordo com as leituras dos sensores.

eis a programação

#include <NewPing.h>
#include <AFMotor.h>

#define MAX_DISTANCE 300

#define LEFT_TRIGGER_PIN  14
#define LEFT_ECHO_PIN     15
#define RIGHT_TRIGGER_PIN 16
#define RIGHT_ECHO_PIN    17

NewPing sensorLeft = NewPing(LEFT_TRIGGER_PIN, LEFT_ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
NewPing sensorRight = NewPing(RIGHT_TRIGGER_PIN, RIGHT_ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
AF_DCMotor motor(1); // Motor da direita
AF_DCMotor motor2(2); // Motor da esquerda

void setup() 

{
  
  Serial.begin(9600);
  
}

void loop() 

{
  
  // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  delay(50);
  
  // Send ping, get ping time in microseconds (uS) then convert to CM.
  unsigned int left = sensorLeft.ping() / US_ROUNDTRIP_CM;
  unsigned int right = sensorRight.ping() / US_ROUNDTRIP_CM;
  
  Serial.print("Left: ");
  Serial.print(left);
  
  Serial.print(" | Right: ");
  Serial.print(right);
  Serial.println("");
  
  switch (left >= 1 || right >= 1)
  
 {
    
    case 1: // IR PARA FRENTE
    
    left >= 15 || right >= 15;
    Serial.println("CASE 1");
    motor.setSpeed(255);
    motor2.setSpeed(255);
    motor.run(FORWARD);
    motor2.run(FORWARD);
    break;
    
    case 2: // IR PARA TRAS
    
    left <= 5 || right <= 5;
    //Serial.println("CASE 2");
    motor.setSpeed(255);
    motor2.setSpeed(255);
    motor.run(BACKWARD);
    motor2.run(BACKWARD);
    break;
    
    case 3: // VIRAR PARA A DIREITA
   
    left <= 15 || right >= 10;
    //Serial.println("CASE 3");
    motor.setSpeed(255);
    motor2.setSpeed(255);
    motor.run(BACKWARD);
    motor2.run(FORWARD);
    delay(1000);
    break;
    
    
    case 4: // VIRAR PARA A ESQUERDA
    
    left >= 10  || right <= 15;
    //Serial.println("CASE 4");
    motor.setSpeed(255);
    motor2.setSpeed(255);
    motor.run(FORWARD);
    motor2.run(BACKWARD);
    delay(1000);
    break;
    
    default: // PARA TUDO 
    
    motor.setSpeed(0);
    motor2.setSpeed(0);
    motor.run(RELEASE);
    motor2.run(RELEASE);
    return;
       
  }
  
  
}

Bem oq acontece é que quando coloco esse programa pra rodar ele fica travado no CASE 1 e se eu desplugar os sensores(ou eles derem leitura 0cm) ele vai para o Default, não sei como resolver( por isso to aqui :P).

Alguem tem alguma idéia de como sair disso? To usando o comando case mas não axo um exemplo mais elaborado dele na net, só os basicos q não me dão muita idéia de como funciona extamente.

Bem é isso, espero resposta e ja agradeço por ter lido até aqui :smiley:

Ps: eu fiz esse projeto baseado nesse Tutorial: Aplicação com Plataforma Robótica Magician + Arduino - YouTube
esse projeto do link é muito simples, o carro SÓ VIRA PRA ESQUERDA!
quero algo mais incremetado mas não sei programação, faz 1 semana q comecei a programa :zipper_mouth_face:

To lendo um pouco, o comando case não é pra testar algo que varia tanto como os sensores, e sim pra verificar valores mais contantes...sei la to com sono...chega por agora.

Better ask your question in English too, or post on the Portugues - subsection, if you want answers

Melhor fazer sua pergunta em Inglês também, ou postar no Portugues - subseção, se você quer respostas

oh sorry i was sleepy :~

acorda você