Arduino 2019

Seance 1

Les entrées/sorties tout ou rien

Voici le schéma de la carte Arduino Uno, avec en bleu et vert le nom des entrées/sorties comme elles sont définies dans le logiciel Arduino.

Lors de cette séance de TD nous allons utiliser des plateformes Arduino pour comprendre quelques éléments de base liés à la programmation de systèmes interagissant avec le monde réel à travers de capteurs et éventuellement (pour ceux qui avancent vite) avec des boucles action - perception - réaction.

Si vous souhaitez plus de renseignement sur ce qui est possible c'est ici


Faire clignoter une led

Il existe une multitude de pages d'exemple, j'ai pris celui-ci

On retient :

pinMode

digitalWrite

Mais cette méthode était pour les enfants !

Clignote avec les registres

Essayons de nous passer des instructions pinMode et digitalWrite en écrivant directement dans les registres.

Il faut déjà comprendre qu'afin de nous simplifier la vie Arduino a changé les noms d'origine des pins définis par ATMEL

La pin 2 que nous avons utilisée dans le premier exercice est la pin PD2 du circuit ATMEL

Si nous voulons faire clignoter la led, il faut mettre à 1 le bit 2 du registre de direction du PORTD, registre qui se nomme DDRD

Pour clignoter nous mettrons successivement à 1 et 0 le bit correspondant du PORTD

Faire varier la luminosité d'une led

Attention prenez bien la pin 3, toutes les pins ne permettent pas cette variation !

L'art du PWM

On retient :

analogWrite

Dans ce cas, on ne va pas jouer avec des instructions basiques, car c'est un peu complexe

Faire clignoter 2 leds

Faire clignoter les deux LED en même temps. L’une à 1Hz, la seconde à 2Hz.

Essayez maintenant des les faire clignoter respectivement à 0.3Hz et 0.7Hz.

La transmission de base : série asynchrone

  • le processeur Atmel de la carte Arduino à transmis par le port USB, les caractères "Hello" qui sont affichés dans une fenêtre que l'on nomme souvent Moniteur série ou Terminal.
  • C'est la transmission la plus simple qui existe dans le monde des processeurs, on l'appel transmission série asynchrone.

Lisez ce petit document : Transmission série

Sur notre Arduino, tout caractère envoyé sur la pin TXD (Transmission de Data) PD1 suivant la norme décrite dans le document pourra être décodé et affiché sur le Serial Monitor de la plateforme Arduino.

Pourriez générer le bon signal qui transmette un A ?

Transmettre une lettre

Pourriez vos généraliser cette méthode en écrivant une fonction qui prenne en entrée un caractère et le transmette ?

Transmettre une phrase

Il existe des phrases types qui permettent de transmettre tous les caractères de l'alphabet, vous avez le choix :

  • PORTEZ CE WHISKY AU JUGE BLOND QUI FUME
  • VOYEZ LE BRICK GEANT QUE J EXAMINE PRES DU WARF
  • THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

Pourriez vous écrire une fonction qui prenne en entrée une chaîne de caractère et la transmette ?

Lecture d'un caractère

Sur la pin 0, c'est à dire PD0, arrive sous le même format physique les caractères, entrés sur le clavier de votre machine lorsque vous êtes sur le terminal du logiciel ARDUINO.

Voici une copie du terminal, les caractères à transmettre doivent être entrés dans la ligne du haut, puis il faut cliquer sur envoyer.

Afin de ne pas transmettre de caractères de fin de ligne, vérifiez que dans les options en bas de l'écran vous ayez bien : pas de fin de ligne


Dans un premier temps, comprenez le mécanisme d'une entrée en utilisant l'instruction Serial.read, puis écrivez une fonction qui en scrutant PD0 va lire un caractère sans utiliser la bibliothèque Arduino

Capteur de distance

Celui-ci

On retient :

pulseIn


Le piège de l'interrupteur

Question a

Faire le branchement (et le programme correspondant) permettant d’afficher des messages “On” et “Off” sur la console selon que l’interrupteur est activé ou non.

Question b

Implanter un compteur qui s’incrémente de 1 à chaque clic (activation de l’interrupteur).

Remarque : la fonction millis() qui donne le nombre de millisecondes depuis le démarrage du programme peut s’avérer utile (ou non) en fonction de la solution que vous allez développer.

Question c

Afficher le compteur de clics à chaque fois que l’on appuie sur l’interrupteur tout en faisant clignoter une LED en continue à 2Hz.

Question d

Utiliser l’interrupteur pour faire passer alternativement une LED de “éteint” à “clignotant”.