//DEFINIZIONE DELLA FUNZIONE PER SELEZIONARE IL PROGRAMMA FATTO CON PULSANTI
int selezioneprogramma(){
varprogramma1 = digitalRead(programma1);
if (varprogramma1==LOW){
selettore=1;
}
varprogramma2 = digitalRead(programma2);
if (varprogramma2==LOW){
selettore=2;
}
varprogramma2 = digitalRead(programma3);
if (varprogramma3==LOW){
selettore=3;
}
return selettore;
}
quello ke mi restituisce il return lo vorrei utilizzare con uno switch case nel loop principale.
e questa funzione di selezione deve essere eseguita fin quando non premo un pulsante
a me nn va...ho sbagliato qlkosa??
quanto mi resituisce qusto return?? credo sempre 3 anke se nn premo il pulsante
nel terzo blocco c'e' varprogramma2 = ... invece di varprogramma3=...
poi ti consiglio di usare il serial.print per visualizzare il contenuto delle variabili come debug, poi lo togli quando non serve più
Solo quel pezzetto dice poco su quello che vuoi fare
In uno stato iniziale dello sketch senza premere nulla int selezioneprogramma sarà 0 (non gli viene dato nessun valore)
anche return selettore cosè un int ? cosa gli hai messo int selettore = ???;
era più semplice scritto così
if (digitalRead(programma1) == LOW) selettore = 1;
if (digitalRead(programma2) == LOW) selettore = 2;
if (digitalRead(programma3) == LOW) selettore = 3;
return selettore;
quando c'e' una sola istruzione nell'if le graffe non servono
ciao
grazie pablos!!!
sì selettore è un int e quel valore lo passerò allo switch case che ho nel loop principale...
dovrebbe funzionare così:
all'avvio di arduino parte la funzione di lettura pulsanti e deve rullare finchè non è premuto niente quindi avevo pensato nel void loop di chiudere il richiamo a qst funzione dei pulsanti in un do-while(finchè selettore>0)
e poi continuare il programma a seconda dei "case 1: case2: case3:
dovrebbe andare? Appena posso provo e posto altro codica
void loop() {
int programmaselezionato=0;
programmaselezionato = selezioneprogramma();
switch (programmaselezionato) {
case1:
//esegue tutte le cose relative a questa scelta
break;//quando ha terminate le istruzioni relative a case1 e uso break a ke punto del programma ritorna? all'attesa del pulsante da selezionare?
//definizione funzione di selezione
int selezioneprogramma(){
if (digitalRead(programma1) == LOW) selettore = 1;
if (digitalRead(programma2) == LOW) selettore = 2;
if (digitalRead(programma3) == LOW) selettore = 3;
return selettore;
}
dategli un okkiata, e oltre gli errori ditemi se come affronto il problema è giusto.
vorrei ke facesse: dopo la prima selezione esegue quello ke corrisponde alla selezione , lo termina e poi ritorna alla condizione di attesa selezione; questo sopra nn lo fà...