Reference   Language (extended) | Libraries | Comparison | Changes


Firmata - Library - Detalles del ratio de baudios - Detalles del Protocolo - Prouestas de Protocolo


Librería Firmata

La librería Firmata implementa el protocolo Firmata que permite comunicarse con un software alojado en un ordenador servidor. Esto permite escribir un firmware personalizado sin tener que crear tu propio protocolo y objetos, para el entorno de programación que estás usando.

Métodos

begin()
Inicia la librería
begin(long)
Inicia la librería y sobreescribe el ratio de baudios por defecto
printVersion()
Envía la versión del protocolo al ordenador servidor
blinkVersion()
Parpadea la versión del protocolo en el pin 13
printFirmwareVersion()
Envía el nombre del firmware al ordenador servidor
setFirmwareVersion(byte mayor, byte menor)
Establece el nombre del firmware y la versión, usando el nombre del sketch, menos .pde

Enviando mensajes

sendAnalog(byte pin, int valor)
Envía un mensaje analógico
sendDigitalPorts(byte pin, byte puertoPrimario, byte puertoSecundario)
Envía los puertos digitales como bytes individuales
sendDigitalPortPair(byte pin, int valor)
Envía los puertos digitales como un entero (int)
sendSysex(byte comando, byte bytec, byte* bytev)
Envía un comando con un array arbitrario de bytes
sendString(const char* string)
Envía un String al ordenador servidor usando tipo de comando personalizado
sendString(byte comando, const char* string)
Envía un string al ordendor servidor usando un tipo de comando personalizado

Recibiendo mensajes

available()
Chequea si hay algún mensaje entrante en el buffer
processInput()
Procesa los mensajes entrantes en el buffer, enviando los datos a cualquier función de retrollamada registrada
attach(byte command, funcionRetrollamada miFuncion)
Vincula una función a un tipo de mensaje de entrada
detach(byte command)
Desvincula una función de un tipo de mensaje de entrada

Funciones de retrollamada (Callback)

A la hora de vincular tu función a un tipo de mensaje, tu función debe ajustarse a la función de retrollamada estándar. Actualmente hay tres tipos de funciones de retrollamada en Firmata: generic, string, and sysex.

generic
void callbackFunction(byte pin, int valor);
system_reset
void systemResetCallbackFunction(void);
string
void stringCallbackFunction(char *miString);
sysex
void sysexCallbackFunction(byte pin, byte byteCount, byte *arrayPointer);

Tipos de Mensajes

Estos don varios tipos de mensajes que puedes vincular a las funciones.

ANALOG_MESSAGE
el valor analógico para un único pin
DIGITAL_MESSAGE
Los 8-bits de datos del pin digital (un puerto)
REPORT_ANALOG
habilitar/deshabilitar el informe de un pin analógico
REPORT_DIGITAL
habilitar/deshabilitar el informe de un puerto digital
SET_PIN_MODE
Cambia el modo del pin entre INPUT/OUTPUT/PWM/etc.
FIRMATA_STRING
Strings de estilo C, utiliza stringCallbackFunction para el tipo de función
SYSEX_START
Genérico, mensajes de longitud arbitraria (vía protocolo MIDI SysEx), emplea sysexCallbackFunction para el tipo de función
SYSTEM_RESET
Mensaje para resetear el firmware a us estado por defecto , utiliza systemResetCallbackFunction para el tipo de función

Ejemplo

This example shows how to send and receive analog messages using Firmata.

#include <Firmata.h>

byte pinAlalogico;

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

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

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

Página principal Referencia

Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro (castellano) o en el Foro (inglés).

El texto de la referencia de Arduino está publicado bajo la licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0. Los ejemplos de código de la referencia están liberados al dominio público.

Share