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
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”.