temperatuur instellen met decimalen

Dat is opzich natuurlijk heel handig, je moet alleen even snappen wat je precies moet zeggen :slight_smile:

ik ben vandaag verder gegaan met de eeprom tutorials, zodat ik mijn, nu werkende, temperatuursinstelling kan opslaan, uitlezen en aan mijn temperatuursensor en relay kan koppelen.

Omdat het floats betreft, begrijp ik dat ik de EEPROM.put() en EEPROM.get() moet gebruiken. Heb dan ook met de betreffende tutorials zitten spelen om o.a. te zien hoe ik die waarden naast de serial monitor op mijn tft scherm krijg. Met de opzet van de tutorial lukt dat.

Aanvullend op de vorige code van mij heb ik een extra knop gemaakt die moet saven en de EEPROM.put() functie moet uitvoeren.

In de EEPROM.put() tutorial wordt een structure 'customVar" opgezet met 3 variabelen. In de void setup() wordt deze variabelen vervolgens een vaste waarde gegeven. Vervolgens kan je in de EEPROM.get() tutorial deze waarden uitlezen met EEPROM.get(eeAddress, customVar). Om deze op mijn tft te laten zien gebruik ik myGLCD.printNumF(EEPROM.get(eeAddress, customVar."naam1vd3variabelen"), 1, x-coordinaat, y-coordinaat)

Dus ik dacht e.e.a. uit de tutorials over te nemen. Maar dat werkt niet zo straight forward. Ik kan de nieuwe temperatuur instellen, waarom werkt het niet om tempNew naar EEPROM te schrijven? Ik heb geprobeerd dit in verschillende manieren te schrijven, maar ben er nog niet in geslaagd.

float tempNew = 18;
float tempUp = 0.1;
float tempDown = 0.1;
int eeAddress = 0;
int x, y;


struct config_t
{
  float tempNew;
} configuration;

void loop()
{
  if (myTouch.dataAvailable())
  {
    myTouch.read();
    x = myTouch.getX();
    y = myTouch.getY();

    // ==If we press the tempUp Button 10, 115, 90, 148
    if ((x >= 10) && (x <= 90) && (y >= 115) && (y <= 148))
    {
      tempNew < 28 ? tempNew = tempNew + tempUp : tempNew = 18;
      drawFrame(10, 115, 90, 148);
      delay (200);
    }

    // ==If we press the tempDown Button
    if ((x >= 10) && (x <= 90) && (y >= 156) && (y <= 189))
    {
      tempNew > 18 ? tempNew = tempNew - tempDown : tempNew = 28;
      drawFrame(10, 156, 90, 189);
      delay (200);
    }
    
    myGLCD.setBackColor(0, 0, 0);
    myGLCD.setColor(255, 255, 255);
    myGLCD.setFont(BigFont);
    myGLCD.printNumF(tempNew, 1, 160, 125);

    if ((x >= 170) && (x <= 210) && (y >= 190) && (y <= 230)) //170, 190, 210, 230
    {
      
      EEPROM.put(eeAddress, configuration);
      
      drawFrame(170, 190, 210, 230);
    }
  }

  myGLCD.setFont(SmallFont);
  myGLCD.print("Huidige set temp:", 10, 56);
  myGLCD.printNumF(EEPROM.get(eeAddress, configuration.tempNew), 1, 160, 56);
  
}