oppure non è programmabile che al riavvio del pc ad esempio disattivi la sua uscita a 5v per 1 secondo?
Ribadisco il concetto, se il pc che stai utilizzando non stacca l'alimentazione USB al riavvio non è in accordo alle specifiche, che poi ci sia l'alimentazione a 5V sulla USB a pc spento è normale, solitamente è possibile attivare/disattivare questa cosa da BIOS, però alla riaccensione la tensione viene comunque tolta per qualche secondo e ridata.
Mettendo da parte le considerazioni sul corretto funzionamento della USB rimane il fatto che Arduino non ha modo di accorgersi se il pc viene riavviato, sopratutto in considerazione del fatto che il 5V permane, a maggior ragione è inutile leggere il 12V con l'ADC perché quello durante il riavvio può sia rimanere fisso che essere interrotto per un breve periodo, non c'è una regola precisa.
Una possibile soluzione è che Arduino interroghi periodicamente, p.e. ogni 5 secondi, il pc tramite la porta seriale virtuale, se il pc non risponde entro un certo time out viene interpretato come un riavvio in corso e fai scattare il relè.
La soluzione sopra esposta presuppone la realizzazione di un piccolo programma, meglio se è un servizio, che deve essere sempre attivo il cui scopo è attendere la richiesta di Arduino sulla porta seriale e inviare la risposta.
Un esempio di possibile dialogo è inviare ogni 5 secondi al pc il carattere "@", il pc deve rispondere entro 10 secondi inviando pure lui il carattere "@", se Arduino riceve la risposta vuol dire che è tutto ok, in caso contrario attiva il relè.
Il time out per la risposta, ipotizzato come 10 secondi, è un valore arbitrario da determinare in base al tipo di pc e l'uso che ne viene fatto, alcune operazioni, p.e. il massiccio trasferimento di dati tra hard disk, possono determinare ritardi di diversi secondi nell'esecuzione di altri processi non prioritari, però dipende anche da come viene realizzato il software che risponde ad Arduino e il suo livello di priorità.