domandina su comandare tutte le uscite in contempo

buongiorno a tutti vorrei sapere come posso farea comandare con 1 sola istruzione tutte le uscite del mio arduion senza dover settare tutte le uscite con digitalWrite(2,HIGH) ecc ecc perche io ho visto l'utilizzo delle seguenti istruzioni: byte a[1]={B01111100} ma vorrei sapere come fare a comandare le uscite

vi ringrazio per l'attenzione attendo risposte :) :)

Forse non ho capito benissimo ma… un ciclo FOR?
Del tipo per i che va da 1 a 6 manda HIGH a quella porta

for(i=0; i<7;i++){
digitalWrite(i,HIGH);
}

Ma probabilmente volevi fare con meno istruzioni?

e si io devo comandare una matrice di led 5*6 i positivi dei led sono collegati ai pin 2 3 4 5 6
mentre i negativi ai 7 8 9 10 11 12

e volevo una singola istruzione per comandare tutte le yscite nello stesso momento perche vorrei visizualizzare delle lettere sull matrice e quindi facendo il ciclo for diventerebbe troppo lungo mentre cn l’ istruzione che vorrei comando ogni singola riga con una sola istruzione

be diaciamo che a me servirebbe emettere un byte sui pin d’uscita dell arduino

ho visto che con i picaxe e possibile e anche con il plc con il quale ho provato a scuola

con l’arduino e possibile ? perche senza questa possibilita il mio progetto non riuscira oi si allunghera di molto

speriamo nelle risposte grazie :slight_smile:

Non credo che sia un problema sai, in fondo fa molto presto arduino a cambiare lo stato delle uscite... Non dovresti vedere ad occhio nudo nessuna transizione se stai sotto 1/125 di secondo... l'occhio umano non è così veloce

si lo so che l’occhio umano non è cosi veloce ma a me servirebbe un istruzione per settare conteporaneamente tutte i pin d’usita dell arduino

per esempio se io dico 0 0 0 1 1 0 1 0 1 la vorrei emettere in un solo colpo senza ricorrere ad un ciclo for e settandone una per una

sarebbe una cosa banale farti un metodo che fa esattamente questo?

tipo, tanto per farla breve

void setPins(int pins[], int values[]) {
  for(int i=0; i<sizeof(pins); i++) {
    digitalWrite(pins[i], values[i]);
  }
}

ok questo puo’ andar bene anche perche io non sapevo della possibilita di scrivere digitalWrite(pins_, values*); pensavo che nella parte dopo la virgola era obbligatorio mettere HIGH o LOW*_
grazie 1000 per la risposta
poi volevo sapere se estisteva un qualche tutorial oltre alla guida introddutiva molto utile sull’ arduino

Ciao

Il metodo piu rapido è usare le variabili PORTB PORTC e PORTD che ti permettono di accedere a basso livello a gruppi di 8 pin alla volta...

quando usi digitalWrite(8,HIGH) per esempio, Arduino usa una tabellina per capire in che porta si trova il piedino da modificare e la sua posizione. Poi va ad agire su di esso..

Se tu assegni a uno dei vari port un valore a 8 bit quello appare istantaneamente...

nell reference è tutto spiegato http://www.arduino.cc/en/Reference/PortManipulation

m

questo era quello che cercavo grazie a tutti quanti ora ho imparato altre cose su questo piccolo formidabile microcontrollore