22 Novembre 2013

Le Switch

Nous allons profiter de ce programme pour voir le SWITCH, ou aiguillage à plusieurs voies.
pas FB

choisir une led à allumer

Dans le programme précédent, on n'avait rien branché sur la plaquette.
Maintenant, on branche de la manière habituelle 3 leds de couleurs différentes sur les sorties numériques
en 2 la jaune, en 3 la verte, en 4 la rouge.
On va indiquer à Arduino, via le moniteur série, laquelle on veut allumer.

                  /* 3 couleurs */

// constantes :
const int ledJ = 2;
const int ledV = 3;
const int ledR = 4;
// Variables :
int i=0;
int lu;
// déclaration de fonction
void efface(void);

void setup()   {
      pinMode(ledR, OUTPUT);
      pinMode(ledV, OUTPUT);
      pinMode(ledJ, OUTPUT);
      Serial.begin(9600);
  }

void loop()   {
    if (Serial.available() > 0){
        lu = Serial.read();
        delay(100);
    }
    switch(lu){
        case 'r':
        case 'R':
            efface();
            digitalWrite(ledR, HIGH);
            break;
        case 'v':
        case 'V':
            efface();
            digitalWrite(ledV, HIGH);
            break;
        case 'j':
        case 'J':
            efface();
            digitalWrite(ledJ, HIGH);
            break;
        default:
            efface();
        }       //   fin de switch
  }             //   fin de loop()

void efface()   {
    digitalWrite(ledR, LOW);
    digitalWrite(ledV, LOW);
    digitalWrite(ledJ, LOW);
}


Utilisation des broches d'Arduino

Théoriquement, les 54 broches peuvent être utilisées comme entrées/sorties digitales.
En réalité, quelques unes sont utilisées par certaines fonctions de la carte qu'il faudrait alors désactiver.
Les broches digitales 0 et 1 sont utilisées par la liaison carte-PC.
On évite donc de s'en servir dans nos applications.



Les constantes

Ce sont des emplacement réservés en mémoire, comme les variables, mais dont la valeur ne varie jamais.
On les crée en écrivant "const" au début de leur déclaration.
Leur intérêt est que le compilateur vérifie qu'on ne tente pas de les modifier.




Les nombres décimaux



Jusqu'à maintenant, nous n'avions utilisé que des nombres entiers.
Un nombre décimal se déclare par "float", abréviation de nombre en virgule flottante.
Pour avoir un résultat en float, la déclaration n'est pas suffisante. Il faut aussi qu'un terme de l'opération soit exprimé sous forme décimale.
exemple


float reponse;
...
reponse = 3 / 2 ;       reponse vaudra 1
reponse = 3 / 2.0 ;    réponse vaudra 1.5

Le programme float.ino vous montre l'emploi de nombres décimaux

        /* essai pour découvrir les 'float' */

int a;
float b;
float c;

void setup()   {
      Serial.begin(9600);
      a = 3/2 ;
      b = 3/2 ;
      c = 3/2.0 ;
      Serial.print ("a vaut ");
      Serial.println (a);
      Serial.print ("b vaut ");
      Serial.println (b);
      Serial.print ("c vaut ");
      Serial.println (c);
}

void loop()   {
      // on ne fait rien
}




Les types de variables


un byte est un nombre pouvant prendre 256 valeurs et qu'on stocke en mémoire dans 1 octet.
un int est un nombre pouvant prendre ~ 65000 valeurs et qu'on stocke en mémoire dans 2 octets.
un long est un nombre pouvant prendre ~ 4 milliards de valeurs et qu'on range en mémoire dans 4 octets. (~ signifie environ)
Quand on précise unsigned, ça veut dire qu'on aura toujours des valeurs positives.

un byte peut varier de -128 à +127
un unsigned byte peut varier de 0 à 255
un int peut varier de ~ -32000 à ~ +32000
un unsigned int peut varier de 0 à ~ +65000
un long peut varier de ~ -2,15 milliards à ~ +2,15 milliards
un unsigned int peut varier de 0 à ~ +4,3 milliards.

un peu d'arithmétique

Dans 1 bit, on stocke un nombre pouvant prendre 2 valeurs binaires (0 ou 1).
Dans  8 bits (1 octet), on stocke un nombre pouvant prendre 2 puissance 8 valeurs binaires donc 256 valeurs possibles.
Dans 16 bits (2 octets), on stocke un nombre pouvant prendre 2 puissance 16 valeurs binaires donc ~ 65000 valeurs possibles.
Dans 32 bits (4 octets), on stocke un nombre pouvant prendre 2 puissance 32 valeurs binaires donc près de 4,3 milliards.
un float est traité différemment des autres variables par le compilateur. Il contient un nombre en virgule flottante, notion qu'on n'étudiera pas ici.
Rappelons nous simplement qu'il sert à manipuler un nombre à virgule.

un peu d'anglais

Le mot switch désigne un interrupteur, et aussi un commutateur (interrupteur à plusieurs voies). En informatique, on le traduit plutôt par "aiguillage".
bit est la contraction de binary digit (chiffre binaire).
byte se traduit par octet (8 bits).
break signifie rupture. On le met dans un switch pour signifier que le cas envisagé ne va pas plus loin (on sort du switch).





haut de la page
flèche gauche Page Précédente : les chaînes de caractères           Page Suivante : Entrées analogiques flèche droite

Valid XHTML 1.0 Transitional