Arduino Forum

International => Italiano => Generale => Topic started by: csalvo1570 on Jan 17, 2019, 01:34 pm

Title: è possibile una variabile per più pin?
Post by: csalvo1570 on Jan 17, 2019, 01:34 pm
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:

Code: [Select]

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);
 }
Title: Re: è possibile una variabile per più pin?
Post by: uwefed on Jan 17, 2019, 01:47 pm
1) fai una funzione che setta i 3 LED e chiama quella.
2) cerca port malipulation  https://www.arduino.cc/en/Reference/PortManipulation (https://www.arduino.cc/en/Reference/PortManipulation)

Ciao Uwe
Title: Re: è possibile una variabile per più pin?
Post by: docdoc on Jan 17, 2019, 02:27 pm
Aggiungo:

3) ma qual è il problema? L'esecuzione è talmente veloce che non è in alcun modo visibile la sequenza di accensione dei 3 led...
Title: Re: è possibile una variabile per più pin?
Post by: csalvo1570 on Jan 21, 2019, 06:01 am
era per cercare di snellire il codice...Port Registers già lo conoscevo, ma non credo che funzioni su arduino mega  sui pin 22-53.
Title: Re: è possibile una variabile per più pin?
Post by: Claudio_FF on Jan 21, 2019, 07:02 am
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:
Code: [Select]
void loop()
{
  accendi();
  delay(1000);
  spegni();
  delay(1000);
}
Title: Re: è possibile una variabile per più pin?
Post by: csalvo1570 on Jan 21, 2019, 11:23 pm
Si intendevo usare meno righe. Puoi farmi un esempio con le funzioni più dettagliato usando il mio codice con i tre led per favore...

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:
Code: [Select]
void loop()
{
  accendi();
  delay(1000);
  spegni();
  delay(1000);
}


Title: Re: è possibile una variabile per più pin?
Post by: Claudio_FF on Jan 22, 2019, 08:48 am
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.
Code: [Select]
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.