Initiation à Arduino
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
Initiation à Arduino
Présentation de la carte
Présentation de la carte
Présentation de la carte
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)
Présentation de la carte
PWM = Pulse Width Modulation
ex: luminance apparente d'une LED
Présentation de l'IDE
(IDE = Integrated Development Environment)
= éditeur de texte + compilateur
Présentation de l'IDE
(messages d'erreur lors de la compilation ou du téléversement)
Présentation de l'IDE
Structure d'un programme
Concepts de base de la programmation C
0) Terminologie
1) Variables
2) Fonctions
3) Structures de contrôle
Concepts de base de la programmation C
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 {}
Concepts de base de la programmation C
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
Concepts de base de la programmation C
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)
Concepts de base de la programmation C
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)
Concepts de base de la programmation C
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:
Concepts de base de la programmation C
1) Variables
(liste complète dans la référence)
Concepts de base de la programmation C
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:
Concepts de base de la programmation C
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
Concepts de base de la programmation C
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);
Commandes Arduino de base
0-255
0-1024
https://www.arduino.cc/reference/en/
liste exhaustive de la syntaxe (avec description):
Commandes Arduino de base
Electronique de base
schéma électrique
-
Vcc
= GND = Ground
Pourquoi une résistance en série? De quelle valeur?
Electronique de base
Pourquoi une résistance en série? De quelle valeur?
Pour ne pas "griller" la LED :
Le courant doit être limité à ~20mA
Electronique de base
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
Electronique de base
Connectique d'une breadboard :
"Hello World" : Blink
"Hello World" : Blink
Moniteur série
"Hello World" : Blink
Moniteur série
~PWM LED
Traceur série
On constate que le signal n'est effectivement pas analogique!
une LED alimentée en analogique...possible?
Préalable : le potentiomètre
une LED alimentée en analogique...possible?
une LED alimentée en analogique...possible?
pour avoir l'axe des ordonnées en Volts
Exemple 1 :
analog input : photorésistance
Quand la luminosité augmente, la résistance interne diminue
==> la valeur lue augmente
10K
Exemple 1 :
analog input : photorésistance
Exemple :
Commander une lampe avec un relais!
Exemple 1 :
analog input : photorésistance
Exemple 2 :
analog input : temp & humidity
nécessite une bibliothèque externe
DHT11
Exemple 3 :
tilt swith + buzzer
Exemple 4 :
micro + Fast Fourier Transform (FFT)
Commander par la voix? (fréquence)
utilisation d'une bibliothèque externe :
arduinoFFT.h
Exemple 5 :
arrosage automatique
utilisation d'une bibliothèque externe :
Servo.h
Exemple 5 :
arrosage automatique
#include <Servo.h>
Servo mon_moteur;
//initialisation (Setup) :
mon_moteur.attach(PWM_pin);
//utilisation :
mon_moteur.write(valeur);
(entre 0 et 180° )
Perspectives
- 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, ...)
Atelier Initiation Arduino
By simongiz
Atelier Initiation Arduino
Débuter avec le microcontrôleur programmable Arduino
- 425