Arduino et micro contrôleur, quelques informations.

Qu'est-ce qu'un micro contrôleur ?
Ce qui suit décrira surtout le micro contrôleur Arduino qui a la particularité d'être basée sur des schémas électroniques libre. Cela signifie que toute personne compétente peut construire une telle carte, la vendre et même modifier le schéma, tant qu'il publie les modifications.
Il existe donc plusieurs variantes d'Arduino. Voici les princiaples :
° Arduino Uno ;
° Arduino Mega ayant plus de mémoire et plus d'entrées-sorties ;
° Arduino Nano qui est particulièrement petit
Pour une liste et description plus complète, c.f. le lien "Arduino" ci-dessus.

www.arduino.cc est le site officiel de référence concernant l'Arduino. En anglais.
Depuis ce site Web, on peut télécharger gratuitement le logiciel permettant de programmer un Arduino.

° Le langage de programmation est assez simple, il est traité plus bas.
° Divers liens sont données plus bas.
° L'installation de l'environnement de programmation est traité plus bas.

Je travaille principalement sous GNU/Linux, donc mes informations concernent plus ce système d'exploitation. Mais Arduino et son environnement de développement fonctionnent sur tous les systèmes d'exploitations courants.


Langage de programmation de l'Arduino. TOP
Il ressemble au langage C.

° Language Reference, en anglais, liste de toutes les instructions.

° Exemples de codes, Arduino, avec schémas associés.

Quelques instructions de bases.
Pour définir des fonctions qui permettent de sélectionner une partie d'un mot :
Se place généralement avant la fonction "setup()", lorsqu'on en a besoin.
#define LoWord(w) ((w) &0xffff)
#define HiWord(w) ((w) >> 16)
#define LoByte(w) ((w) &0x00ff)  //  Mieux, c.f.  lowByte(variable de n'importe quel type)
#define HiByte(w) ((w) >> 8)         //  Mieux, c.f.  highByte(variable de n'importe quel type)
// voir aussi la fonction  word(bHigh, bLow) qui convertit deux bytes en un word
bitRead(x, n)  permet de lire le nème bit de la variable x.

// Déclaration de variables
byte bEtat = 0; // un byte, nombre non signé sur 8 bits, compris entre 0 et 255
char cCaractere = 'a'; // un caractère codé sur 8 bits, correspond à un nombre signé sur 8 bits
short nBrightness = 0;  // Un entier signé sur 16 bits, compris entre -32768 et 32767
int nVal = 0;  // Un entier signé sur 16 bits sur l'Arduino Uno et sur 32 bits sur l'Arduino Due
unsigned int nwBrightness = 0;  // Un entier non signé sur 16 bits, compris entre 0 et 65535
word wValeur = 0;     // Un entier non signé sur 16 bits sur l'Arduino Uno et sur 32 bits sur l'Arduino Due
long lGrandNombre = 0; // Un entier signé sur 64 bits
unsigned long lwTimeStart = 0; // Un entier positif sur 64 bits, valeur maximale = 2^64 - 1 = 1.84467447 x 10^19
float vVirgule = 1.0; // Un nombre à virgule codé sur 32 bits. À éviter si possible, car gourmend en place.
double vVirgule = 1.0; // Un nombre à virgule codé sur 64 bits. À éviter si possible, car gourmend en place.
string :
char acTable[5] = {'a', 'b', 'c', 'd', 'e'}; // un tableau de caractères
char* acMieux[] = {"abcde"}; // Autre manière de déclarer un tableau de caractères
String strS = "Un objet qui traite mieux des chaines de caractères";

pinMode(13, OUTPUT); // Initialise le PIN digital 13 comme OUTPUT
pinMode(12, INPUT);  // Initialise le PIN digital 12 comme INPUT
digitalWrite(bPin, bEtat); // écrit dans la PIN bPin (byte) l'état bEtat, qui est LOW ou HIGH.
byte = digitalRead(nPin); // Lecture de l'état d'une PIN. Soit 0 soit 1.
analogWrite(nPin, nIntensite); // Ecriture d'une valeur entre 0 et 255 faisant varier la durée à l'état HIGH d'une PIN oscillante
word = analogRead(analogInPin); // alanogInPin vaut A0 ou A1 ou A2 ou ... A5.  Lecture d'une PIN analogique en entrée.
delay(wTime) // attente de wTime millisecondes. wTime est un (word).
Serial.begin(9600); // Initialize la communication série à une vitesse de 9600 bps
   // Se place généralement dans le "setup()"
Serial.print(string ou un nombre) envoie par le port série une chaîne de caractères.
Serial.println(string ou un nombre) idem, avec un retour de ligne à la fin.
byte = Serial.available() indique s'il y a de l'information envoyée à la carte Arduino par le port série.
byte = Serial.read() lecture de l'information envoyée à la carte Arduino par le port série.
lwTimeStart = micros() // lecture du temps en micro secondes écoulé depuis la mise en marche de l'arduino.

