Offline
Full Member
Karma: 0
Posts: 138
|
 |
« on: November 14, 2012, 09:29:49 am » |
ciao a tutti :=) io ho creato un programma per arduino( ma dai  ) volevo sapere come "inserire più programmi" nello stesso programma e poi all'avvio in base a quale bottone schiaccio avvio un programma grazie infinite in anticipo 
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
God Member
Karma: 2
Posts: 652
|
 |
« Reply #1 on: November 14, 2012, 10:38:18 am » |
Qui si discute riguardo la possibilità di mandarli in esecuzione alternativamente ad ogni accensione, con una piccola modifica riusciresti ad adattare il codice alle tue esigente 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 138
|
 |
« Reply #2 on: November 14, 2012, 10:47:34 am » |
ok grazie ho letto ma non ho capito molto come dovrei fare 
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #3 on: November 14, 2012, 11:18:38 am » |
più o meno così: funzione1(){ programma1; }
funzione2(){ programma2; }
loop(){ if (pulsante premuto){ programm1(); } else{ programm2(); } }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 138
|
 |
« Reply #4 on: November 14, 2012, 11:25:38 am » |
io intendevo avviare un programma o l'altro in base a che bottone schiaccio una cosa del genere l'avevo provata quando cercavo di impostare un bottone per avviare il programma avevo scritto una cosa del genere
const int button=2; const int led=3; int buttonstate=0; void setup() { pinMode(button,INPUT); } void loop() { buttonstate=digitalRead(button); if(buttonstate==HIGH) { controllo(); //avvia il programma } else { digitalWrite(led,HIGH); } }
ma non va ovvero avvia subito il programma i collegamenti sono giusti perchè li ho copiati dagli esempi di frizing e ricontrollati più volte
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #5 on: November 14, 2012, 11:27:41 am » |
Allora non ho capito cosa devi fare.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 138
|
 |
« Reply #6 on: November 14, 2012, 11:30:58 am » |
praticamente quando accendo arduino (gli do corrente) non deve fare niente deve solo aspettare che io schiacci uno dei due bottoni e in base a quale bottone schiaccio avvia un programma diverso scusa se non mi ero spiegato bene 
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #7 on: November 14, 2012, 11:36:49 am » |
Una cosa così: funzione1(){ programma1; }
funzione2(){ programma2; }
loop(){
// Aspetto la pressione di un tasto a=digitalRead(3); b=digitalRead(4); while (! ((a==HIGH ) || (b==HIGH))){ a=digitalRead(3); b=digitalRead(4); }
// tasto premuto if (a==HIGH){ programm1(); } else{ programm2(); } }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 138
|
 |
« Reply #8 on: November 14, 2012, 11:43:16 am » |
scusa ae continuo a rompere ma sono stupido  ci sono delle cose che non capisco del programma (l'avevo detto che ero stupido  ) while non significa finchè ovvero non dovrebbe leggere i valori solo finché uno dei tasti è premuto? while (! ((a==HIGH ) || (b==HIGH))){ a=digitalRead(3); b=digitalRead(4); } e poi nella seconda parte del programma non ho capito una cosa...  dice che se schiaccio il bottone a avvia il programma 1 altrimenti se non lo schiaccio avvial il programma 2... ma se non premo niente ?? 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #9 on: November 14, 2012, 11:44:11 am » |
praticamente quando accendo arduino (gli do corrente) non deve fare niente deve solo aspettare che io schiacci uno dei due bottoni e in base a quale bottone schiaccio avvia un programma diverso
Non sono "programmi" ma routine. E' il classico esempio della chiamata condizionale: if (qualcosa) eseguiQuesto(): else eseguiQuestAltro(); Ma hai sempre 1 unico programma che racchiude tutto. Nel mondo dei microcontrollori non c'è la distinzione di programmi come file o software separati che richiami a seconda di qualcosa. Devi scrivere un unico sketch e poi mandare in esecuzione la parte di codice che ti interessa in base ad una condizione.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #10 on: November 14, 2012, 11:45:14 am » |
scusa ae continuo a rompere ma sono stupido  ci sono delle cose che non capisco del programma (l'avevo detto che ero stupido  ) while non significa finchè ovvero non dovrebbe leggere i valori solo finché uno dei tasti è premuto? while (! ((a==HIGH ) || (b==HIGH))){ a=digitalRead(3); b=digitalRead(4); } e poi nella seconda parte del programma non ho capito una cosa...  dice che se schiaccio il bottone a avvia il programma 1 altrimenti se non lo schiaccio avvial il programma 2... ma se non premo niente ??  While vuol dire "mentre". while (a == 1) { fai_qualcosa } "mentre a è uguale ad 1 fai_qualcosa"
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #11 on: November 14, 2012, 11:46:15 am » |
Allora. Questo pezzo di codice: a=digitalRead(3); b=digitalRead(4); while (! ((a==HIGH ) || (b==HIGH))){ a=digitalRead(3); b=digitalRead(4); } legge lo stato dei 2 tasti e blocca l'esecuzione del loop fino a che non se ne preme uno dei due. La condizione "! ((a==HIGH ) || (b==HIGH))" è vera solo se tutet e duei tasti sono off. Quando ne premi uno dei 2 la condizione diventa falsa esce dal ciclo e la if successiva controlla quale dei due hai premuto. In quel punto per forza ne hai premuto uno dei due.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 138
|
 |
« Reply #12 on: November 14, 2012, 11:48:25 am » |
aaaaaa ok grazie ora ho capito  mi ci è voluto un po ma alla fine ci sono arrivato 
|
|
|
|
|
Logged
|
|
|
|
|
Roma (RM)
Offline
God Member
Karma: 3
Posts: 634
|
 |
« Reply #13 on: November 14, 2012, 11:50:15 am » |
Così forse è pure più facile e più corretto: funzione1(){ programma1; }
funzione2(){ programma2; }
loop(){ a=digitalRead(3); b=digitalRead(4);
if (a==HIGH){ programm1(); } else if (b==HIGH){ programm2(); } }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 138
|
 |
« Reply #14 on: November 14, 2012, 11:51:44 am » |
ok grazie  adesso appena posso provo e vi faccio sapere 
|
|
|
|
|
Logged
|
|
|
|
|
|