temperatuur instellen met decimalen

ZUID:
Zelf nog niet met EEPROM wat gedaan. Je niet werkende code wijkt wel af van het voorbeeld van EEPROM.put. Met "struct" creëer je volgens mij een object met daarin dus een float met een naam.
In het voor beeld wordt aan die float een waarde toegekend in het SETUP deel van de sketch. Als je de variabele configuration.tempNew met de waarde wil vullen op het moment van het drukken van een knop moet dat zoals je nu hebt gedaan in de LOOP worden geprogrammeerd.

ja, dat is eigenlijk heel logisch.

Ergens anders kan er alleen een vaste waarde aan gegevens worden. De oude variabele met de zelfde naam (tempNew) gebruiken als waarde binnen de struct is voor de compiler een brug te ver.

Helder en eigenlijk ook logisch. Gezien tempNew op verschillende momenten een waarde toegekend krijgt, weet hij natuurlijk niet welke tempNew hij nu moet gebruiken.

nicoverduin:
Dat het bij jou niet werkt vanuit de setup(), betekent dat je iets fout doet. Echter laat je alleen de code van de loop() zien. Dus wordt het wat lastig om aan te geen wat verkeerd doet

Ik ben mssn niet helemaal duidelijk geweest. setup() staat hier volledig buiten, daar heb ik niets mee gedaan. Het ging om het stuk BOVEN de setup(), waar ik de verschillende floats en de struct beschrijf.

Voor de volledigheid de volledige code van de temperatuursettingspagina. Inmiddels werkt alles prima. Enige schoonheidsfoutje is dat ik de knoppen om bij te stellen niet anders kan kleuren (void drawFrame() ) op het moment dat ik ze indruk, dan loopt alles vast. Maar aangezien ik liever heb dat de waarden blijven veranderen zolang ik de knoppen indruk (zoals nu het geval is), kan ik leven met het feit dat je nu niet "ziet" dat je de knop indrukt. Ik ben tevreden zo :slight_smile:

Bedankt voor de hulp en uitleg!

#include <EEPROM.h>

#include <memorysaver.h>
#include <UTFT.h>

#include <URTouch.h>
#include <URTouchCD.h>


UTFT    myGLCD(ILI9341_16, 38, 39, 40, 41);
URTouch  myTouch( 6, 5, 4, 3, 2);

extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
extern uint8_t Dingbats1_XL[];
extern uint8_t various_symbols[];
extern uint8_t Various_Symbols_16x32_v2[];
extern uint8_t Various_Symbols_32x32[];

float tempNew = 18;
float tempUpg = 0.1;
float tempSet;
int eeAddress = 0;
int x, y;




struct config_t
{
  float tempSet;
};

struct config_t configuration;


//Temp Config ============================

void drawTemperatureSetting() {

  //==Back to Main button
  myGLCD.setColor(100, 155, 203);
  myGLCD.fillRoundRect (270, 190, 310, 230);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setFont(Various_Symbols_32x32);
  myGLCD.setBackColor(100, 155, 203);
  myGLCD.print("g", 275, 194);
  myGLCD.drawRoundRect (270, 190, 310, 230);
  //Back to Settings button
  myGLCD.setColor(100, 155, 203);
  myGLCD.fillRoundRect (220, 190, 260, 230);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setFont(Various_Symbols_32x32);
  myGLCD.setBackColor(100, 155, 203);
  myGLCD.print("e", 225, 194);
  myGLCD.drawRoundRect (220, 190, 260, 230);
  //Save temp setting
  myGLCD.setColor(100, 155, 203);
  myGLCD.fillRoundRect (170, 190, 210, 230);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setFont(Various_Symbols_32x32);
  myGLCD.setBackColor(100, 155, 203);
  myGLCD.print("<", 175, 194);
  myGLCD.drawRoundRect (170, 190, 210, 230);
  //==Page Title
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setFont(BigFont);
  myGLCD.print("Temp config", CENTER, 10);
  //==Current temp
  myGLCD.setFont(SmallFont);
  myGLCD.print("Huidige temp:", 10, 36);
  //==Current Set temp
  myGLCD.setFont(SmallFont);
  myGLCD.print("Huidige set temp:", 10, 56);
  //==Line
  myGLCD.setColor(255, 0, 0);
  myGLCD.drawLine(0, 78, 319, 78);
  //==Select temp
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setFont(SmallFont);
  myGLCD.print("Select temp", 10, 93);
  //==New temp
  myGLCD.setFont(BigFont);
  myGLCD.print("Nieuwe Temp:", 118, 89);
  //myGLCD.setFont(SevenSegNumFont);
  //myGLCD.printNumI(tempUpg, 160, 125);
  //==Temp Up
  myGLCD.setColor(223, 77, 55);
  myGLCD.fillRoundRect (10, 115, 90, 148);
  myGLCD.setBackColor(223, 77, 55);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setFont(Various_Symbols_32x32);
  myGLCD.print("c", 35, 115);
  myGLCD.drawRoundRect (10, 115, 90, 148);
  //==Temp Down
  myGLCD.setColor(223, 77, 55);
  myGLCD.fillRoundRect (10, 156, 90, 189);
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawRoundRect (10, 156, 90, 189);
  myGLCD.setBackColor(223, 77, 55);
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("d", 35, 157);
}

// Highlights the button when pressed
void drawFrame(int x1, int y1, int x2, int y2)
{
  myGLCD.setColor(255, 0, 0);
  myGLCD.drawRoundRect (x1, y1, x2, y2);
  while (myTouch.dataAvailable())
    myTouch.read();
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawRoundRect (x1, y1, x2, y2);
}

void setup() {
  // put your setup code here, to run once:
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);

  drawTemperatureSetting();
}

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 + tempUpg : tempNew = 18;
      delay (200);
    }

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

    // ==If we press the saveTemp Button
    if ((x >= 170) && (x <= 210) && (y >= 190) && (y <= 230))
    {
      configuration.tempSet = tempNew;
      EEPROM.put(0, configuration.tempSet);

      drawFrame(170, 190, 210, 230);
    }
  }

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