Ciao a tutti ho appena acquistato Arduino 2009;
ho iniziato a guardare i programmi di esempi come
blink...il quale accende e spegne un led per il tempo impostato.
se io vorrei utilizzare 2 led contemporaneamente(il primo su un piedino e il secondo su un altro piedino con tempi di accensione e spegnimento diversi) come mi dovrei comportare?
Grazie a tutti per l'aiuto.
Ciao Marco e benvenuto. Per far funzionare anche l'altro led devi modificare lo sketch e abilitare anche l'uscita dove hai collegato il secondo led. Sullo sketch blink che hai caricato in pratica viene utilizzato soltanto il pin 13
int ledPin = 13; // led connesso al pin 13
Supponiamo che l'altro led lo hai collegato sul pin 12 basta che lo inizializzi come è stato fatto per il primo led:
int ledPin2 = 12; // secondo led connesso al pin 12
Poi anche nel void setup dovrai specificare che il pin 12 viene utilizzato come un'uscita:
pinMode(ledPin2, OUTPUT); // adesso il pin 12 è un'uscita
Nel void loop invece andrai a mettere le istruzioni per comandare l'uscita:
digitalWrite(ledPin2, HIGH); // accendi il led
delay(quanto ti pare);
digitalWrite(ledPin2, LOW); // spegni il led
delay(quanto ti pare);
Giusto per informazione, non collegare un led direttamente su un pin di arduino come viene fatto nel pin 13, occorre bensì mettere una resistenza; soltanto il pin 13 ne è provvisto.
Saluti.
int ledPin1 =13;
int ledPin2 =12;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledpin2, OUTPUT);
}
void loop(){
digitalWrite(ledPin1, HIGH);
delay(1000);
digitalWrite(ledPin1, LOW);
delay(1000);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin2, LOW);
delay(500);
}
è giusto com l'ho scritto?
Si corretto!
Cerca di liberarti del delay() il prima possibile è davvero una cosa da utilizzare solo in alcuni casi particolari.
Per vedere se lo sketch è scritto in modo corretto devi compilarlo e per fare questa operazione devi premere il primo pulsante rotondo con un triangolo che vedi appena sotto "File". Ti accorgerai ben subito che c'è un errore sulla riga 5 (ledPin2 lo hai scritto con la "p" minuscola).
Però attento, l'esempio che ti ho fatto prima se lo fai eseguire ad arduino così come sta scritto non ti da l'effetto che cercavi, era soltanto un esempio per farti vedere come abilitare gli altri pin. Se lo esegui vedrai che non ottieni un led che lampeggia per un secondo e l'altro per mezzo simultaneamente, in quanto i comandi vengono eseguiti uno per volta. Se vuoi che i led iniziano a lampeggiare allo stesso tempo c'è da scrivere un pò di codice e soprattutto eliminare il delay che complica un pò la situazione. Al posto dell'istruzione delay usa la funzione "millis", cerca nel forum c'è un'ottima guida scritta da Nathanvi su come usarlo.
Saluti.
ma i led, così come ho scrito il programma, si aacendono contemporaneamene?
No, come ti dicevo nel post precedente prima vengono eseguite le istruzioni del primo led, poi quelle per il secondo quindi scritto così funziona un led alla volta.
e che istruzioni dovrei usare per farli acendere assieme?
grazie[ch65281]
int ledPin1 =13;
int ledPin2 =12;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledpin2, OUTPUT);
}
void loop(){
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
delay(1000);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}