[Risolto] Indirizzare porte in modo non contiguo

Ciao gente,

Avendo da sistemare le connessioni su un CS, vorrei ridefinire i piedini in modo da poter attivarli/usarli in un ciclo di for.
A quanto pare ciò esiste già. Non so esattamente come si potrà farlo senza incorrere a conflitti con le definizioni standard di arduino.

Forse non dovrei usare dei #define, ma un array con i nomi standard. Non credo, dato che le funzioni digitalRead() e le altre due, vorranno il nome vero della Porta, non valori stringa di sicuro. Che, buffamente, è anch' esso una definizione di un numero di una locazione di memoria.

non capisco cosa Ti serve.
Ciao Uwe

Faccio un esempio , attivare la D2, D5, A3, D12,A2 con un indirizzamento

byte maschera = 0b10111111;  // la maschera mi serve per definire i livelli di uscita in una sequenza
Byte porta[] = { 3,5,7,12,15,19,2};
byte x;
for (x=0; x<8; x++)  pinMode(porta[x], OUTPUT};
for (x=0; x<8; x++) {
   digitalWrite(bitRead(maschera[x]))
}

Si può fare anche in questo modo?

Credo che l'unico errore sia:

digitalWrite(bitRead(maschera, x));

Però non capisco perché ci sono 8 bit e 7 porte.

PS: Puoi anche fare un unico for.

Faccio fatica a scrivere dal telefono :wink: Quindi ho dimenticato di controllare quante ne ho scritte.
Stamani ho fatto una ulteriore prova. Quindi posso confermare che anche le porte A0~A7 si possono mettere nell'array, così come si usano per pinMode() ecc.
Ho anche dichiarato const l'array, per risparmiare :slight_smile:

Nel concetto di Arduino, ogni porta (nota che dovresti parlare di PIN, una PORTA è un INSIEME di pin) è un numero, né più, né meno, con tutto quel che ne consegue.

Occhio però che i bit si contano da destra verso sinistra:

bit   76543210
    0b11111111

ExperimentUno:
Faccio fatica a scrivere dal telefono :wink: Quindi ho dimenticato di controllare quante ne ho scritte.
Stamani ho fatto una ulteriore prova. Quindi posso confermare che anche le porte A0~A7 si possono mettere nell'array, così come si usano per pinMode() ecc.
Ho anche dichiarato const l'array, per risparmiare :slight_smile:

Le entrate analogiche A6 e A7 (presenti nel ATmega328 SMD come nel Arduino NANO) non hanno funzione digitale.
Ciao Uwe

SukkoPera:
Occhio però che i bit si contano da destra verso sinistra:

bit   76543210

0b11111111

Questa la conoscevo, ma potrei essere incline ad errore, come nel caso di ciclo di for.
Infine ho fatto le dovute prove.