Nestore1978:
Uhmm fatemi capire IF può comparare un ingresso di logica fisico come un pulsante/tasto ma non pò comparare un valore ricevuto da un RTC giusto?
Non proprio, con l'if puoi verificare un espressione se questa ha un operatore di comparazione definito, ad esempio
int i = 0;
if(i==1)
char myChar = 'A';
if(myChar=='B')
bool pippo = true;
if(pippo)
ila digitalRead di arduino restituendo un valore HIGH o LOW che sono un sostituto del booleano vero, falso la puoi mettere come espressione dell'if
Mentre una funzione tipo quella del tuo pezzo di codice che restituisce un puntatore ad un vettore di char se la usi in un if non vai a verificare il contenuto ma il valore del puntatore.
Se non sei pratico del C è difficile da comprendere, immagina che hai due variabili
char miaStr[10] = 'Ciao';
char altraStr[10] = 'Ciao';
se le metti in un if così:
if(miaStr==altraStr)
l'espressione verrà valutata sempre come falsa perchè in realtà stai confrontando non il contenuto della stringa ma la posizione in memoria della stringa stessa che per forza di cose è differente in questo caso, ad esempio la posizione in memoria di miaStr potrebbe essere 1011 e la posizione di memoria di altraStr potrebbe essere 2033, confrontatndo nell'if sopra è cpme se facessi
if(1011==2033)
che è sempre ovviamente falso.
invece usando l'apposita fuzione indicata da Guglielmo
if(strcmp(miaStr,altraStr)==0)
verifichi se il contenuto delle due stringe è uguale, in questo caso si.