Interrompere movimento servo

Salve, un piccolo aiuto se volete!!! Sto cercando di trovare il modo di interrompere lo sweep di un servo, che mi muove da 0 a 180, all'arrivo di un input, che può essere una semplice pressione di un pulsante, o come nel mio caso l'impulso che arriva da un sensore di rilevazione fiamma (sto cercando di fare una piccola torretta fire fighting, con ventolina che parte x spegnere la fiamma). Come posso far muovere il servo e allo stesso tempo stare in ascolto del pin adibito all'input?

In teoria puoi fare in un ciclo while, fare andare da 0 a 180 il servo e dentro il while verifichi anche l'input.

Ma sarebbe MOLTO meglio avere una logica con Macchina a Stati Finiti.
Lo stato X = muovi sensore, porta la posizione del servo da 0 a 180, un passo per ogni giro di loop().
In pratica nello stato X aumenti di 1 la posizione del servo e verifichi se sei arrivato a 180, s si cambi stato
Sempre verificato come prima cosa nella loop() se arrivato un input, cambi lo stato perchè è arrivato un input

www.lucadentella.it/2013/04/30/macchina-a-stati-finiti-e-arduino/