Hi. When I build my code, Visual Studio report next error:
"lcd.ino: 18:1: error: 'veloRes' does not name a type veloRes velocimetro(int pin)
Error compiling project sources
Build failed for project 'lcd' "
Then I build my code in arduino IDE but there are not error.
Why doesn't run in VisualStudio? Know anyone how to fix this build error?
Thanks.
My code is (The comments are in spanish but it are irrelevant for the question):
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
#include <Wire.h>
struct veloRes
{
double velocidad;
double frecuencia;
bool valido;
String msg;
};
LiquidCrystal_I2C lcd(0x27,16,2);
veloRes datos = { 0,0,false,"" };
const int pinVel = 7;
const int nLect = 4;
veloRes velocimetro(int pin) {
veloRes resultados;
long matAnchoPulso[nLect];
long pulso_tot = 0;
resultados.velocidad = 0;
resultados.frecuencia = 0;
resultados.valido = false;
resultados.msg = "";
noInterrupts();
pulseIn(pin, HIGH);
for (int i = 0; i < nLect; i++)
{
long anchoPulso = 0;
anchoPulso = pulseIn(pin, HIGH);
anchoPulso += pulseIn(pin, LOW);
matAnchoPulso[i] = anchoPulso;
pulso_tot += anchoPulso;
if (anchoPulso == 0)
{
resultados.valido = false;
resultados.msg = "pulso 0";
interrupts();
return resultados;
break;
}
}
interrupts();
for (int i = 0; i < nLect - 1; i++)
{
if (((matAnchoPulso[0] * 2) < matAnchoPulso[i + 1]) || ((matAnchoPulso[0] / 2) > matAnchoPulso[i + 1]))
{
resultados.valido = false;
resultados.msg = "pulso no válido";
return resultados;
break;
}
else
{
resultados.valido = true;
}
}
resultados.frecuencia = double(1000000 / (pulso_tot / nLect));
resultados.velocidad = double(resultados.frecuencia / 19.49);
resultados.msg = "todo OK";
return resultados;
}
void setup() {
lcd.init();
lcd.backlight();
pinMode(pinVel, INPUT);
}
void loop() {
datos = velocimetro(pinVel);
if (datos.valido)
{
pantalla(datos.velocidad, datos.frecuencia);
}
else
{
lcd.clear();
lcd.print(datos.msg);
}
delay(500);
}
void pantalla(double vel, double freq){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Vel: ");
lcd.print(vel,1);
lcd.print("km/h");
lcd.setCursor(0, 1);
lcd.print("frec: ");
lcd.print(freq,1);
lcd.print("Hz");
}