Erro " void value not ignored as it ought to be" (Robô Autônomo)

Olá galera !

Bom dia!

Estou passando um pequeno problema quando vou compilar o código , pois o IDE do Arduino informa que nas linhas 146 e 151 aconteceu um erro " void value not ignored as it ought to be" .

Estou utilizando uma função específica para cada ação que o robô irá tomar.

Gostaria de saber porquê a função "decisao()" parece não estar retornando um valor.. Já alterei o código inúmeras vezes e não consigo descobrir o erro..

Agradeceria muito quem puder ajudar  .. O Código abaixo:

// FUNCAO SERVOMOTOR
//Inicializa a posiçao do servomotor

int distanciae;
int distanciad;

#include <Servo.h>

Servo meuservo;


#define motor1A 4
#define motor2A 5

#define motor1B 6
#define motor2B 7



#include "Ultrasonic.h"
// Portas do Arduino que vou utilizar para programar o sensor

Ultrasonic ultrasonic(12,13);


int distancia;


void setup ()
{
  Serial.print("Lendo dados dos sensores:");
  Serial.begin(9600);

  pinMode(motor1A,OUTPUT);
  pinMode(motor2A,OUTPUT);

  pinMode(motor1B,OUTPUT);
  pinMode(motor2B,OUTPUT);

  meuservo.attach(8);  


  //Centraliza Servomotor :)
  meuservo.write(80);
  delay(500);

}

void loop () {



  busca();


  frente();

  if (distancia < 12)
  {
      decisao();
 

  }


}


void frente () {

  digitalWrite(motor1A,LOW);
  digitalWrite(motor2A,HIGH);
  digitalWrite(motor1B,LOW);
  digitalWrite(motor2B,HIGH);

}

void tras(){

  digitalWrite(motor1A,HIGH);
  digitalWrite(motor2A,LOW);
  digitalWrite(motor1B,LOW);
  digitalWrite(motor2B,HIGH);

}


void direita(){

  digitalWrite(motor1A,HIGH);
  digitalWrite(motor2A,LOW);
  digitalWrite(motor1B,HIGH);
  digitalWrite(motor2B,LOW);
}

void esquerda () {

  digitalWrite(motor1A,LOW);
  digitalWrite(motor2A,LOW);   
  digitalWrite(motor1B,HIGH);
  digitalWrite(motor2B,HIGH);


}

void parado () {

  digitalWrite(motor1A,LOW);
  digitalWrite(motor2A,LOW);
  digitalWrite(motor1B,LOW);
  digitalWrite(motor2B,LOW);


}


void desvio_direita(){

  parado();
  delay(1000);
  direita();
  delay(1000);
  frente();
}

void busca(){  

  // Funçao para Fazer leituras de Sensor Ultrasonico
  distancia = (ultrasonic.Ranging(CM));

  Serial.print(distancia);
  Serial.println("cm de distancia");
  delay(500);

}



void decisao()
{
  parado();
  delay(500);
  meuservo.write(0);
  delay(500);

  distanciad = busca();
  delay(2000);
  meuservo.write(175);  
  delay(500);

  distanciae = busca();
  delay(2000);
  meuservo.write(80);
  delay(500);


 if(distanciad > distanciae)
  {
    tras();
    delay(600);
    direita();
    delay(2000);
    frente();


  }

  else
  {
    tras();
    delay(600);
    esquerda();
    delay(2000);
    frente();  

  }


}



Exibições: 4327

Responder esta

Respostas a este tópico

Parece que vc está querendo colocar em uma variável o valor de retorno de uma função que não tem retorno (é void).

em:

distanciad = busca();

e

distanciae = busca();

Sugestões para o px erro:

- Traduzir se nao entender. Esse via translate.google.com deu: "valor vazio não ignorou como deveria ser"

Que é uma boa dica.

- Olhar em que linha deu. No canto inferior esquerdo do editor tem a indicação do numero da linha onde está o cursor. Bateu direitinho.

como faço para resolver então ,poderia me dar uma luz ?rs

tem 2 caminhos:

1) em 2 linhas:

busca();

distanciad = distancia;

Pq a função busca coloca o resultado em distancia.

2) Muda a funcao busca para retornar o valor.

int busca(){  

  // Funçao para Fazer leituras de Sensor Ultrasonico 
  distancia = (ultrasonic.Ranging(CM));

  Serial.print(distancia);
  Serial.println("cm de distancia");
  delay(500);
  return distancia;
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço