Programme :
- Présentation de la carte
- Présentation de l'IDE
- Structure d'un programme Arduino et intro à la programmation
- Commandes de base
- Electronique de base
- Prise en main avec quelques programmes simples
- Perspectives
digital pins (2 à 13) :
- input ou output digital (0 ou 255, LOW ou HIGH, 0V ou 5V)
- output "pseudo-analogique" (~PWM) :
modulation fréquentielle à 5V
analog pins (A0 à A5) :
input analogique 8 bits (0-255)
ex: luminance apparente d'une LED
(IDE = Integrated Development Environment)
= éditeur de texte + compilateur
(messages d'erreur lors de la compilation ou du téléversement)
0) Terminologie
1) Variables
2) Fonctions
3) Structures de contrôle
0) Terminologie
programme = suite d'instructions
instruction = expression suivie d'un point-virgule
expression = suite de composants élémentaires syntaxiquement correcte
composant élémentaire :
- identificateur (nom d'une variable ou d'une fonction = chaîne de caractères)
- mots-clés
- opérateurs (=, >, &&, ||, ...)
- accolades {}
0) Terminologie
Les mots-clés du langage C :
types et qualificateurs de types
structure de contrôle conditionnelle
structure de contrôle de boucle
0) Terminologie
Les opérateurs du langage C :
- affectation : =, +=, -=, *=, /=, %=, ++, -- (pour assigner une expression)
- arithmétique : +, -, *, /, % (pour faire une opération)
- relationnel : >, >=, <, <=, ==, != (pour comparer deux expressions)
==> le résultat est une expression booléenne (1 ou 0, true ou false)
ex : (a > b) est soit vrai soit faux
- booléen : &&, ||, ! (pour joindre ou inverser des expressions boléennes)
1) Variables
Une variable est un nom donné à un emplacement mémoire, qui sert à le référencer (plus facile qu'une adresse mémoire ex: 0x1F41AE33)
La taille de l'emplacement dépend du type de la variable
On peut stocker une valeur dans cet emplacement, la modifier, et la récupérer
Il faut déclarer une variable avant de l'utiliser. (L'espace mémoire est alloué au moment de la déclaration).
La portée du variable peut être :
- globale (si elle est déclarée dans l'entête du programme (avant les fonctions)
- locale (si elle est déclarée dans une fonction : elle est détruite à la sortie de la fonction)
1) Variables
Déclaration d'une variable :
variable_type variable_name;
Assignation d'une valeur à une variable :
variable_name = expression;
(L'expression doit être du même type que la variable)
int compteur;
ex:
ex:
compteur = 0;
Rem : On peut déclarer une variable et lui assigner une valeur en même temps :
int compteur = 0;
ex:
1) Variables
(liste complète dans la référence)
2) Fonctions
Une fonction est un bloc d'instructions effectuant une tâche donnée.
Une fonction peut :
- accepter des paramètres en entrée (des variables)
- retourner une valeur en sortie (une variable). Dans ce cas elle a un type défini. Dans le cas contraire, elle n'a pas de type (void)
Définition de la fonction:
Appel de la fonction:
3) Structures de contrôle
Ce sont des instructions spéciales qui permettent de dévier d'une excécution "linéaire" du code.
Pour ce qui nous concerne :
- Tester des conditions (if...else; switch...case)
- Créer des boucles (un bloc d'instructions répété) (for, while)
- Appeler une fonction
3) Structures de contrôle
Exemples :
if (a == b) c=0;
else c=1;
Attention :
L'opérateur = est l'opérateur d'assignation
L'opérateur == est l'opérateur (booléen) de comparaison
Si on utilise '=' à la place de '==' la condition est toujours respectée!
for (int i=0; i<10; i++)
analogWrite(pin, i*10);
0-255
0-1024
https://www.arduino.cc/reference/en/
liste exhaustive de la syntaxe (avec description):
schéma électrique
-
Vcc
= GND = Ground
Pourquoi une résistance en série? De quelle valeur?
Pourquoi une résistance en série? De quelle valeur?
Pour ne pas "griller" la LED :
Le courant doit être limité à ~20mA
Pourquoi une résistance en série? De quelle valeur?
Il faut donc
R >= (Vs-VL) / i
Modèle linéaire
Tension de seuil : VL
Connectique d'une breadboard :
Moniteur série
Moniteur série
Traceur série
On constate que le signal n'est effectivement pas analogique!
Préalable : le potentiomètre
pour avoir l'axe des ordonnées en Volts
Quand la luminosité augmente, la résistance interne diminue
==> la valeur lue augmente
10K
Exemple :
Commander une lampe avec un relais!
nécessite une bibliothèque externe
DHT11
Commander par la voix? (fréquence)
utilisation d'une bibliothèque externe :
arduinoFFT.h
utilisation d'une bibliothèque externe :
Servo.h
#include <Servo.h>
Servo mon_moteur;
//initialisation (Setup) :
mon_moteur.attach(PWM_pin);
//utilisation :
mon_moteur.write(valeur);
(entre 0 et 180° )
- Interfaçage avec d'autres langages :
Python (envoyer des emails, naviguer sur Internet, ...)
- Commander l'Arduino depuis son GSM :
programme Android + module Bluetooth
- utiliser des shields (drivers moteurs pour CNC, Wi-fi, ...)
- interactivité (LCD, boutons, télécommande, ...)