Rebonjour à tous.
Pour l'utilisation et la programmation d'une carte Arduino proprement dite, (téléchargement de l'environnement de développement (ou "
IDE", qui comprend entre autres un éditeur de code et un compilateur), installation éventuelle des drivers, etc...) je vous renvoie aux dizaines de Tutoriels très bien fait sur le Net, à commencer par le site officiel où on pourra charger l'IDE
http://arduino.cc/en/Main/HomePage et l'indispensable tuto d'ESKIMON
http://eskimon.fr/ebook-tutoriel-arduinoLa référence du langage en français se trouve ICI:
http://playground.arduino.cc/French/ReferenceNous l'avons vu,
Link2FS http://www.jimspage.co.nz/intro.htm se décompose en un soft d'interface sur Windows ET un fichier script (avec extension .ino ou .pde) à télécharger sur l'Arduino via l'IDE.
Pour l'utilisation du module link2Fs Multi sous Windows, je vous renvoie aux explications du site de Jim Page
http://www.jimspage.co.nz/Link2fs_Multi.htm.
Pour le script INO en revanche, il va falloir mettre un peu les mains dans le cambouis, c'est l'objet de ce tuto
LINK2FS: LA STRUCTURE DU SCRIPT ARDUINO qui sera en plusieurs parties.
Au menu d'aujourd'hui
SETUP() & LES ENTREES/SORTIES.-----------------------------------------------------------------------------------------------------------------------
Dans
Link2fs, une fois téléchargé le logiciel ici
http://www.jimspage.co.nz/link2fs_multi_fsx_v5h.zip, on se retrouve avec un dossier d'exemples "Demo INOs" qui contient plusieurs scripts à titre d'exemple, du plus simple au plus compliqué. On charge un script d'un double clic dans l'environnement de programmation (IDE) Arduino, et on le compile ensuite pour le "téléverser" sur la carte si elle est branchée en USB au PC.
La quasi majorité des scripts fournis à titre d'exemple possède la même section "Setup" (partie de code exécutée 1 fois à l'initialisation). Regardons d'un peu plus près ces scripts:
Dans la partie "Setup()" d'un script Link2Fs, pour chaque broche de la carte (numérotée de 0 à 69 pour une MEGA, de 0 à19 pour une UNO) on peut définir cette dernière soit comme une entrée, soit comme sortie en utilisant l'instruction
pinMode(N° de la broche, E/S), avec :
- N° de la broche un entier variant entre 0 et 69 dans le cas d'une Mega, entre 0 et 19 pour une UNO
- E/S un mot clef précisant si la broche doit être configurée en entrée (INPUT) ou en sortie (OUTPUT).
On retrouve cette manip dans l'extrait de script tiré du script "Multi_keys.ino" que je vous conseille d'ouvrir en même temps.
Ici les broches 3 à 70 (numérotées 2 à 69, car la broche physique n°1 est numérotée 0 sur l'Arduino!!!) sont configurées en entrée (INPUT) via une simple boucle "for" :
- Code: Tout sélectionner
void setup()
{
Kstringoldstate = "111111111111111111111111111111111111111111111111111111111111111111111";
for (int KoutPin = 2; KoutPin < 70; KoutPin++)// Boucle pour affectation des broches de 2 à 70 Voir NOTE 1
{
pinMode(KoutPin, INPUT); // on indique à Arduino de traiter la broche n°XX comme une entrée digitale (ON/OFF)
digitalWrite(KoutPin, HIGH); // Voir NOTE 2
}
Serial.begin(115200);
}
Note 1:
On utilise une variable appelée "KoutPin" qui va s'incrémenter de 2 à 70 (pour une MEGA). Il faut remplacer le 70 par 19 si on utilise une UNO qui a moins de broches.
Les broches 0 et 1 ne sont pas attribuées dans le script (voilà pourquoi KoutPin démarre à 2 dans la boucle!), car elles servent normalement à la communication Série ou SPI, ceci dit je n'ai pas noté de pbms particulier sur ces deux broches, on peut donc remplacer le 2 par un 0.
Note 2:
L'instruction "digitalWrite(KoutPin, HIGH)" présente également dans la boucle sert à activer la résistance "PullUP" interne de la carte pour chaque interrupteur branché. Cette manip évite de devoir interposer une résistance externe pour chaque interrupteur branché sur la carte (de manière à assurer un état électrique défini lorsque l'inter est ouvert).
Note 3:
L'instruction "Serial.begin(115200)" sert à configurer la vitesse du port série de la carte en Bits/sec (entre 9600 et 115200 habituellement), le port série étant transformé par un circuit de la carte en signal USB.
L'usage de la ligne Kstringoldstate = "111111111111111111111111111111111111111111111111111111111111111111111"; vous sera expliqué ultérieurement, elle ne sert pas à configurer nos entrées/sorties.
On pourra inclure dans cette section Setup() tout le code nécessaire à l'initialisation de notre programme, sachant que cette section n'est exécutée qu'une seule fois au démarrage de la carte, cad à sa mise sous tension (branchement via l'USB ou alim externe) ou lors d'un appui sur le bouton RESET de l'Arduino.
--------------------
A l'inverse, dans le script "Multi_annun.pde" qu'on trouve toujours dans le dossier "Demo INOS", Jim a choisi les broches 0 à 9, qui sont configurées pour allumer des Leds externes en 5V(pour un panneau d'annonciateurs par exemple):
- Code: Tout sélectionner
void setup(){
for (count=0;count<9;count++) {//la variable "count" varie dans notre boucle de 0 à 9
pinMode(AnunPinNo[count], OUTPUT);
digitalWrite(AnunPinNo[count], LOW);
}
Note1: l'instruction "digitalWrite(AnunPinNo[count], LOW)" présente également dans la boucle sert à éteindre les LEDs. Attention, car ce coup ci on a des LEDs branchées sur les sorties, LEDs qui elles nécessitent une résistance externe à la carte. (Le calcul des résistances nécessaire pour les LEDs est un autre sujet).
Note2: A l'exception des broches analogiques (A0 à A15), la broche d'une Arduino configurée en OUTPUT ne peut être utilisée dans ce mode que comme une sortie digitale (en gros un interrupteur On/Off).
Mais au delà d'une simple diode qu'on allume, on pourra aussi piloter des relais externes (pour gérer directement du 220V ou des rampes de Leds 12V servant à l'éclairage du Tdb par exemple), voire piloter des moteurs pas à pas ou un petit servo moteur de modélisme (pour des indicateurs de volets par exemple),via le mode PWM (que je ne maîtrise pas pour l'instant).
Quelques conseils pour finir:
La broche N°13 pilote une Led qui est déjà soudée sur la carte Arduino , il est donc déconseillé de la configurer comme une entrée. Eviter aussi de mélanger les broches en entrée et en sortie, une erreur de branchement et vous risquez de griller le contrôleur! Privilégiez des "blocs" de broches (par exemple de 0 à 20 pour les sorties (annonciateurs), le reste des broches de 21 à 69 pour les entrées), ce sera plus efficace à programmer avec les deux boucles que nous venons de voir dans votre script "customisé", avec une boucle pour les entrées, une pour les sorties.
Bref, en paramétrant soigneusement la section Setup() on peut attribuer le comportement que l'on veut à chacune des broches de la carte.
To be continued....
Jacques