Академический Документы
Профессиональный Документы
Культура Документы
• Arduino UNO
• Arduino UNO R3
• Arduino LEONARDO
• Arduino Mini
• Arduino Mega 2560
Port I2C
A4 – A5
Entrée DC 7-12 v
2,1 mm
SPI :Interface Série pour périphérique D10 : /SS D11 : MOSI D12 : MISO et D13 : SCLK.
Entrée DC 7-12 v
2,1 mm
SPI :Interface Série pour périphérique D10 : /SS D11 : MOSI D12 : MISO et D13 : SCLK.
En français :
www.mon-club-
elec.fr/mes_telechargements/arduino-0018-
fr.zip
void loop() {
}
La fonction
Cette fonction setup() est appelée une seule fois lorsque le programme commence. C'est
pourquoi c'est dans cette fonction que l'on va écrire le code qui n'a besoin d'être exécuté une
seule fois. On appelle cette fonction : "fonction d'initialisation". On y retrouvera la mise en
place des différentes sorties et quelques autres réglages. C'est un peu le check-up de
démarrage. Imaginez un pilote d'avion dans sa cabine qui fait l'inventaire:
Les fonctions permettent de segmenter le code afin de - patte 2 en sortie, état haut ?
- OK
créer des modules . Elles doivent être implantées en - timer 3 à 15 millisecondes ?
dehors des fonctions spéciales loop et setup ! - OK
...
Void test ()
{ Pour les appeler :
Code
}
Void test ();
Une fois que l'on a initialisé le programme il faut ensuite
créer son "cœur", autrement dit le programme en lui même.
void loop(){
LiquidCrystal_I2C lcd(0x27,20,4);
NewSoftSerial mySerialVoice(RxVoicePin,TxVoicePin);
NewSoftSerial mySerialBluetooth(RxBluetoothPin,TxBluetoothPin);
Les accolades
void setup() {
Int X = 4;
Voilà les types de variables les plus répandus :
Valeurs
Quel nombre il
Type stocke ?
maximales du Nombre sur X bits Nombre d'octets
nombre stocké
-3.4 x 10^{38}à
float décimale
+3.4 x 10^{38}
32 bits 4 octets
-3.4 x 10^{38}à
double décimale
+3.4 x 10^{38}
32 bits 4 octets
Si à présent notre variable "x" ne prend jamais une valeur négative
(-20, -78, ...), alors on utilisera un type non-signé.
C'est à dire, dans notre cas, un char dont la valeur n'est plus de -128 à
+127, mais de 0 à 255.
Voici le tableau des types non signés, on repère ces types par le mot
unsigned (de l'anglais : non-signé) qui les précède :
Valeurs
Quel nombre il Nombre sur X
Type maximales du Nombre d'octets
stocke ? bits
nombre stocké
entier non
unsigned char 0 à 255 8 bits 1 octets
négatif
entier non
unsigned int 0 à 65 535 16 bits 2 octets
négatif
entier non 0 à 4 294 967
unsigned long 32 bits 4 octets
négatif 295
Une des particularités du langage Arduino:
Valeurs
Quel nombre il Nombre sur X
Type maximales du Nombre d'octets
stocke ? bits
nombre stocké
entier non
byte 0 à 255 8 bits 1 octets
négatif
entier non
word 0 à 65535 16 bits 2 octets
négatif
entier non
boolean 0à1 1 bits 1 octets
négatif
Les variables booléennes:
Le langage Arduino accepte aussi une troisième forme d'écriture (qui lui
sert pour utiliser les broches de sortie du microcontrôleur) :
Int variable = LOW;
Int variable = HIGH;
http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-
commencer-en-electronique-et-en-programmation
Structure
Fonctions de base Variables et constantes Fonctions
Ces deux fonctions sont obligatoires dans tout Les variables sont des expressions que vous Entrées/Sorties Numériques
programme en langage Arduino : pouvez utilisez dans les programmes pour •pinMode(broche, mode)
•void setup() stocker des valeurs, telles que la tension de •digitalWrite(broche, valeur)
•void loop() sortie d'un capteur présente sur une broche •int digitalRead(broche)
Structures de contrôle analogique. Entrées analogiques
•if Constantes prédéfinies •int analogRead(broche)
•if...else Les constantes prédéfinies du langage Arduino Sorties "analogiques" (génération d'impulsion)
•for sont des valeurs particulières ayant une •analogWrite(broche, valeur) - PWM
•switch case signification spécifique. Entrées/Sorties Avancées
•while •HIGH | LOW •tone()
•do... while •INPUT | OUTPUT •noTone()
•break •true | false •shiftOut(broche, BrocheHorloge, OrdreBit, valeur)
•continue A ajouter : constantes décimales prédéfinies •unsigned long pulseIn(broche, valeur)
•return Expressions numériques Temps
Syntaxe de base •Expressions numériques entières •unsigned long millis()
•; (point virgule) Types des données •unsigned long micros()
•{} (accolades) Les variables peuvent être de type variés qui sont •delay(ms)
•// (commentaire sur une ligne) décrits ci-dessous. •delayMicroseconds(us)
•/* */ (commentaire sur plusieurs lignes) Synthèse des types de données Arduino Math
Opérateurs arithmétiques •boolean •min(x, y)
•= (égalité) •char •max(x, y)
•+ (addition) •byte •abs(x)
•- (soustraction) •int •constrain(x, a, b)
•* (multiplication) •unsigned int •map(valeur, toLow, fromHigh, toLow, toHigh)
•/ (division) •long •pow(base, exposant)
•% (modulo) •unsigned long •sq(x)
Opérateurs de comparaison •float (nombres à virgules) •sqrt(x)
•== (égal à) •double (nombres à virgules) Trigonométrie
•!= (différent de) •Les chaînes de caractères •sin(rad)
•< (inférieur à) •Les tableaux de variables •cos(rad)
•> (supérieur à) •void (fonctions) •tan(rad)
•<= (inférieur ou égal à) Conversion des types de données Nombres randomisés (hasard)
•>= (supérieur ou égal à) •char() •randomSeed(seed)
Opérateurs booléens •byte() •long random(max)
•&& (ET booléen) •int() •long random(min, max)
•|| (OU booléen) •long() Communication
•! (NON booléen) •float() •Serial
Opérateurs composés Référence
•++ (incrémentation) •Code ASCII (à finir)
•-- (décrémentation) (à revoir)
•+= (addition composée)
•-= (soustraction composée)
•*= (multiplication composée)
•/= (division composée)
Pour faciliter l ’élaboration d’une application, il existe des librairies pour
chaque interface. Ce sont des micros programmes.
Exemple :
Un truc très sympa avec Arduino, c'est que c'est facile à prendre
en main. Et ça se voit une fois de plus avec l'utilisation des
convertisseurs numérique -> analogique ! En effet, vous n'avez
qu'une seule nouvelle fonction à retenir : analogRead() !
analogRead();
Cette fonction va nous permettre de lire la valeur lue sur une entrée analogique
de l'Arduino. Elle prend un argument et retourne la valeur lue :
•L'argument est le numéro de l'entrée
analogique à lire (explication ci-dessous)
•La valeur retournée (un int) sera le
résultat de la conversion analogique-
numérique
Sur une carte Arduino Uno, on retrouve 6
CAN. Ils se trouvent tous du même côté de
la carte, là où est écrit "Analog IN" :
Exemple de lecture de la tension sur une broche analogique:
const int potar = 0; // le potentiomètre, branché sur la broche analogique 0
int valeurLue; //variable pour stocker la valeur lue après conversion
float tension; //on convertit cette valeur en une tension
void setup()
{
//on se contente de démarrer la liaison série pour visualiser la valeur
Serial.begin(9600);
}
Le schéma :
void loop()
{
//on convertit en nombre binaire la tension lue en sortie du potentiomètre
valeurLue = analogRead(potar);
void setup()
{
//définition des broches en sortie
pinMode(led_rouge, OUTPUT);
pinMode(led_verte, OUTPUT);
pinMode(led_bleue, OUTPUT);
}
void loop()
{
couleur(compteur_defilement); //appel de la fonction d'affichage
compteur_defilement++; //incrémentation de la couleur à afficher
if(compteur_defilement > 6) compteur_defilement = 0; //si le compteur
dépasse 6 couleurs
delay(500);
}
Suite du code
Le schéma :
Exemple de lecture de la tension sur une broche analogique et d’écriture sur un port numérique :
void couleur(int numeroCouleur)
{
switch(numeroCouleur)
{
case 0 : //rouge
analogWrite(led_rouge, 0); //rapport cyclique au minimum pour une
meilleure luminosité de la LED
//qui je le rappel est commandée en "inverse"
//(0 -> LED allumée ; 255 -> LED éteinte)
analogWrite(led_verte, 255);
analogWrite(led_bleue, 255);
break;
case 1 : //vert
analogWrite(led_rouge, 255);
analogWrite(led_verte, 0);
analogWrite(led_bleue, 255);
break;
case 2 : //bleu
analogWrite(led_rouge, 255);
analogWrite(led_verte, 255);
analogWrite(led_bleue, 0);
break;
case 3 : //jaune
analogWrite(led_rouge, 0);
analogWrite(led_verte, 0);
analogWrite(led_bleue, 255);
Suite du code
break;
Le schéma :
Exemple de lecture de la tension sur une broche analogique et d’écriture sur un port numérique :
case 4 : //violet
analogWrite(led_rouge, 0);
analogWrite(led_verte, 255);
analogWrite(led_bleue, 0);
break;
case 5 : //bleu ciel
analogWrite(led_rouge, 255);
analogWrite(led_verte, 0);
analogWrite(led_bleue, 0);
break;
case 6 : //blanc
analogWrite(led_rouge, 0);
analogWrite(led_verte, 0);
analogWrite(led_bleue, 0);
break;
default : //"noir"
analogWrite(led_rouge, 255);
analogWrite(led_verte, 255);
analogWrite(led_bleue, 255);
break;
}
}
Fin du code
Le schéma :
Afficheur LCD:
Le branchement
L'afficheur LCD utilise 6 à 10 broches de
Le schéma :
données ((D0 à D7) ou (D4 à D7) + RS + E) et
deux d'alimentations (+5V et masse). La
plupart des écrans possèdent aussi une entrée
analogique pour régler le contraste des
caractères. Nous brancherons dessus un
potentiomètre de 10 kOhms.
Les 10 broches de données peuvent être
placées sur n'importe quelles entrées/sorties
numériques de l'Arduino. En effet, nous
indiquerons ensuite à la librairie LiquidCrystal
qui est branché où.
Le montage à 8 broches de données
Afficheur LCD:
Comme écrit plus tôt, nous allons utiliser la librairie "LiquidCrystal". Pour l'intégrer c'est très simple, il suffit
de cliquer sur le menu "Import Library" et d'aller chercher la bonne.
Une ligne #include "LiquidCrystal.h" doit apparaitre en haut de la page de code (les prochaines
fois vous pourrez aussi taper cette ligne à la main directement, ça aura le même effet). Ensuite, il ne nous
reste plus qu'à dire à notre carte Arduino où est branché l'écran (sur quelles broches) et quelle est la taille
de ce dernier (nombre de lignes et de colonnes).
Nous allons donc commencer par déclarer un objet (c'est en fait une variable évoluée, plus de détails dans
la prochaine partie) lcd, de type LiquidCrystal et qui sera global à notre projet.
La déclaration de cette variable possède plusieurs formes LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5,
d6, d7) où rs est le numéro de la broche où est branché "RS", "enable" est la broche "E" et ainsi de suite
pour les données.
•LiquidCrystal(rs, enable, d4, d5, d6, d7) (même commentaires que précédemment
Ensuite, dans le setup() il nous faut démarrer l'écran en spécifiant son nombre de colonnes puis de
lignes. Cela se fait grâce à la fonction begin(cols,rows).
Écran LCD:
Le code:
void setup()
{
lcd.begin(16,2); //utilisation d'un écran 16 colonnes et 2 lignes
lcd.write("Salut les OMs !"); //petit test pour vérifier que tout marche
}
void loop()
{
Elle vient d’annoncer l’Arduino Tre une carte conçue en partenariat avec BeagleBoard et qui
embarque un processeur de la famille Cortex A8 d’ARM (un TI Sitara AM335x à 1GHz) ainsi
qu’un micro-contrôleur AVR à ses côtés (un ATMega32U4 comme celui de l’Arduino Due).
A noter que le Sitara AM335x est le même que celui de la BeagleBone Black, ce qui garanti le
support des mêmes distributions Linux et d’un support matériel accru. La disponibilité est
annoncée pour le printemps 2014 et de prix officiel pour l’instant.
L’Arduino Yún (avec routeur Ethernet/WiFi sous OpenWRT/Linux intégré) étant à 52€, on peut
spéculer que le prix du Tre devrait être du même ordre de grandeur c’est à dire dans les 70€.
Autre annonce, celle d’une carte avec processeur Intel x86, l’Intel Galileo conçue en
collaboration avec la fondation Arduino.
Elle embarque un processeur SoC Quark X1000 à 400MHz qui reprend l’architecture de
la famille Atom et qui devrait avoir des performances supérieures aux meilleurs
représentants de la famille Cortex Mx d’ARM, mais pour des caractéristiques de
consommation inconnue.
La disponibilité est annoncée pour fin Novembre et le prix sous les 60$. Cette carte est
aussi capable de faire tourner un système d’exploitation Linux.
Oscar, DJ0MY
http://www.cqdx.ru/ham/do-it-yourself/the-nanokeyer-is-an-
arduino-nano-based-cw-contest-keyer/
http://m0xpd.blogspot.co.uk/2013/02/arduino-dds-shield.html
Module
AD9850 DDS
Disponible sur EBay
http://www.semageek.com/un-librarie-eagle-pour-creer-un-shield-arduino-facilement/
https://github.com/adafruit/Adafruit-Eagle-Library
Librairie Eagle
EasyVR
Matériels nécessaire:
• L’Arduino.
Les logiciels :
https://acapela-box.com/AcaBox/index.php
EasyVR Commander
• L’Arduino.
Le code: ( le début )
Les librairies
#include <SPI.h>
#include <Ethernet.h>
Micro SD
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
Pour y stocker
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; les pages internet
IPAddress ip (192,168,1,177);
EthernetServer server(80);
Matériels nécessaire :
void setup()
{ AC250V 10A, AC150V 10A; DC30V 10A , DC28V 10A.
//-------( Initialise les relais en position repos)---- Dimension: environ 5 x 3.8 x 1.7cm Existe en
1-2-4-8
digitalWrite(Relais_1, Relais_OFF); Relais
void loop()
digitalWrite(Relais_2, Relais_OFF); {
digitalWrite(Relais_3, Relais_OFF);
digitalWrite(Relais_4, Relais_OFF);
digitalWrite(Relais_1, Relais_ON); // Relais en fonction
//---( Broches en sortie )----
delay(2000); // attendre 2secondes
pinMode(Relais_1, OUTPUT);
pinMode(Relais_2, OUTPUT);
pinMode(Relais_3, OUTPUT); digitalWrite (Relais_1, Relais_OFF); // Relais au repos
pinMode(Relais_4, OUTPUT);
delay(4000); // attendre 4 secondes
delay(2000); // attendre 2 secondes
} }
}
Christian Py F5HOD