Charlieplexing

Salve gente.

Spero di non abusare troppo della vostra gentilezza chiedendo un chiarimento.
Se è così, vi prego di dirmelo che provvederò subito di conseguenza.

Veniamo quindi al dunque:

Stavo curiosando le tecniche di multiplexing attuabili con Arduino dato che dovrò controllare molti led e ho trovato su gioblu (ne approfitto per fare un po' di pubblicità agli autori, dato che è fatto benissimo è c'è tanto di quel materiale per gli inesperti come me) ed ho trovato questo articolo:

Guardando ho capito che è assolutamente la tecnica che fa per me: Pochi componenti reperibili e facile da realizzare.

Solo non mi torna una cosa: Negli esempi

digitalWrite(ledPin1, HIGH);
pinMode(ledPin2, INPUT);
digitalWrite(ledPin2, LOW);

c'è sempre un'istruzione che prevede un input:

pinMode(ledPin2, INPUT);

E non riesco a capire che cosa serva. Sul sito semplicemente:

Questa (corrente) verrà poi fatta riconfluire nel circuito del nostro MCU trasformando in un input il PIN1 e portandolo a LOW

E soprattutto se può funzionare tutto senza l'input.

Grazie mille a questo meraviglioso posto ed ai suoi frequentatori.

stefanolavori:
E non riesco a capire che cosa serva. Sul sito semplicemente:

Questa (corrente) verrà poi fatta riconfluire nel circuito del nostro MCU trasformando in un input il PIN1 e portandolo a LOW

E soprattutto se può funzionare tutto senza l'input.

In effetti è strano quello che c'è scritto, forse GBM ha fatto un pochino di confusione col codice tra il caso con solo due led e quello del Charlieplexing vero e proprio.
Nel caso con solo due led per accenderli tutti e due i pin devono essere output e attivi con stato logico opposto, ovvero un low e uno high, invertendo gli stati logici si ottiene il cambio di led acceso, mettendo uno dei due pin come input tutti e due i led rimangono spenti.
Il fatto di settare l'input come LOW serve per tenere disattivata la resistenza di pull up integrata attraverso la quale uno dei due led può rimanere alimentato e accendersi molto debolmente se il pin rimasto come OUT è settato low.
Nel caso del Charlieplexing è indispensabile che siano OUT solo una coppia di pin per volta, tutti gli altri devono essere INPUT, altrimenti è impossibile avere il controllo del singolo led.
Se guardi Wikipedia internazionale trovi una spiegazione migliore del Charlieplexing e del perché i pin vanno settati in alta impedenza (input).