So my sketch seems only to want to execute the set up portion and won't go into the loop portion.
My LCD is stuck displaying "EFIS PROTOTYPE"
Can't seem to figure out why.
#include <SFE_BMP180.h>
#include <Wire.h>
#include <LCD5110_Graph.h>
#include <ClickEncoder.h>
#include <TimerOne.h>
SFE_BMP180 pressure;
LCD5110 lcd(8, 9, 10, 12, 11);
extern unsigned char SmallFont[];
extern unsigned char TinyFont[];
double baseline; // baseline pressure
ClickEncoder *encoder;
int16_t last, value = 11968;
void timerIsr()
{
encoder->service();
}
void setup()
{
encoder = new ClickEncoder(A1, A0, A2);
Timer1.initialize(1000);
Timer1.attachInterrupt(timerIsr);
last = -1;
lcd.InitLCD();
lcd.setFont(SmallFont);
lcd.print("EFIS", CENTER, 2);
lcd.print("PROTOTYPE", CENTER, 12);
lcd.update();
delay(2000);
}
void loop()
{
double a, P;
int Al;
int encoderValue;
float q = value / 4 * 0.01;
a = pressure.altitude(P, baseline);
baseline = q * 33.8638870320855;
P = getPressure();
Al = a * 3.28084;
value += encoder->getValue();
if (value != last) {
last = value;
lcd.setFont(SmallFont);
char qnh[3];
char Alt[3];
lcd.clrScr();
lcd.print("360*", CENTER, 2);
dtostrf(q, 3, 2, qnh);
dtostrf(Al, 3, 0, Alt);
lcd.print("100", LEFT, 13);
lcd.print(Alt, LEFT + 52, 13);
lcd.print(qnh, LEFT, 30);
lcd.print("+1500", LEFT + 52, 30);
lcd.update();
}
}
double getPressure()
{
char status;
double T, P, p0, a;
status = pressure.startTemperature();
delay(status);
status = pressure.getTemperature(T);
status = pressure.startPressure(3);
delay(status);
status = pressure.getPressure(P, T);
if (status != 0)
{
return (P);
}
}