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();
}
}
Tags:
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;
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por