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, ...)

Made with Slides.com