sono nuovo, non ho ancora avuto tempo di presentarmi, lo farò appena possibile.
sto facendo i primi esperimenti con arduino grazie al libro"primi passi con arduino"fino ad adesso procedeva bene finchè mi sono imbattuto in un progetto:
il circuito è un semplice buzzer, al quale la frequenza del tone è regolata dal entrata analogica di una fotoresisteza,fino a qui tutto bene, poi il libro dice testuali parole"crea un "effetto spaziale" variando la singola nota in una breve scala da più note in sequenza, con la partenza che dipende dalla fotoresistenza."
tutto questo con l'aiuto del ciclo for, di cui non capisco la funzione.
Partiamo dal principio che i programmi vengono letti in modo sequenziale a meno che non ci siano dei salti a funzioni varie.
Quando viene incontrato il FOR tutto quello che si trova dentro le sue graffe viene ripetuto n volte definito nella funzione.
int i=0 parte da 0
i<7; verifica se i è minore di 7
i++ incrementa la variab i di 1 ad ogni passaggio
quando è minore di 7 cioè 6 esce dal ciclo for e prosegue con le altre istruzioni
tone(buzzer,(nota+(500)))
tone(buzzer,(nota+(501)))
tone(buzzer,(nota+(502)))
tone(buzzer,(nota+(503)))
tone(buzzer,(nota+(504)))
tone(buzzer,(nota+(505)))
tone(buzzer,(nota+(50*6)))
esco dal FOR
bit95:
grazie mille della risposta, la cosa ora mi è ancora più chiara, ma non ho ancora capito.
il problema sta nel fatto che non capisco cosa rappresenta i.
è l'entrata analogica?
un valore casuale?
ciao
E' la variabile usata per contare quante volte eseguire il ciclo: http://arduino.cc/en/Reference/For
Essa viene usata per il valore di partenza, viene modificata con l'incremento e vien usata per confrontarla col valore al quale terminare il ciclo.
int i=0 parte da 0
i<7; verifica se i è minore di 7
i++ incrementa la variab i di 1 ad ogni passaggio
quando è minore di 7 cioè 6 esce dal ciclo for e prosegue con le altre istruzioni
Una precisione
giusto é:
quando non é piú minore di 7 cioè 7 esce dal ciclo for e prosegue con le altre istruzioni
Finche la condizione é vera continua a restare nel ciclo.
Si puó anche omettere parametri:
for( ; ; ) é un ciclo infinito da cui si esce solo con break()
for( inizializzazione; condizione; incremento)
{
// codice da ripetere
}
Puoi anche fare un ciclo con decremento.
for( int indice=10; indice>1; indice--)
{
// codice da ripetere
}
il nome dell'indice è arbitrario. ricorda però di non utilizzare nomi di variabili già presenti nel resto del codice per non creare incomprensioni in chi legge il codice.
Sappi, inoltre, che la variabile rimane all'interno del ciclo.
Hai capito, ora?
Serve ad eseguire delle operazioni ricorsive su elementi indirizzabili, oppure per eseguire tante volte una data istruzione, oppure per tante altre dove il suo non uso comporterebbe la scrittura di un sacco di righe di codice in più (con relativa occupazione di memoria).