Pages: [1]   Go Down
Author Topic: code choix par defaut - vos remarques  (Read 966 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous,

Voila j'ai deux boutons poussoirs associés à des résistances, sur la même analog PIN (la numéro 5).

Selon le bouton pressé, la résistance qui alimente l'analog PIN varie.

Il en resulte que l'analogRead de la PIN donne des valeurs différentes selon que le bouton OUI, NON ou OUI+NON sont préssés

Mon bout de code doit permettre de déterminer le choix de l'utilisateur entre OUI et NON.

Dans le cas ou l'utilisateur ne fait pas de choix dans les 10 secondes, le choix par defaut doit etre OUI.

Ce code marche parfaitement, il répond a mes besoins.

Mais pensez vous qu'il y a plus simple, plus court, plus efficace ?

J'attends vos remarques avec impatience ! smiley-wink

Code:
int choix=0; // 1:OUI | 2:NON | 3:OUI+NON
int valeurchoix=0; // OUI:950-970 | NON:920-940 | OUI+NON:975-990
int t =0;
int choixPIN =5;


while (choix==0) {
  valeurchoix=analogRead(choixPIN);
  if(valeurchoix>=920 && valeurchoix<=940){
    choix=2;

  }
  else if(valeurchoix>=950 && valeurchoix<=970){
    choix=1;

  }
  delay(100);
  t=t+100;
  if(t>=10000){
    choix=1;
  }

}
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, utilise des macros.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un switch...... case aurait permis de gagner quelques lignes de code
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Luj06, qu'entends tu par macro ?

Tu veux dire une fonction define... ?


J'ai essayé avec un swtich case mais je n'arrivais pas a m'en sortir.
« Last Edit: August 20, 2009, 01:42:53 am by KiliYaBB » Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un truc genre:
Code:
#define TEST                  3000

ou

#define FAILED(hr) ((HRESULT)(hr) < 0)

Quote
Tu veux dire une fonction define... ?

ça n'a par contre rien à voir avec une fonction (mis à part la similitude pour le lecteur humain). c'est juste un clé que le précompilateur remplace dans le code avant la compilation.
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
#define TEST                  3000

ou

#define FAILED(hr) ((HRESULT)(hr) < 0)

whoh, je comprends rien  :o :o
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Voilà ce que ça donne en utilisant des macros.
J'ai utilisé une entrée analogique sur la patte 1.

Code:
#define SEUIL    10

#define VAL_1    930
#define VAL_2    960

int val;

#define  PRESS_1(pin)  ( (val = analogRead(pin)) && val > VAL_1 - SEUIL && val < VAL_1+SEUIL)

#define  PRESS_2(pin)  (analogRead(pin) > 512)

void setup()
{
  Serial.begin(9600);  
}

void loop()
{
  if (PRESS_1(1)) {
     Serial.println("Choix 1 !");
  }  
  if (PRESS_2(1)) {
     Serial.println("Choix 2 !");
  }  
  delay(500);
}
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci Luj06 !

Mais quel est lintérêt par rapport a mon code ? Pour le nombre de ligne, grosso modo la même chose, non ?

Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

"plus simple, plus court, plus efficace".

t'arrives pas à voir la différence ?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

c'est surtout le temps de traitement qui est amélioré

Bon dans ton exemple, c'est pas tres flagrant

mais dès que tu as un peu plus de code, tout ce qui est à base de "conditionnelle" , les while, les for, les if ... then, consomment du temps lié à leur execution
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 207
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, merci Yalefe !
Logged

Pages: [1]   Go Up
Jump to: