dipende un po dalla semplicita dei programmi
esempio se un programma utilizza un pin (es:5) come INPUT,
e un altro programma utilizza il pin pin (es:5) come OUTPUT,
le cose si complicano perche i settaggi nel void setup vengono eseguiti una volta
sola
devi trovare il sistema di attivare anche i settaggi per quel programma che vuoi utilizzare
Nessuno ci vieta di cambiare la direzione del pin durante il programma, non sei obbligato a metterlo per forza nel setup() si possono creare più funzioni di setup, che vengano eseguite una volta solo dipende da quello che scrivi nel loop()
void setup() {
//Non ci metto un bel niente
}
funzione_1(){
SET pin 5 in INPUT
}
funzione_2(){
SET pin 5 in OUTPUT
}
loop(){
IF pressione tasto_1 vai a funzione_1()
IF pressione tasto_2 vai a funzione_2()
}
Ma sembra poco sensato e utile visto che l'hardware non cambia con la pressione di un pulsante. Se hai un pin settato come input e ci viene applicata una tensione, che senso ha farlo diventare un output durante lo svolgimento del prog? Secondo me è la strada migliore per fare danni al micro.