Ho bisogno di un aiuto per una condizione..

Salve ragazzi... Non sò proprio come fare...
Se io ho una variabile (chiamiamola y)che può cambiare di valore e volessi fare una condizione di questo tipo "se il valore di y è cambiato esegui questa istruzione).. Come potrei fare? T_T
Facendo un esempio:
int x = analogRead(A0);
int y = map(x,0,1023,0,10);

io voglio dire... Se il valore di y è cambiato esegui questa istruzione..
Stavo pensando... Scrivo il valore di y sulla eprom e faccio un confronto ed ogni due giri lo elimino e riscrivo? aiutatemi vi prego T_T

oppure avevo pensato di scrivere una cosa di queste:
int w;
int x = analogRead(A0);
int y = map(x,0,1023,0,10);
for(int x=0; x<1; x++){
w=y;
}
if(y!=w){
w=y;
delay(y);
}

Ciao,

NON utilizzare la EEPROM interna, ha circa 100 mila cicli di scrittura garantiti, per cui rischi in breve tempo di renderla inservibile.

Puoi utilizzare una variabile ausiliaria che contenga il valore precedente.

confronti il nuovo valore al precedente, se uguale (od entro un certo range), non fai nulla, altrimenti procedi (ed aggiorni questa variabile ausiliaria col nuovo valore).

Ciao,
Marco

Non userei la eeprom ma copierei il valore misurato in una variabile e controllerei dopo il analogRead() se la differenza dei 2 valori é sotto un certo limite. Se é oltre faccio l' azione voluta e aggiornerei la varabile di riferimento.
Ciao Uwe

edit: Marco Benini sei stato piú veloce =(

"Puoi utilizzare una variabile ausiliaria che contenga il valore precedente."
e come faccio? ad ogni variazione di y mi varierebbe anche la variabile che mi servirebbe per il confronto..
Come dovrei fare? io ho fatto un codice su nel post.. Dite che và bene?

No, mi sembra che non vada bene,

Fra l'altro

for(int x=0; x<1; x++){
w=y;
}

viene eseguito solo una volta (fai loop per x = 0 e basta, inoltre stai ridichiarando la variabile).

Il loop lo fa gia' la parte del codice che si trova nella sezione "loop" dello sketch.

non ho capito bene.. Potresti scrivermi il codice?

per esempio qualcosa del genere:

// variabili globali (se li utilizzi nel setup)
int x ; 
int y_aux = 0 ;
int y;

void setup {

}

void loop {

  x = analogRead(A0);
  y = map(x,0,1023,0,10);
 
  // al primo avvio y_aux e' 0, per cui, se il suo valore risultera' essere > 0 allora verra' eseguita il codice all'interno della condizione if
  if(y != y_aux){
    y_aux = y ; // riassegna valore della variabile ausiliaria
    // ... codice che fa quel che desideri
  }

  // altro cosice che ti serve

}

Se vuoi fare il mapping piu' condiso:
y = map(analogRead(A0),0,1023,0,10);

Ciao,
Marco.

aaah ora ho capito... Io avevo fatto una cosa simile solo che y_aux invece di assegnarla subito a 0 l'ho assegnata al primo valore letto... (anche se sballava xD) Grazie mille!!! Stasera lo testerò... Grazie ancora!!!