Un aiutino con un comando dopo digitalWrite

Buona sera a tutti,
sicuramente sto sbagliando qualcosa, perché il programma si blocca, quando il relè1 è LOW dovrei inserire anche il comando sendPacket("dati")
Così funziona bene
(toggleState_1 == false) ? digitalWrite(Relay1, HIGH) : digitalWrite(Relay1, LOW);
ma se aggiungo sendPacket("dati"); non va…..
(toggleState_1 == false) ? digitalWrite(Relay1, HIGH) : digitalWrite(Relay1, LOW),sendPacket("dati");
qualche consiglio? Grazie

L'unica cosa anomala in quella riga, rispetto alla descrizione del funzionamento desiderato, è che la funzione SendPacket è fuori dalla condizione ternaria, viene eseguita sempre.

Io vedo l'operatore virgola che separa la sendpacket dalla digitalwrite quindi siccome l'operatore ternario è un operatore di assegnazione il tutto dovrebbe andare

Ma perché farsi male da soli?

digitalWrite(Relay1, !toggleState)

Elimina l'operatore ternario con qualcosa di più leggibile e più Corto...

E poi una singola if risolve tutto

1 Like

C'è un problema di ordine di precedenza, che andrebbe risolto con delle parentesi.

Basta, appunto, non usare mai l'ambigua virgola...
Come ha suggerito C1P8:

digitalWrite(Relay1, !toggleState_1);
if(toggleState_1) sendPacket("dati");

Per adesso un grazie di cuore, ho le idee più chiare, mi metto al lavoro