Tutoriels >> Système d'exploitation Windows/Linux Système d'exploitation Windows/Linux >> Cours sur le système informatique Cours sur le système informatique >> Apprendre à programmer avec Arduino Apprendre à programmer avec Arduino

Apprendre à programmer avec Arduino






Chapitre 1: Premiers pas avec Arduino



Arduino, c'est quoi ?



Arduino est un système embarqué composé d'un microcontrolleur et des I/O. (entrées/sorties)
C'est à l'utilisateur de programmer ce microcontrolleur à l'aide d'un langage (Arduino), afin de gérer les entrées/sorties comme bon vous semble.
Dans ce cours progressif, nous allons d'abord commencer par faire clignoter des Leds. Une fois que vous aurez bien compris le principe, vous pourrez apprendre les choses vraiment intéressantes.

Système embarqué d'un Arduino Uno officiel

Chapitre 2: Clignottement d'une Led à 1 Hz



Premier programme



Nous allons faire clignotter une Led. Pour des raisons de simplicité, nous décidons d'utiliser le pin 13 de l'arduino. Etant donné que Arduino possède une led intégré sur le pin 13, il n'est pas nécessaire de connecter une led sur celui-ci. Si toutefois vous voulez installer votre propre led, n'oubliez pas de placer une résistance de 330 ohms afin de protéger votre led. (Arduino délivre 5V à l'état HIGH !)

Programme



Code c:
const int ledPin = 13;

void setup() {
   pinMode(ledPin, OUTPUT);
}

void loop() {
   digitalWrite(ledPin, HIGH);
   delay(500);
   digitalWrite(ledPin, LOW);
   delay(500);
}


Envoyez le code sur votre Arduino. Vous devez voir la led clignotter à la fréquence de 1Hz.


Chapitre 3: Communication Arduino / PC avec le port série



Communication série



Lorsque vous programmer, il est utile de pouvoir afficher des informations dans une console. Dans le monde de la programmation, c'est également utilisé pour le débuggage. Si vous programmez d'autres langages comme le C, cela doit vous être familier.

Cependant, Arduino ne possède pas nativement un écran (quoique on pourrait en ajouter). C'est pour cette raison que le port série est utilisé pour communiquer avec l'ordinateur. La communication est bidirectionnelle. L'ordinateur communique avec Arduino (pour transmettre des ordres, ...).

Puisque le port USB de l'arduino est un port série, on peut l'utiliser comme bus de communication avec le PC.

Communication avec le port série USB de l'Arduino

Communiquer de Arduino vers le PC



Code c:
void setup() {
   Serial.begin(9600);
}

void loop() {
   Serial.println("Je suis un message envoyé de l'Arduino vers le PC");
}


Serial.begin(9600) permet de initialiser la librairie Serial. En paramètre, vous devez fournir la vitesse de communications. Ici, c'est 9600 bauds par seconde. C'est une valeur standart très utilisée. Vous pouvez augmenter cette valeur et obtenir des communications plus rapides.

Testez votre programme avec la console série



Pour tester votre programme, tapez sur CTRL + SHIFT + M. La console série devrait alors apparaitre et vous pouvez voir le message envoyé par Arduino au PC.


Chapitre 4: Un télérupteur



Mise en situation



On veut allumer ou éteindre une led avec un bouton poussoir (BP). Lorsqu'on appui sur le BP, la led devra s'allumer. Un nouvel appui permet d'éteindre la led.

Branchage du circuit électronique sur Arduino



Pour réaliser le circuit, vous devrez placer :
  • une led protégée par une résistance de 330 ohm et branchée sur la pin 13;
  • un BP placé sur la pin 7.


Bien sûr, vous pouvez choisir d'autres pins, seuls les numéros de pin dans votre code seront différents.

Programme



Si vous avez réalisé cet exercice, vous devriez obtenir un programme ressemblant à ça :

Code c:
const int BP = 7;
const int led = 13;
boolean ledState = false;

void setup() {
   pinMode(BP, INPUT);
   pinMode(led, OUTPUT);
}

void loop() {
   if(digitalRead(BP)) { //Appui sur le BP
      ledState = !ledState;
      digitalWrite(ledState);
   }
   while(!digitalRead(BP)); //on attend que le BP soit relâché
}


Si vous exécutez ce code, vous apercevez que le code ne fonctionne pas comme il devrait. En effet, je dois vous parler d'un problème très connu en électronique : le problème du rebond.

Le problème du rebond



Lorsque vous appuyez sur un interrupteur (partie mécanique), le contact électrique ne sera pas parfait entre le moment ou vous appuyez sur le bouton, et le moment où vous le relâcher. Donc des signaux HIGH et LOW vont apparaître aléatoirement.

Graphique expliquand le problème du rebond en utilisant Arduino avec un BP

t1 est le moment où le BP est relâché. t2 est le moment où le BP est appuyé.
Le premier graphique est le cas idéal dans un monde parfait. Le second graphique met en évidence le problème rencontré. Arduino va lire plusieurs LOW, HIGH, LOW, ... La transition ne sera pas parfaite et nous devons en tenir compte dans notre programme.
Une solution serait de temporiser le programme pendant 50ms. On peut considérer que la transition aura eu le temps d'avoir lieu après ce délai.

Programme en tenant compte du rebond



Voici le nouveau programme corrigé.

Code c:
const int BP = 7;
const int led = 13;
const delai_rebond = 50;
boolean ledState = false;

void setup() {
   pinMode(BP, INPUT);
   pinMode(led, OUTPUT);
}

void loop() {
   if(digitalRead(BP)) { //Appui sur le BP
      ledState = !ledState;
      digitalWrite(ledState);
      delay(delai_rebond); // on s'assure que la transition soit parfaite en t1
   }
   while(!digitalRead(BP)); //on attend que le BP soit relâché
   delay(delai_rebond); // on s'assure que la transition soit parfaite en t2
}


Vous pouvez tester le programme. Lorsque vous appuyez sur le BP, votre led va s'allumer. Un nouvel appui dessus va éteindre la led.

Apprendre à programmer avec Arduino
Auteur Grégory Bastin
Date de création 09/02/2016 à 15h30
Dernière date d'édition 13/02/2016 à 21h08
Avancement 10 %
Nombre de fois consultés 18077
Commentaires Ajouter un commentaire
Affichage complet du tutorial
Connecté(s) 1 connectés (0 membres, 1 invités)