Reference Language (extended) | Libraries | Comparison | Changes
Firmata - Library - Detalles del ratio de baudios - Detalles del Protocolo - Prouestas de Protocolo
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.
begin()begin(long)printVersion()blinkVersion()printFirmwareVersion()setFirmwareVersion(byte mayor, byte menor)sendAnalog(byte pin, int valor)sendDigitalPorts(byte pin, byte puertoPrimario, byte puertoSecundario)sendDigitalPortPair(byte pin, int valor)sendSysex(byte comando, byte bytec, byte* bytev)sendString(const char* string)sendString(byte comando, const char* string)available()processInput()attach(byte command, funcionRetrollamada miFuncion)detach(byte command)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.
void callbackFunction(byte pin, int valor);
void systemResetCallbackFunction(void);
void stringCallbackFunction(char *miString);
void sysexCallbackFunction(byte pin, byte byteCount, byte *arrayPointer);
Estos don varios tipos de mensajes que puedes vincular a las funciones.
ANALOG_MESSAGEDIGITAL_MESSAGEREPORT_ANALOGREPORT_DIGITALSET_PIN_MODEINPUT/OUTPUT/PWM/etc.
FIRMATA_STRINGstringCallbackFunction para el tipo de función
SYSEX_STARTsysexCallbackFunction para el tipo de función
SYSTEM_RESETsystemResetCallbackFunction para el tipo de función
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));
}
}
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.