Premiers pas
Afin de se familiariser un peu avec la « bête », et avant de partir seul à l’aventure, voici une petite visite guidée, ponctuée d’exercices.
- Lu intégralement la présentation,
- Répondu au Quiz, jusqu’à obtenir la note maximale !!!
Préparation
- Lancer le logiciel Arduino,
- Brancher la carte Arduino au PC grâce au câble USB,
Le nom de la carte (Arduino Uno) et le port (COMx) doivent apparaitre dans le menu déroulant de la barre d’outil :
- Dans le cas contraire, depuis le menu déroulant faire Sélectionner une autre carte et un autre port … ou bien de puis le menu, faire Outils>Port:
- sélectionner le port série (nommé « COMx (Arduino UNO) » ) sur lequel est branché la carte (généralement le dernier de la liste).
Le microcontrôleur est désormais prêt à fonctionner …
Le programme minimum
Lorsqu’on lance le logiciel Arduino pour la première fois (ou que l’on fait Fichier/Nouveau), le programme suivant apparait :
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
C’est le plus petit programme que l’on puisse faire avec un Arduino … et il ne sert à RIEN !
Mais il contient les deux fonctions obligatoires : setup()
et loop()
.
La fonction d’initialisation setup()
Cette fonction est exécutée une seule fois, à chaque du microcontrôleur.
void
devantsetup
signifie que cette fonction ne renvoie rien.
La fonction de boucle loop()
Aussitôt après la fonction setup()
, la fonction loop()
est exécutée en boucle : elle se répète à l’infini (jusqu’à la réinitialisation ou la mise hors tension du microcontrôleur).
Les commentaires
Afin de rendre le code plus clair, rajouter des explications qui aident à sa lecture (par quelqu’un d’autre ou par soi-même !), on peut (il faut !!) y placer des commentaires :
- soit après
//
:
// commentaire sur une seule ligne
- soit entre
/*
et*/
:
/* du commentaire sur plusieurs lignes */
En résumé …
Pour tous les exercices qui suivent, il est conseillé d’utiliser le shield breadboard du kit :
Exercice 1 : faire clignoter une LED
Téléversement du microgiciel
Fichier > Exemples > 01.Basics > Blink
Le programme s’exécute sur la carte automatiquement après le téléversement :
la LED clignote !
Quelques explications
La plupart des cartes Arduino ont une LED intégrée. Sur le modèle UNO, elle est liée au port numérique 13 et elle est orange.
Modifier le programme « Blink » pour faire clignoter la LED intégrée selon le rythme suivant :
0.1 s allumée … 0.8 s éteinte … 0.1 s allumée … 0.8 s éteinte …
Modifier à nouveau le programme pour envoyer un S.O.S. en code morse : · · · — — — · · ·
Câblage d’une LED externe
RAPPEL : avant tout câblage électrique, débrancher le microcontrôleur !
Lire les articles :
Matériel nécessaire :
- une LED et sa résistance 220Ω (Rouge – Rouge – Marron)
Schéma :
À l’aide de la platine de prototypage (breadboard), réaliser le câblage de la LED externe, de sorte qu’elle soit elle aussi pilotée par le port numérique 13.
Vérifier qu’elle s’allume (et clignote !) après le mise sous tension de l’Arduino.
Exercice 2 : faire varier l’intensité d’une LED
L’objectif est de faire varier l’intensité de la LED en utilisant un petit potentiomètre.
Téléversement du microgiciel
Fichier > Exemples > 03.Analog > AnalogInOutSerial
Lire les articles :
Matériel nécessaire :
- une LED et sa résistance 220Ω (Rouge – Rouge – Marron)
- un potentiomètre 10kΩ
Schéma :
La LED est câblée comme dans l’exercice précédent (en série avec une résistance), sauf qu’elle doit être sur un port numérique capable de générer un signal PWM (le port 9 dans le programme).
Le potentiomètre est relié à un port analogique, afin de permettre acquisition de la consigne d’intensité de la part de l’utilisateur :
RAPPEL : avant tout câblage électrique, débrancher le microcontrôleur !
En utilisant le shield de prototypage (avec breadboard), réaliser le montage de la LED et du potentiomètre.
Tester le bon fonctionnement du montage
Comment ça marche ?
Acquisition de la consigne
Le potentiomètre est utilisé pour acquérir la consigne de l’utilisateur : monté en diviseur de tension, la tension sur son connecteur central (relié au curseur) varie ainsi de 0V à 5V.
Le port analogique utilisé est le port A0
, valeur stockée pour ce programme dans une constante de type int
appelée analogInPin
) :
const int analogInPin = A0;
Dans la boucle principale, la tension sur le connecteur A0 est convertie en nombre grâce la fonction analogRead()
, puis affectée à une variable sensorValue
:
sensorValue = analogRead(analogInPin);
Variation de l’intensité lumineuse
En principe, un port numérique ne peut délivrer qu’une information logique (« tout ou rien ») : allumé/éteint ou état haut (HIGH
) ou bas (LOW
).
Mais grâce à la technique PWM (Pulse Width Modulation), le port numérique choisi est capable de délivrer une information (presque) analogique, donné par la valeur moyenne du signal rectangulaire.
L’instruction
analogWrite(analogOutPin, outputValue);
génère un signal PWM de valeur outputValue
sur le port numérique analogOutPin
.
outputValue
est un nombre entier (int
) compris entre 0 et 255.
Adaptation des valeurs
La valeur sensorValue
, obtenue via le port analogique, est comprise entre 0
(0V sur la broche) et 1023
(5V sur la broche).
La valeur attendue par la fonction analogWrite()
, outputValue
, doit être comprise entre 0
et 255
.
Il faut opérer un « changement d’échelle », ce qui est réalisé par la fonction map
:
outputValue = map(sensorValue, 0, 1023, 0, 255);
En résumé :
Exercice 3 : les vases communicants
Lire les articles :
Matériel nécessaire :
- deux LED et leurs résistances (voir les bases du câblage)
- 1 potentiomètre 10kΩ
- Ajouter une autre LED au circuit de manière à ce que les deux LED puissent êtres commandées indépendamment (les deux LED doivent donc être pilotées par des ports numériques différents !).
- Modifier le programme de telle sorte qu’à la rotation du potentiomètre, l’intensité lumineuse d’une des deux LED augmente tandis que celle de l’autre diminue.
D’autres exercices …
Et encore :
- Led RGB
- ...