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
- 581