1.11.9

News

Page  1 sur 3  > >>

2019-01-16
Catégorie : Arduino
Posté par : xavier
Un Circuit imprimé pour plusieurs sketches
2018-06-07
Catégorie : Arduino
Posté par : xavier
Des pistes pour developper un projet a base d'Arduino
2017-09-23
Catégorie : Expositions
Posté par : xavier

Les 4/5 Novembre 2017, au parc Savoie Expo de Chambéry (Savoie), se tiendra l'exposition Savoie Modelisme.

CMS - 1.11.9 - Bartolome
 

Et si on dialoguais avec le PC …

Et si on dialoguais avec le PC …

Quelques commandes pour continuer:

begin()

 

Permet de définir à quelle vitesse on communique (9600 par habitude).

Serial.begin(vitesse);

print()

Permet d'envoyer une chaîne de caractères au PC.

Serial.print(Chaine);

println()

Permet d'envoyer une chaîne de caractères au PC suivi d' CrLf pour retourner à la ligne.

Serial.println(Chaine);

read()

Permet de recevoir un caractère du PC.

Serial.read(Chaine);

available()

Permet de savoir si une chaîne a été reçue du PC

if (Serial.available()>0)

while()

Comme le for() il permet de répéter un bloc d’instruction, temps que la condition n’est pas vérifiée…

do... while

C'est une variante du while. Le while effectue le test avant d'entrer dans la boucle, le do...while effectue le test en sortant.

 

Programme N°6:

 

int recu = 0; // pour recevoir le code ASCII d'un caractère

void setup() {
    Serial.begin(9600); // ouvre le port série , à 9600 bauds
}

void loop() {
    // On vérifie qu'un caractère a été recu
    if (Serial.available() > 0) {
        // lit le caratère recu:
        recu = Serial.read();
        // répond au PC en disant ce qui a été recu:
        Serial.print("J'ai recu: ");
        Serial.print(recu); // en ASCII-codé décimal - Comme "DEC"
        Serial.print("\t"); // C'est une tabulation

        Serial.print(recu, DEC); // en ASCII-codé décimal
        Serial.print("\t"); // C'est une tabulation

        Serial.print(recu, HEX); // en ASCII-codé hexadecimal
        Serial.print("\t"); // C'est une tabulation

        Serial.print(recu, OCT); // en ASCII-codé octal
        Serial.print("\t"); // C'est une tabulation

        Serial.println(recu, BIN); // en ASCII-codé binaire
    }
}

 

Commentaires

Çà y est on communique... un peu. Ce programme permet de lire un caractère et de le traduire en code ASCII, hexadécimal, octal et binaire.

 

A remarquer:

- La communication avec le PC passe par le câble USB, celui la même qui nous a permis de charger le programme dans l'Arduino.

- Le caractère reçu est un chiffre. Et oui, l'informatique n'est que chiffres... Les caractères utilise le code ASCII pour être compris par le microprocesseur.

- Ce chiffre est décimal ou binaire. L’hexadécimal regroupe les bits par 4 donnant 16 valeurs possible de 0 à … F (10=A, 11=B, 12=C, 13=D, 14=E, 15=F). N'oublions pas que les ordinateurs comptent à partir de 0, les hommes à partir de 1!

- On ne reçoit qu'un seul caractère a la fois … patience!

- Toutes les commandes sont précédées de «Serial.»

- Le Serial.print() n'envoie qu'une seule chaîne à la fois: pas de concaténation!

- J'oubliais... Sur l'environnement de programmation Arduino vous disposez d'un terminal: Outils/Moniteur série (Ctrl Maj M)

C'est lui qu'il faut utiliser pour visualiser ce que votre Arduino a envoyé, comme pour lui envoyer des caractères... N'oubliez pas de valider vos envois avec la touche «Entrée» de votre PC.

Programme N°7:

String inputString = ""; // chaîne en cours de reception
boolean stringComplete = false; // drapeau indiquant si la chaîne est complete

void setup() {
   Serial.begin(9600); // initialisation de la liaison série à 9600 bauds
   inputString.reserve(200); // reserve 200 octets pour inputString
}

void loop() { // affiche la chaîne à la reception de celle ci:
   if (stringComplete) {
      Serial.println(inputString);
      inputString = ""; // effacement de la chaîne:
      stringComplete = false;
   }
}

/
* =======================================
Un évènement série est déclanché à l’arrivée de caractères sur la broche série RX. De multiples octets peuvent être disponible !
*/ =======================================
void serialEvent() {
   while (Serial.available()) { // get the new byte:
      char inChar = (char)Serial.read();
      inputString += inChar; // Ajoute le caractère reçu à la chaîne est cours de réception
      // Si le caractère reçu est LF, on positionne le drapeau stringComplete
      // afin que la chaîne soit traitée dans la boucle principale
      if (inChar == '\n') {
         stringComplete = true;
      }
   }
}

 

Commentaires

Çà y est on communique... un peu plus. Ce programme permet de lire une chaîne de caractère.

A remarquer:

- C’est la première fois que l’un utilise un événement, une interruption… Essayons de comprendre comment ça fonctionne (à minima) dans le chapitre suivant!

Previous page: Un petit pas en avant  Page suivante : Au fait