Ciao a tutti,
era da tempo che non smanettavo con l'elettronica ma per sbaglio mi sono imbattuto in questa fantastica scheda di nome arduino. l'ho comprata anche non avendo mai programmato nulla in vita mia (tranne il linguafggio ladder per plc ) e dopo il primo test Blink volevo realizzare quelle fantastiche luci sul cofano del fantastico k.i.t.t.
ho trovato uno screcth, ho montato la priastra e effetto bellissimo dei led a cascata.Non mi soddisfaceva appieno, perche i led andavao in una sola direzione senza tornare indietro e la mia sete d'invidia verso maichel knight cresceva sempre di più, così cho cercato di capire il codice, e per mia assoluta meraviglia sono riuscito a farlo andare avanti e indietro...propio come il telefilm.....grandissima soddisfazione.
scusate il prolisso incipit ma per me è stata una grande soddisfazione
Dunque questo esperimento è ottimo per chi come me e a secco di programmazione e sgnoccola qualcosa con l'elettronica.
Uploaded with ImageShack.us
come vediamo dallo schema il GND della nostra Arduino collega tutti i lati negativi dei led (facilmente riconoscibili da un taglietto su un lato del led) mentre i lati positivi dei led sono collegati da una resistenza ed ognuno su una porta arduino, per questo esperimento useremo le porte che vanno dalla 13 alla 5.
di seguito il codice per fare il copia e incolla.
// dichiarazione delle variabili
int led_1 = 13;
int led_2 = 12;
int led_3 = 11;
int led_4 = 10;
int led_5 = 9;
int led_6 = 8;
int led_7 = 7;
int led_8 = 6;
int led_9 = 5;
// definizione di alcuni define per chiarire meglio la struttura
#define uscita OUTPUT
#define ingresso INPUT
#define s_1 HIGH
#define s_0 LOW
#define cycle 70
// impostazione delle porte come uscite
void setup (){
pinMode (led_1, uscita );
pinMode (led_2, uscita );
pinMode (led_3, uscita );
pinMode (led_4, uscita );
pinMode (led_5, uscita );
pinMode (led_6, uscita );
pinMode (led_7, uscita );
pinMode (led_8, uscita );
pinMode (led_9, uscita );
}
// programma che continua a ciclare
void loop (){
// Erase all output ( spegni tutte le uscite)
digitalWrite ( led_1, s_0 );
digitalWrite ( led_2, s_0 );
digitalWrite ( led_3, s_0 );
digitalWrite ( led_4, s_0 );
digitalWrite ( led_5, s_0 );
digitalWrite ( led_6, s_0 );
digitalWrite ( led_7, s_0 );
digitalWrite ( led_8, s_0 );
digitalWrite ( led_9, s_0 );
delay (1000); // waiting one second( Attendi 1 secondo)
restart : // dichiaro un punto a cui tornare finito l'esecuzione del programma
digitalWrite ( led_1, s_1 ); // la logica è :
// | | |__________ accendila( s_1 perchè è stata dichiarata come HIGH, in caso di LOW avremmo
// | | trovato s_0
// | |________________ LED 1
// |__________________________ scrivi sull'uscita
delay (cycle); // waiting 1/2 second
digitalWrite ( led_2, s_1 );
digitalWrite ( led_1, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_3, s_1 );
digitalWrite ( led_2, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_4, s_1 );
digitalWrite ( led_3, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_5, s_1 );
digitalWrite ( led_4, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_6, s_1 );
digitalWrite ( led_5, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_7, s_1 );
digitalWrite ( led_6, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_8, s_1 );
digitalWrite ( led_7, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_9, s_1 );
digitalWrite ( led_8, s_0 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_9, s_0 );
digitalWrite ( led_8, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_8, s_0 );
digitalWrite ( led_7, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_7, s_0 );
digitalWrite ( led_6, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_6, s_0 );
digitalWrite ( led_5, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_5, s_0 );
digitalWrite ( led_4, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_4, s_0 );
digitalWrite ( led_3, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_3, s_0 );
digitalWrite ( led_2, s_1 );
delay (cycle); // waiting 1/2 second
digitalWrite ( led_2, s_0 );
// jump to restart ( torna al punto dichiarato in alto denominato restart
goto restart;
}
_____________________________________________________________________________________________________-
se qualcosa non è chiaro postate, altrimenti....BUON DIVERTIMENTO