rilevare e misurare tempo fra due eventi eventi

mikiti:
Il tempo potrei misurarlo con la funzione millis() (o sbaglio?).

Si, certo.

1 - intanto, monitorare quel led (che resta acceso per pochissimo tempo, praticamente lampeggia): ha senso mettere un delay di 1 ms (vorrei usare una fotoresistenza con un semplice ciclo if) o c'è un modo più efficiente per il rilevamento? il led non si accende con frequenza inferiore a 1 ms ma potrebbe accendersi fra 0 e 1 ms...

Se è per quello che penso, ossia un misuratore di consumo leggendo il led del contatore (giusto? :wink: ), è fattibile.

Non credo si accenda per solo un 1ms, non lo vedresti neanche, quindi credo tu ti possa non preoccupare di questo.

In ogni caso i delay() sono da evitare, nel tuo caso userai un interrupt, ossia dici ad Arduino di far partire una funzione quando il segnale di un pin cambia (indifferentemente da HIGH a LOW o viceversa), oppure puoi anche tracciare solamente la singola transizione LOW-HIGH o HIGH-LOW.
Trovi varie info QUI (reference), oppure QUI (un tutorial con esempio).

2 - come memorizzo due stati (due tempi)?

Due variabili, poi confronti i tempi. Ma prima sperimenta seguendo quel tutorial, inizia a scrivere un primo tuo sketch, poi se hai difficoltà posta qui quello che hai fatto e potremo aiutarti!

EDIT: dimenticavo, appena avrai descritto meglio cosa vuoi fare (se è il contatore o meno) e avrai chiaro il discorso interrupt() possiamo passare a capire come puoi leggere il LED ossia con quale "sensore" farlo, da collegare ad un pin digitale del tuo Arduino.