LCD display inside a TimerInterrupt

Gillo

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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

C++:
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);
}
 
Zurück
Oben