Invertire motore

Brunello:
non puoi usare la stessa variabile tempoCorrente nei due if
Altrimenti il secondo if >=5000 non te lo esegue mai perche' lo cambi ogni 3000 mS

Esatto, ne deve usare un'altra :wink:

Che ne so sotto tempo corrente dove è dichiarato scrivi:
unsigned long tempoCorrente1=0;

e usalo correttamente uno in un if e uno in un altro

Semplicemente studia quello che ti ha linkato Gugliemo per capire benissimo millis! :wink:
Millis è il tempo dall'accensione di Arduino calcolato in ms. Tu questo tempo lo puoi gestire come ti pare poi :wink: Ovviamente siccome NON LO PUOI ALTERARE, ovvero non lo puoi mandare a zero oppure sottrargli qualcosa, devi studiare con altre variabili un modo per renderlo utile. Mentre il delay tu gli dici come è, a millis non puoi dirlo.
Vedi per esempio BlinkWithoutDelay
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay