Settare più pin con una sola istruzione

Ciao,
ho cercato in rete, ma non ho trovato, c'è il modo di settare diversi pin, esempio come output, in una sola istruzione? Ho provato così, ma non compila:

pinMode (10,11,12,13, OUTPUT);

L'unico modo è intervenire sui registri?
Grazie

Si. Ma se usi i registri perdi la compatibilità tra le varie MCU.

Ah, capito, quindi mi tocca scriverli uno per uno? Uff... Devo provare questa soluzione, perchè ho disturbi RF che mi entrano in arduino (due) e me lo bloccano, oppure funziona per i cavoli suoi... Volevo quindi provare intanto a mettere tutti i pin non utilizzati, come uscite, in modo da evitare che possa entrare da li... Poi proverò a schermare fisicamente il tutto...

Poco efficiente rispetto ad uso dei registri però:

byte pinArray[]={10,11,12,13};
...
for(byte i=0;i<sizeof(pinArray);i++)
{ pinMode(i,OUTPUT);
}

Giusto,
ora valuto cosa utilizzare :wink: grazie

Poi ci dici se hai impedito ai disturbi di entrare mettendoli in "output".

Purtroppo no, non è stata una soluzione :frowning: e ci sto sbattendo un bel po' la testa... uff

Temo che i disturbi non derivano da quello.
Racconta in tutti i particolari cosa vuoi fare, lo sketch e il schema elettrico.
Ciao Uwe

Ciao, uso un arduino due, che gestisce un display, utilizzo un modulo BT HC-05 settato come master, che prende i dati da una centralina gestione motore.
Il tutto funziona fino a quando non entra in comunicazione il bluetooth, pensavo rientrasse la radiofrequenza dai pin, ma no, in parte ho risolto facendo le masse in comune su un punto solo, ma anche se meno, i disturbi entrano, ho allontanato il modulo BT di circa 50 cm dal tutto, ma fa uguale... Mi manca di schermare fisicamente con materiale ferroso o alluminio...

Usi Arduino in un automobile? Allora so da dove arrivano i disturbi: dall' alimentazione.

Ciao Uwe

Ciao Uwe,
purtroppo no, nemmeno da li, già provato, le prove per ora sono state fatte a motore spento, quindi nessun disturbo è presente, arduino alimentato sia da batteria dell'auto, sia da batteria propria... Nel circuito ho messo diversi condensatori al polistere e al tantalio per diminuire i disturbi...

Possiamo aiutarti se ci dai tutte le informazioni (Sketch, circuito, moduli).
Se continui a pensare che il problema é quello che pensi di aver individuato allora sará cosí. Io non so aiutarti.
Ciao Uwe

Ciao, lo sketch me lo sono dimenticato :-[ , allego... Il circuito, difficile, o metto una foto, oppure non ce l'ho nemmeno io, ovvero, è in testa ::slight_smile:
Riepilogo, arduino due, display TFT da 5", 800X480 touch, memoria flash esterna per caricare immagini (successivamente) e modulo Bluetooth HC-05, configurato come master, perchè deve cercare altro modulo slave che trasmette i dati.
Il tutto funziona, display, touch, cambio pagine, impostazione BT, pairing e collegamento con slave; a collegamento avvenuto se non c'è trasmissione dati dallo slave, funziona tutto, anche se la trasmissione è di qualche dato, funziona tutto; quando però la trasmissione è al suo lavoro, ovvero vengono inviati dati 10 volte al secondo, a random il display cambia pagina, crea tasti o scritte a caso (ovvero richiama parti di programma a caso), a volte si blocca proprio, è necessario un reset, e via così.
E' per questo che penso alla radiofrequenza del modulo BT, presa o per via aerea, oppure di rientro dal touch o da qualche pin...

BLUETOOTH_DUE_DISPLAY5.ino (52.2 KB)

Ecco una foto per rendere l'idea del layout

thedrifter:
Ecco una foto per rendere l'idea del layout

Che DUE é questa??

MA sei sicuro che gli array sono terminati con '/0'?

while (datoz[conta] != '\0')       // cerco il terminatore null
  {
    datomio1[conta1] = datoz[conta];  // copio i carattere
    conta++;                        // finchè non trovo incremento il contatore
    conta1++;
  }

Non c'é nessun controllo se non fai un overflow del indice del array.
Stessa cosa in alti punti del sketch.

Ciao Uwe

Ciao, la DUE è un clone cinese, privata degli strip per problemi di spazio, perchè? Cosa ha di strano? Gli array dove cerco il terminatore, sono array creati da me, dove IO metto il terminatore appositamente per indicare la fine della stringa, sbaglio?

Comunque controlla in tutte le occasioni se l' indice non supera il 39.
Ciao Uwe

Ciao,
il buffer è da 40? Quindi sempre meglio verificare di non andare oltre? Pensi a un problema di indirizzo??
Come lo verifico il numero del buffer? Hai un esempio? Non l'ho mai fatto...
Grazie

Controlli con un if se il indice é >=39. Se é maggiore devi vedere perché succede, comunque non puoi usarlo come indice del array da 40 elementi.

Comunque perché fai la cosa in quel modo e non copi direttamente i 40 elementi da un array all'altro?

Ciao Uwe

Ciao Uwe,
allora, tutta quella parte relativa agli array, serve solo nella pagina che gestisce il bluetooth come master, prendo (per esempio) l'indirizzo del BT remoto, devo togliere dei caratteri e salvarmi solo l'indirizzo con delle virgole, che mi servirà poi per chiedere il nome del BT, per fare il pairing, la connessione, etc etc, ecco perchè non copio pari pari.
La parte che si blocca non è nella gestione del BT, ma proprio nella lettura, nella comunicazione, che avviene solo nella pagina principale (home), il void che legge è: leggi(), e quello copia pari pari i dati in un array mio.

Il controllo se si supera il numero dell'array va sempre fatto? cioè, è bene farlo? Ora ho capito che ti riferivi all'array creato da me e non al buffer di ricezione...