In my program on Arduino I use a TimerInterrupt. In this TimerIntrrupt I try to display on a LCD the values returned by the methods I call. Unfortunately nothing is displayed on the LCD and I don't know where the error is in my program. Does anyone have an idea of the error? How can I handle to solve the problem?
class Sensor {
float _flowRateTrinkwasser;
unsigned long _wasserMengeTrinkwasser;
float _flowRateReinwasser;
unsigned long _wasserMengeReinwasser;
public:
Sensor( float flowRateTrinkwasser, unsigned long wasserMengeTrinkwasser, float flowRateReinwasser, unsigned long wasserMengeReinwasser) { // Konstruktor
_flowRateTrinkwasser = flowRateTrinkwasser;
_wasserMengeTrinkwasser = wasserMengeTrinkwasser;
_flowRateReinwasser = flowRateReinwasser;
_wasserMengeReinwasser = wasserMengeReinwasser;
}
int get_f_ml1 () {
_flowRateTrinkwasser = 120; // Formel zur Berechnung von Flow Rate
_wasserMengeTrinkwasser = 50;
int f_ml1 = _flowRateTrinkwasser + _wasserMengeTrinkwasser ;
return f_ml1;
}
int get_f_ml () {
_flowRateReinwasser = 70;
_wasserMengeReinwasser = 40;
int f_ml = _flowRateReinwasser + _wasserMengeReinwasser ;
return f_ml;
}
};
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "test.h"
//Durchflussmessung Variable Trinkwasser//
float flowRateTrinkwasser;
unsigned long wasserMengeTrinkwasser;
//Durchflussmessung Variable Trinkwasser//
//Durchflussmessung Variable Reinwasser//
float flowRateReinwasser;
unsigned long wasserMengeReinwasser;
//Durchflussmessung Variable Reinwasser//
Sensor sensorOne( flowRateTrinkwasser, wasserMengeTrinkwasser, flowRateReinwasser, wasserMengeReinwasser ); // Objekt vom Konstruktor Sensor1
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.println("Willkommen bei Truu");
delay(2000);
lcd.clear();
cli(); // disable interrupts
// reset
TCCR1A = 0; //set TCCR1A register to 0000
TCCR1B = 0; //set TCCR1B register to 0
TCNT1 = 0; // reset counter value
OCR1A = 15624; //compare match register für 1 Sekunde (15624pulse vorher)
// set prescaler
TCCR1B |= (1 << CS12) | (1 << CS10);
TCCR1B |= (1 << WGM12); //turn on CTC mode
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
sei(); //allow interrupts
}
void loop() {
}
ISR(TIMER1_COMPA_vect) { // function which will be called when an interrupt occure at timer 1
lcd.setCursor(0,0);
lcd.println(sensorOne.get_f_ml1());
lcd.setCursor(0,1);
lcd.println(sensorOne.get_f_ml());
delay(50);
}