Il est possible de communiquer par le port série entre un Arduino et un programme en Python.
Exemple à venir---

En 2016, j'ai pu établir une communication entre un Arduino et un programme en javascript dans le navigateur Firefox. Pour cela, j'ai utilisé le plugin UART.
Mais en septembre 2017, cela ne fonctionnait plus.

Voici un programme minimaliste, qui fait clignoter la LED connectée à la pin 13.
/* Clignote
  Fait clignoter la LED de la pine 13, avec une période d'environ 2 secondes.
  La LED reste allumée 1 seconde, puis éteinte une seconde, puis recommence
 */

void setup() {
//============
// La fonction "setup()" est appelée une fois à la connexion de la carte
// ou au reset de la carte.
// Sur la plupart des cartes Arduino, la PIN 13 est connectée
// à une petite LED sur la carte.
pinMode(13, OUTPUT);  // Initialise la PIN 13 en mode "SORTIE"
} // setup

void loop() {
//===========
// La fonction "loop()" est appelée en boucle, 
// juste après que la fonction "setup()" ait été exécutée.
digitalWrite(13, HIGH);   // Allume la LED de la PIN 13
delay(1000);              // attend une second
digitalWrite(13, LOW);    // Éteint la LED de la PIN 13
delay(1000);              // attend une second
} // loop
Les PINs 0 et 1 sont utilisés lors du transfert du programme de l'ordinateur à l'Arduino.


Liens concernant l'Arduino. TOP
° www.arduino.cc est le site officiel de référence concernant l'Arduino. En anglais.
° Un Livre en français : "Atelier Arduino", version .pdf
En page 18, il y a un résumé de quelques instructions et fonctions de bases.
° Arduino un "livre" en ligne
° La version .pdf en français, du livre ci-dessus, acheté chez Flossmanualsfr.net pour 1.99 euros.
° Zest de savoir un manuel sur l'Arduino.
° Cours de OpenClassRooms, "Programmez vos premiers montages avec Arduino".
° Bibliothèque Arduino référence sous forme .pdf
° Recueil de programmes documentls
° Syntaxe du langage de l'arduino
° Manuel de référence en français !!!
° Autre référence de syntaxe de l'Arduino
° Autre référence...
°
°
°
° 25 Livres gratuits, Arduino!


Installation de l'environnement de programmation de l'Arduino. TOP

Sous GNU/Linux, après l'installation, il faut taper depuis un Terminal :
sudo adduser bg dialout
Cela a pour effet d'ajouter l'utilisateur "bg" au groupe "dialout" et de permettre une communication entre l'ordinateur et l'Arduino.
Il faut ensuite redémarrer le système.

Pour transférer le programme de l'ordinateur à l'Arduino, il faut :
° Sélectionner le bon "Type de carte" : "Outils" > "Type de carte"
La liste qui suit dépend de la version installée.
° Sélectionner le bon port Série : "Outils" > "Port Série"
Chez moi le port série est : "/dev/ttyACM0"

Configuration chez moi, avec la version 1.0.5 :
Pour télécharger sur un arduino UNO :
Type de carte : Arduino UNO
Port série : /dev/ttyACM1
Programmeur : AVRISP mkll
Pour télécharger sur un arduino MEGA :
Type de carte : Arduino MEGA 2560 or MEGA ADK
Port série : /dev/ttyACM1
Programmeur : AVRISP mkll
Pour le téléversement sur un chip ATmega328, utiliser : 
Type de carte : Arduino mini w/ATmega328
Port série : /dev/ttyUSB1
Programmeur : AVRISP mkll
Pour le téléversement avec le chip CP2102 (FTDI 1412-G B8908572)
sur un chip ATmega328, utiliser : 
Type de carte : Arduino mini w/ATmega328
Port série : /dev/ttyUSB1
Programmeur : AVRISP mkll
Connection :
USB (CP2101) 
Converter     ATmega328
3V3 pin 1  --- NC  non connectée
Gnd pin 2  --- GND pin8 (et 22)
+5V pin 3  --- VCC pin7 (et 20 et 21)
TX  pin 4  --- Rdx pin2
RX  pin 5  --- Tdx pin3
DTR pin 6  --- Rst pin1  en série à traver un condensateur de 100 nF

Plan du Site : Home   arrow   microcontroleur.html ( = http://www.juggling.ch/gisin/microcontroleur/microcontroleur.html )


Page mise à jour le 6 octobre 2017 par Bernard Gisin     ( Envoyer un e-mail )
Hébergement par : www.infomaniak.ch