Potresti mettere un delay di 10 millisecondi in un ciclo.. Quindi sai che 30000 / 10 = 3000... Ogni loop incrementi una variabile di 1, arrivato a 3000 hai la certezza che siano passati 30 secondi.
Potresti dare un blocco di 10 millisecondi allo sketch? O hai necessità di un multi thread?