这里会显示出您选择的修订版和当前版本之间的差别。
前一修订版 | |||
— | reference:library:firmata [2023/06/07 04:24] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Firmata Library ====== | ||
+ | |||
+ | 通过Firmata程序库执行Firmata协议,在主机电脑上可与软件进行沟通。当您正在使用时,这允许您可以编写自定义固件而无需创建你自己的协议和对象的编程环境。 | ||
+ | ===== 方法 ===== | ||
+ | |||
+ | |||
+ | \\ begin() | ||
+ | \\ | ||
+ | \\ 执行程序库 | ||
+ | \\ | ||
+ | \\ begin(long) | ||
+ | \\ | ||
+ | \\ 执行程序并覆盖原有默认的传输速率 | ||
+ | \\ | ||
+ | \\ printVersion() | ||
+ | \\ | ||
+ | \\ 发送协议版本到主机电脑 | ||
+ | \\ | ||
+ | \\ blinkVersion() | ||
+ | \\ | ||
+ | \\ 在pin 13闪现协议版本 | ||
+ | \\ | ||
+ | \\ printFirmwareVersion() | ||
+ | \\ | ||
+ | \\ 发送软件名称和版本至主机电脑 | ||
+ | \\ | ||
+ | \\ setFirmwareVersion(byte major, byte minor) | ||
+ | \\ | ||
+ | \\ 通过使用缩略图的文件名称和减去.pde来设置软件名称及版本 | ||
+ | \\ | ||
+ | \\ **发送消息** | ||
+ | \\ | ||
+ | \\ sendAnalog(byte pin, int value) | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ sendDigitalPorts(byte pin, byte firstPort, byte secondPort) | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ sendDigitalPortPair(byte pin, int value) | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ sendSysex(byte command, byte bytec, byte* bytev) | ||
+ | \\ | ||
+ | \\ 发送一个任意的字节数组的命令 | ||
+ | \\ | ||
+ | \\ sendString(const char* string) | ||
+ | \\ | ||
+ | \\ 发送一个字符串至主机电脑 | ||
+ | \\ | ||
+ | \\ sendString(byte command, const char* string) | ||
+ | \\ | ||
+ | \\ 通过使用一个自定义的命令类型发送一个字符串到主机电脑 | ||
+ | \\ | ||
+ | \\ **接收消息** | ||
+ | \\ | ||
+ | \\ available() | ||
+ | \\ | ||
+ | \\ 检查是否有任何传入的消息在缓冲 | ||
+ | \\ | ||
+ | \\ processInput() | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ attach(byte command, callbackFunction myFunction) | ||
+ | \\ | ||
+ | \\ 附上一个函数至传入消息类型 | ||
+ | \\ | ||
+ | \\ detach(Bytes command ) | ||
+ | \\ | ||
+ | \\ 从传入消息类型中分离出一个函数 | ||
+ | ===== 回调函数 ===== | ||
+ | |||
+ | 为了给信息类型附上一个函数,你的函数必须匹配标准的回调函数。\\ In order to attach your function to a message type, your function must match the standard callback function. | ||
+ | |||
+ | 目前有三种类型的回调函数:generic, | ||
+ | \\ There are currently three types of callback functions in Firmata: generic, string, and 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); | ||
+ | |||
+ | *Message Types | ||
+ | \\ These are the various message types that you can attach functions to. | ||
+ | \\ 这些是不同的消息类型, | ||
+ | |||
+ | *ANALOG_MESSAGE | ||
+ | \\ the analog value for a single pin | ||
+ | \\ 模拟值为一个单独端口。 | ||
+ | |||
+ | *DIGITAL_MESSAGE | ||
+ | \\ 8-bits of digital pin data (one port) | ||
+ | \\ 8位数的Pin数据(仅限一个端口) | ||
+ | |||
+ | *REPORT_ANALOG | ||
+ | \\ enable/ | ||
+ | \\ 启用/ | ||
+ | |||
+ | *REPORT_DIGITAL | ||
+ | \\ enable/ | ||
+ | \\ 启用/ | ||
+ | |||
+ | *SET_PIN_MODE | ||
+ | \\ change the pin mode between INPUT/ | ||
+ | \\ 在INPUT/ | ||
+ | |||
+ | |||
+ | *FIRMATA_STRING | ||
+ | \\ C-style strings, uses stringCallbackFunction for the function type | ||
+ | \\ C样式的字符串,使用stringCallbackFunction函数类型 | ||
+ | |||
+ | *SYSEX_START | ||
+ | \\ generic, arbitrary length messages (via MIDI SysEx protocol), uses sysexCallbackFunction for the function type | ||
+ | \\ 通用的、任意长度的消息(通过MIDI SysEx协议), | ||
+ | |||
+ | *SYSTEM_RESET | ||
+ | \\ message to reset firmware to its default state, uses systemResetCallbackFunction for the function type | ||
+ | \\ 消息重置固件到默认状态, | ||
+ | |||
+ | ===== 例子 ===== | ||
+ | |||
+ | |||
+ | 这个例子展示了如何发送和接收模拟消息Firmata使用。 | ||
+ | This example shows how to send and receive analog messages using Firmata. | ||
+ | \\ | ||
+ | \\ | ||
+ | #include < | ||
+ | |||
+ | byte analogPin; | ||
+ | |||
+ | void analogWriteCallback(byte pin, int value) | ||
+ | { | ||
+ | pinMode(pin, | ||
+ | analogWrite(pin, | ||
+ | } | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Firmata.setFirmwareVersion(0, | ||
+ | Firmata.attach(ANALOG_MESSAGE, | ||
+ | Firmata.begin(); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | while(Firmata.available()) { | ||
+ | Firmata.processInput(); | ||
+ | } | ||
+ | for(analogPin = 0; analogPin < TOTAL_ANALOG_PINS; | ||
+ | Firmata.sendAnalog(analogPin, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Reference Home |