BaBBuino:
Usando un Serial.print() di debug su questa MEGA, vedo che riceve i dati dei contatti a caso, e cioè, ponendo che si sono interrotti gli ultimi 5 di 50, vedo 49,48,50,46,47 e non 46,47,48,48,50.
Da quei numeri a caso devo tirare fuori il più basso e lo evinco assegnando una variabile int priorità_A (A perchè in realtà sono 4 rami da 25 contatti ciascuno, quindi ho priorità_A, priorità_B, priorità_C e priorità_D) che legata alla posizione nella sequenza del contatto.
Che routine posso inventarmi?
Io però ho difficoltà a capire la tua analisi. Porta pazienza. ![]()
Da questo pezzo di post, banalmente, se ricevi dei numeri non in sequenza e vuoi solo il più basso, basta una variabile che memorizza il minore. Quando arriva un nuovo valore se è maggiore del minore lo ignori altrimenti quest'ultimo valore è il nuovo minore.
Dal tuo esempio: 49,48,50,46,47
Quando ricevi 49 (primo numero) variabile minore falla partire (azzerare) con 100.
Perciò 49<minore si, minore=49
Poi arriva 48, 48<minore, si minore=48
Poi arriva 50, 50<minore, no ignoro minore continua a essere 48
etc.
Non saprei però quando questo meccanismo si deve "azzerare". Forse quando i volt sono >19 ?