Pages: [1] 2   Go Down
Author Topic: multiprogramma  (Read 691 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti :=)
 io ho creato un programma per arduino( ma dai smiley )
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 smiley
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 723
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok grazie
ho letto ma non ho capito molto come dovrei fare smiley-razz
Logged

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

più o meno così:

Code:
funzione1(){
  programma1;
}

funzione2(){
  programma2;
}

loop(){
  if (pulsante premuto){
    programm1();
  }
  else{
    programm2();
  }
}
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora non ho capito cosa devi fare.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Una cosa così:

Code:
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 Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa ae continuo a rompere ma sono stupido smiley
ci sono delle cose che non capisco del programma (l'avevo detto che ero stupido   smiley-lol )
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... smiley
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 ?? smiley-lol
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa ae continuo a rompere ma sono stupido smiley
ci sono delle cose che non capisco del programma (l'avevo detto che ero stupido   smiley-lol )
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... smiley
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 ?? smiley-lol
While vuol dire "mentre".
while (a == 1) {
  fai_qualcosa
}

"mentre a è uguale ad 1 fai_qualcosa"
Logged


Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora.
Questo pezzo di codice:
Code:
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 Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

aaaaaa ok grazie ora ho capito smiley smiley

mi ci è voluto un po ma alla fine ci sono arrivato smiley
Logged

Roma (RM)
Offline Offline
God Member
*****
Karma: 3
Posts: 634
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Così forse è pure più facile e più corretto:

Code:
funzione1(){
  programma1;
}

funzione2(){
  programma2;
}

loop(){
  a=digitalRead(3);
  b=digitalRead(4);

  if (a==HIGH){
    programm1();
  }
  else if (b==HIGH){
    programm2();
  }
}

Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok grazie smiley adesso appena posso provo e vi faccio sapere smiley
Logged

Pages: [1] 2   Go Up
Jump to: