come memorizzare il valore + basso e + alto

Ciao a tutti, dopo qualche anno sono tornato a giocare con Arduino, vi spiego meglio la domanda. In giro ho visto dei termometri che riescono a mantenere in memoria sia il valore più alto e sia il valore più basso che la temperatura o l'umidità raggiunge, e con la pressione del rispettivo pulsante Min. e Max restituisce il valore. Io in passato avevo realizzato un termometro volevo inserire questa funzione ma non capisco come dirgli di tenere in memoria i valori ne tanto meno impostargli i pulsanti per leggere i risultati.

Ringrazio a Tutti anticipatamente, Salvo.

Ciao, la logica adottata è molto semplice: esiste una variabile che mostra il valore attuale della T (chiamiamola Temp), poi crei altre due variabili che inizialmante sono identiche al primo valore di T letto e che chiami TMIN e TMAX. Ogni volta che Temp cambia la devi confrontare con TMIN, se Temp<TMIN allora memorizzi il nuovo valore, altrimenti lo ignori; contestualmente confronti Temp con TMAX, se Temp>Tmax allora memorizzi il nuovo valore, altrimenti lo ignori. Poi colleghi due pulsanti e come azione gli fai visualizzare, ogni volta che li premi la TMIN o la TMAX, puoi anche creare un solo pulsante che mostri in sequenza TMIN e TMAX.

ciao io ho utilizzato la funzione "max", c'è anche "min" cerca nelle reference esempio:

int valmax1=0;
int val;
----
----
void loop() {
    val =analogRead (A4);
    valmax1 =max(val,valmax1);
    Serial.println (valmax1); 
    delay (50);
}

edit by mod: per favore includi il codice usando gli appositi tag

se ruoto il potenziometro, "val" cambia valore in base alla posizione del potenziometro, mentre "valmax1" segna il valore max reggiunto e rimane in memoria finchè non lo risupero

Grazie per il chiarimento... ;) ;)

Attento che quando vengono inizializzate le due variabili massimo e minimi, al valore massimo dovrai dare il valore minimo possibile e al valore minimo il valore massimo possibile. Ad esempio se il tuo termometro a un intervallo di temperature tra i -50 e 150 gradi, dovrai assegnare all'inizio

int Tmax = -50;
int Tmin = 150;

altrimenti le funzioni max(a,b) e min(a,b) non funzioneranno correttamente.

@Camperos quando posti del codice racchiudilo con i tag CODE (per sapere come fare guarda il punto 7 del regolamento del forum). :D

Secondo me la soluzione più semplice sono 2 “if”.

  1. faccio una lettura di inizializzazione e memorizzo T in Tmin e Tmax
  2. leggo T
  3. se T < Tmin allora Tmin = T
  4. se T > Tmax allora Tmax = T
  5. torno al punto 2.

leo72:
Secondo me la soluzione più semplice sono 2 “if”.

  1. faccio una lettura di inizializzazione e memorizzo T in Tmin e Tmax
  2. leggo T
  3. se T < Tmin allora Tmin = T
  4. se T > Tmax allora Tmax = T
  5. torno al punto 2.

più o meno così? 8)

leo72:
Secondo me la soluzione più semplice sono 2 “if”.

  1. faccio una lettura di inizializzazione e memorizzo T in Tmin e Tmax
  2. leggo T
  3. se T < Tmin allora Tmin = T
  4. se T > Tmax allora Tmax = T
  5. torno al punto 2.

Infatti max(a,b) e min(a,b) sono due if mascherati :grin:

#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))