Cours Arduino
Cours Arduino
Cours Arduino
Matériel
1
La carte Arduino repose sur un circuit intégré (un mini ordinateur appelé
également micro-contrôleur) associée à des entrées et sorties qui
permettent à l'utilisateur de brancher différents types d'éléments externes.
Il existe un grand nombre de variantes :
le Lilipad, pour fixer sur des vêtements, le RBBB qui est une carte très
petite et économique etc...
http://arduino.cc/en/Main/Hardware
le Teensy, ne fait pas proprement partie des cartes Arduino, mais on peut le
programmer à partir de l'environnement Arduino. Son processeur est plus
puissant, les E/S sont plus nombreuses, il est minuscule et on peut disposer
d'un interface USB MIDI natif...
http://www.pjrc.com/teensy/
Logiciel
L'environnement de programmation Arduino
(IDE en anglais) est une application écrite
en Java inspirée du langage Processing.
Save : sauvegarde le programme, si vous voulez le sauvegarder sous un autre nom, passer
par file/save as
Serial Monitor : pour ouvrir la fenêtre qui permet de visualiser les données transmise par le
port série de l'Arduino (très pratique pour le débogage...)
2
historique
Le projet Arduino est né en hiver 2005. Massimo Banzi enseigne dans une école de Design à Ivrea
en Italie, et souvent ses étudiants se plaignent de ne pas avoir accès à des solutions bas prix pour
accomplir leurs projets de robotique. Banzi en discute avec David Cuartielles, un ingénieur
Espagnol spécialisé sur les micro-contrôleurs…
Ils décident de créer leur propre carte en embarquant dans leur histoire un des étudiant de Banzi,
David Mellis qui sera chargé de créer le langage de programmation allant avec la carte. En deux
jours David écrira le code! Trois jours de plus et la carte était crée…Ils décidèrent de l’appeler
Arduino (un bar fréquenté par les élèves à proximité de l’école)…
Ca devient un hit tout de suite auprès des étudiants. Tout le monde arrive à en faire quelquechose
très rapidement sans même avoir de connaissances particulière ni en électronique ni en
informatique: réponse à des capteurs, faire clignoter des leds, contrôler des moteurs… Ils publient
les schémas, investissent 3000 euros pour créer le premier lots de cartes: 200.
Les 50 premières partent directement à des élèves de l’école. En 2006 5 000 cartes vendues…En
2007 plus de 30 000! en 2011 : >120 000, sans compter les clones !
Prototype de l'Arduino.
3
Structure d'un programme
4
référence :
Structure
5
Variables et constantes
Les variables sont des expressions que vous pouvez utilisez dans les programmes pour stocker
des valeurs, telles que la tension de sortie d'un capteur présente sur une broche analogique.
• Déclaration des
variables
6
Fonctions
Entrées/Sorties Temps Trigonométrie
Numériques • unsigned long millis() • sin(rad)
• pinMode(broche, mode) • unsigned long micros() • cos(rad)
• digitalWrite(broche, • delay(ms) • tan(rad)
valeur) • delayMicroseconds(us)
• int digitalRead(broche)
Bits et Octets
Entrées analogiques Math
• lowByte()
• int analogRead(broche) • min(x, y) • highByte()
• analogReference(type) • max(x, y) • bitRead()
• abs(x) • bitWrite()
Sorties "analogiques" • constrain(x, a, b) • bitSet()
(génération • map(valeur, toLow, • bitClear()
d'impulsion) fromHigh, toLow, • bit()
toHigh)
• analogWrite(broche, • pow(base, exposant)
valeur) - PWM
• sq(x) Interruptions Externes
• sqrt(x)
Entrées/Sorties • attachInterrupt(interrupti
Avancées Pour davantage de fonctions
on, fonction, mode)
mathématiques, voir aussi la • detachInterrupt(interrupt
• tone()
librairie math.h : log, log10, ion)
• noTone()
• shiftOut(broche, asin, atan, acos, etc...
BrocheHorloge,
Interruptions
OrdreBit, valeur)
• unsigned long Nombres randomisés • interrupts()
pulseIn(broche, valeur) (hasard) • noInterrupts()
• randomSeed(seed)
Communication • long random(max) Voir également la librairie
• long random(min, max) interrupt.h.
• Serial
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceEtendue
7
Démarrer avec Arduino sous Windows
1 | Obtenir une carte Arduino et un câble USB
8
6 | Ouvrir l'exemple « blink »
Ouvrir le programme (sketch)
File > Examples > 1.Basics > Blink.
9
7 | choisir la carte UNO
après quelques secondes, la LED orange qui est raccordée à la broche 13 devrait clignoter.
En cas de problème : troubleshooting suggestions.
The text of the Arduino getting started guide is licensed under a Creative Commons Attribution-
ShareAlike 3.0 License. Code samples in the guide are released into the public domain.
10
Confronter la théorie à l'épreuve de la réalité...
La carte Arduino est une petite chose fragile, il convient de bien en
comprendre ses limites d'utilisation et vérifier la compatibilité avec les
matériels que l'on souhaite y raccorder...
Tension :
le microcontrôleur placé sur la carte est prévu pour fonctionner entre
3,3V et 5V.
Intensité :
le courant de sortie de chaque broche (D0 à D13) ne doit pas dépasser
40mA
le courant issu du port USB ne doit pas dépasser 500mA
exemple :
on souhaite actionner un moteur de 6W sous 5V par l'Arduino, alimenté par l'USB, est-ce
réalisable ?
11
Schémas de référence
LED :
Une diode électroluminescente (DEL ou LED ) est un composant opto-
électronique capable d’émettre de la lumière lorsqu’il est parcouru par un courant
électrique.
Une diode électroluminescente ne laisse passer le courant électrique que dans un
seul sens (le sens passant).
lorsqu'elle est traversée par un courant, la LED oppose une tension fixe
– 1,9V pour une LED rouge,
– 3,2V pour les diodes blanches, ou autres couleurs
– voir les notices des diodes avant d'utiliser.
raccordement à l'Arduino :
R=
12
bouton, interrupteur :
Remarque : lorsque le bouton n'est pas actionné, la broche 5 est « en l'air », le fil va se comporter
comme une antenne de radio et l'état de la broche va varier en permanence. Il faut donc que le
niveau logique de la broche d'entrée soit fixé en permanence. Pour cela on met en oeuvre une
résistance de « pullup » qui va tirer le potentiel de la broche vers le 5V, lorsque le bouton est au
repos.
Void setup() {
pinMode(4, INPUT); // la broche 5 se comporte comme une entrée
digitalWrite(4, HIGH); // une résistance est raccordée entre la broche 5 et le+5V dans le microcontrolleur
}
void loop() {
…
if(digitalRead(4) == LOW) // attention, logique négative...
{
//faire quelque chose lorsqu'on appuie sur le bouton.
}
}
13
moteur :
Les moteur électriques à courant continu consomment trop de courant pour être commandés
directement par une broche de l'Arduino, de plus ils sont inductifs : ils créent des surtensions à
leurs bornes, il faut donc protéger le montage avec une diode de roue libre.
Il en va de même avec les relais.
On peut aussi utiliser un transistor à effet de champ type N : par exemple IRF Z34N
Servomoteur :
Un servomoteur est constitué d'un moteur, d'un
capteur de position et d'un régulateur électronique. Le
fonctionnement du moteur est asservi à la position de
l'axe.
On le commande en lui indiquant quel angle doit
prendre son axe (entre 0 et 180°) le moteur se met
alors en marche jusqu'à ce que la position soit
atteinte.
En utilisant une bibliothèque toute faite : #include
<Servo.h>
il devient très simple de mettre en œuvre des
servomoteurs de modélisme.
Raccordement :
marron : masse
rouge : +5V
orange : commande, à raccorder à une broche de sortie de
l'Arduino
14
potentiomètre, utilisation des entrées analogiques
interface I2C :
15
Entrée midi
Sortie midi :
16
les liens :
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?
n=Main.DebuterInstallationWindows
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?
n=Main.DebuterPresentationLogiciel
http://arduino.cc/fr/Main/DebuterPresentationLogiciel
http://arduino.cc/en/Guide/Windows#toc1
licence : CC
sources : http://arduino.cc/
17