Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

Librairie Firmata


Description

La librairie Firmata implémente le protocole Firmata pour des communications avec des logiciels sur l'ordinateur hôte. Ceci vous permet d'écrire des applications personnalisées sans avoir à créer votre propre protocole et objets pour l'environnement de programmation que vous utilisez.

Pour plus de détails sur le protocole Firmata, voir : http://firmata.org/wiki/Main_Page

Les fonctions de la librairie Firmata

Méthodes

  • begin() : démarre la librairie
  • begin(long) : démarre la librairie et réinitialise le débit de communication par défaut
  • printVersion() : envoie la version du protocole à l'ordinateur hôte
  • blinkVersion() : envoie la version du protocole sur la broche 13
  • printFirmwareVersion() : envoie le nom et la version du firmware à l'ordinateur hôte
  • setFirmwareVersion(byte major, byte minor) : définit le nom du firmware et la version, en utilisant le nom du fichier du programme, moins le .pde

Envoyer des messages

  • sendAnalog(byte pin, int value) : envoie un message analogique
  • sendDigitalPorts(byte pin, byte firstPort, byte secondPort) : envoie les ports numériques en tant que byte individuels
  • sendDigitalPortPair(byte pin, int value) : envoie les ports numériques en tant en tant que variable int
  • sendSysex(byte command, byte bytec, byte* bytev) : envoie une commande avec un tableau de bytes arbitraire
  • sendString(const char* string) : envoie une chaîne de caractères à l'ordinateur hôte
  • sendString(byte command, const char* string) : envoie une chaîne de caractères à l'ordinateur hôte en utilisant un type de commande personnalisé

Recevoir des messages

  • available() : vérifie si il y a des messages entrant dans le buffer
  • processInput() : gère les messages entrant du buffer, envoie les données à tout appel de fonction enregistré
  • attach(byte command, callbackFunction myFunction) : attache une fonction de rappel à un type de message entrant
  • detach(byte command) : détache une fonction d'un type de message entrant

Fonctions de rappel

Dans le but d'attacher votre fonction à un type de message, votre fonction doit correspondre à la fonction de rappel standard. Il y actuellement trois types de fonctions de rappel dans Firmata : generic, string, et sysex.

  • generic : void callbackFunction(byte pin, int value);
  • system_reset : void systemResetCallbackFunction(void);
  • string : void stringCallbackFunction(char *myString);
  • sysex : void sysexCallbackFunction(byte pin, byte byteCount, byte *arrayPointer);

Types de messages

Il existe tout une variété de messages type que vous pouvez attacher aux fonctions.

  • ANALOG_MESSAGE : la valeur analogique pour une seule broche
  • DIGITAL_MESSAGE : 8-bits de données broches numériques (un port)
  • REPORT_ANALOG : active/désactive le report d'une broche analogique
  • REPORT_DIGITAL : active/désactive le report d'un port numérique
  • SET_PIN_MODE : change le mode de la broche entre INPUT/OUTPUT/PWM/etc.
  • FIRMATA_STRING : chaines de texte C-style, utilise stringCallbackFunction pour le type de fonction
  • SYSEX_START : générique, longueur arbitraire des messages (via MIDI SysEx protocole), utilise sysexCallbackFunction pour le type de fonction
  • SYSTEM_RESET : message pour réinitialiser le programme dans son état par défaut, utilise systemResetCallbackFunction pour la fonction type.

Principe d'utilisation

Pour inclure la librairie Firmata dans un programme, on ajoutera au début du programme la ligne suivante :

#include <Firmata.h>

Pour ce faire, le plus simple est d'utiliser le menu du logiciel Arduino Programme > Importer Librairie > Nom_librairie

Voir également l'instruction #include

Exemple

Cet exemple montre comment envoyer et recevoir des messages analogiques en utilisant Firmata.


#include <Firmata.h>

byte analogPin;

void analogWriteCallback(byte pin, int value)
{
    pinMode(pin,OUTPUT);
    analogWrite(pin, value);
}

void setup()
{
    Firmata.setFirmwareVersion(0, 1);
    Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
    Firmata.begin();
}

void loop()
{
    while(Firmata.available()) {
        Firmata.processInput();
    }
    for(analogPin = 0; analogPin < TOTAL_ANALOG_PINS; analogPin++) {
        Firmata.sendAnalog(analogPin, analogRead(analogPin)); 
    }
}

Autres exemples d'utilisation :

Sur le site Arduino anglais :

Aucun

Sur le site www-mon-club-elec.fr :

Aucun


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.

Cette page est une traduction française de la page originale suivante : http://arduino.cc/en/Reference/Firmata