è possibile una variabile per più pin?

Volevo sapere se è possibile comandare 2,3 o più pin contemporaneamente con una sola istruzione invece di ripeterla nel loop più volte come nell'esempio allegato:

int rosso = 13;
int verde = 12;
int giallo = 11;

void setup() {
pinMode (rosso, OUTPUT);
pinMode (verde, OUTPUT);  
pinMode (giallo, OUTPUT);    
}

void loop() 
{
  digitalWrite (rosso, HIGH);
  digitalWrite (verde, HIGH);
  digitalWrite (giallo, HIGH);
  delay(1000);
  digitalWrite (rosso, LOW);
  digitalWrite (verde, LOW);
  digitalWrite (giallo, LOW);
  delay(1000);
 }
  1. fai una funzione che setta i 3 LED e chiama quella.
  2. cerca port malipulation Arduino Reference - Arduino Reference

Ciao Uwe

Aggiungo:

  1. ma qual è il problema? L'esecuzione è talmente veloce che non è in alcun modo visibile la sequenza di accensione dei 3 led...

era per cercare di snellire il codice...Port Registers già lo conoscevo, ma non credo che funzioni su arduino mega sui pin 22-53.

csalvo1570:
era per cercare di snellire il codice...

Quindi non è una questione di velocità/contemporaneità...
Per cui, snellire in che senso?
Renderlo più chiaro o usare meno righe?
Spesso queste sono due cose opposte.

A me ad esempio sembra più "snello" usando delle funzioni:

void loop()
{
  accendi();
  delay(1000);
  spegni();
  delay(1000);
}

Si intendevo usare meno righe. Puoi farmi un esempio con le funzioni più dettagliato usando il mio codice con i tre led per favore...

Claudio_FF:
Quindi non è una questione di velocità/contemporaneità...
Per cui, snellire in che senso?
Renderlo più chiaro o usare meno righe?
Spesso queste sono due cose opposte.

A me ad esempio sembra più "snello" usando delle funzioni:

void loop()

{
 accendi();
 delay(1000);
 spegni();
 delay(1000);
}

csalvo1570:
Si intendevo usare meno righe. Puoi farmi un esempio con le funzioni più dettagliato usando il mio codice con i tre led per favore...

Difficile usare meno righe in un codice così semplice. Le funzioni rendono il loop più corto e chiaro, ma vanno aggiunte prima aumentando il numero di righe complessive.

void accendi() {
    digitalWrite (rosso, HIGH);
    digitalWrite (verde, HIGH);
    digitalWrite (giallo, HIGH);
}

void spegni() {
    digitalWrite (rosso, LOW);
    digitalWrite (verde, LOW);
    digitalWrite (giallo, LOW);
}

Il loro uso inizia a diventare interessante se quelle operazioni sono da compiere in diversi punti, allora si che si ottiene un consistente risparmio di righe.