Modificare variabile tramite pulsante, si può?

Salve a tutti, ho la necessità di dover impostare un valore ad una variabile e vorrei farlo tramite un pulsante. Spiego meglio il tutto: ho una variabile che in base al suo valore aziona un servo per un tot numero di volte (specificate dal valore della variabile). Se è possibile mi piacerebbe assegnare il valore di questa variabile premendo un pulsante, altrimenti ad ogni utilizzo dovrei riprogrammare l'arduino. I valori che la variabile potrà assumere sono pochi, diciamo 5 (18,19,20,21 e 22). Ovviamente il valore della variabile non verrà mai modificato dallo script ma soltanto se il pulsante viene premuto. E' fattibile secondo voi? Intanto provo a vedere cosa riesco a combinare da solo, casomai dovessi trovare la soluzione la posto qui se interessa a qualcuno.
Saluti

si e fattibile basta mettere un if che se viene premuto il pulsante la variabile salga di uno tipo:

if(digitalRead(2)==1)
{variabile++;}

cosi buttato giu al momento

Ammazza che lampo!!!
Grazie 1000, ora provo...

fammi sapere, se nn dovesse andare posta il codice che gli diamo una sistemata

Allora, mi sono appena reso conto che i valori da passare alla variabile non sono consecutivi, quindi non posso usare l'incremento. E se usassi un array?

Sto provando ad usare un array ma non riesco poi a collegarlo allo script.
L'array l'ho definito così:

int tempoArray[13] = {0,25,32,22,24,18,28,20,14,14,20,40,25};

Devo trovare un modo per assegnare un valore contenuto nell'array ad una variabile chiamata "Tempo", usando un pulsante. Lo script del pulsante è questo:

valPulsante = digitalRead(Pulsante);
if (valPulsante == LOW)
{

}

Come faccio? Scusate per la domanda forse banale, ma al momento non riesco a venirne a capo.

io sto elaborando un codice che permette di incrementare/decrementare delle variabili con visualizzazione su lcd e salvarle nella eeprom, se riesco domani o nei prossimi giorni se ti torna utile ti posto quello che ho scritto.

Si si, grande!!!
E' sempre utile trovare degli script in rete, soprattutto per noi principianti.
Nel frattempo mi impegno a cercare di risolvere con l'array.

Secondo me è giusto con l'array, poi con la pressione del pulsante incrementi l'indice dell'array.

Ricordati però di non usare direttamento il pulsante come condizione dell'if ma il suo impulso, se no incrementeresti ad ogni ciclo per tutta la durata della pressione del pulsante (a meno che non riesci a premere il pulsante solo per un millisecondo !!! XD)

In parole povere per creare l'impulso del pulsande devi fare così:

UltimoStatoPulsante = StatoPulsante;
StatoPulsante = digitalRead(Ingresso);
if (UltimoStatoPulsante == LOW && StatoPulsante == HIGH)
{

}

In questo modo memorizzi lo stato del pulsante ad ogni ciclo e ogni volta che il pulsante era basso al ciclo precedente, e alto nel ciclo attuale significa che c'è stato un fronte di salita, quindi eseguirai l'azione contenuta nell'IF. Al ciclo successivo l'azione non verrà eseguita perchè UltimoStatoPulsante è HIGH e anche StatoPulsante è HIGH.

Grazie per la dritta, lo terrò in mente!

Sono nuovo (mi riferisco ad Arduino, non alla programmazione), e ho scritto di getto, ma comunque, immagino:

int tempoArray[13] = {0,25,32,22,24,18,28,20,14,14,20,40,25};

Ti salvi l'indice corrente da qualche parte, e incrementi l'indice.
Poi assegni il valore puntato dal nuovo indice alla tua variabile:

indice++;
variabile = tempoArray[ indice ];

(il tutto sostituibile da:
variabile = tempoArray[ ++indice ];
)

In parole povere per creare l'impulso del pulsande devi fare così:

Quote:
UltimoStatoPulsante = StatoPulsante;
StatoPulsante = digitalRead(Ingresso);
if (UltimoStatoPulsante == LOW && StatoPulsante == HIGH)
{

}

In questo modo memorizzi lo stato del pulsante ad ogni ciclo e ogni volta che il pulsante era basso al ciclo precedente, e alto nel ciclo attuale significa che c'è stato un fronte di salita, quindi eseguirai l'azione contenuta nell'IF. Al ciclo successivo l'azione non verrà eseguita perchè UltimoStatoPulsante è HIGH e anche StatoPulsante è HIGH.

Questa cosa è spiegata abbastanza presto nel libro di Banzi (e credo sia spiegato anche nei tutorial presenti sul sito della rivista Make, da cui credo il libro sia stato "ricavato"...).

Grazie dell'aiuto ragazzi, posto il codice del pulsante così come mi è venuto, sembra funzionare

valUltimoPulsante = valPulsante;
valPulsante = digitalRead(Pulsante);
if(valUltimoPulsante == LOW && valPulsante == HIGH)
{
if (countTempo==13)
{
countTempo= countTempo-=13;
}
if (countNome==13)
{
countNome= countNome-=13;
}
tempoSpecieAnimale = tempoAnimaliArray[countTempo++];
nomeSpecieAnimale = nomeAnimaliArray[countNome++];
lcd.clear();
lcd.setCursor(0,0);
lcd.print(nomeSpecieAnimale);
lcd.setCursor(0,1);
lcd.print(tempoSpecieAnimale);
lcd.print(" Giorni");
delay(1000);
lcd.clear();
}