- •Что такое Arduino?
- •Структура:
- •Void setup()
- •Void loop()
- •Управляющие операторы
- •Прочий синттаксис
- •Арифметические операции
- •Логические операции
- •Указатели и ссылки
- •Битовые операции
- •Операторы сравнения:
- •If / else
- •Регистры портов
- •Compound Operators
- •Константы
- •Типы данных
- •Конвертирование типов переменных
- •Область действия переменной и квалификаторы
- •Volatile
- •Утилиты
- •Цифровой ввод вывод
- •Аналоговый ввод вывод
- •Расширенный ввод вывод
- •Математические функции
- •Тригонометрические функции
- •Функции случайных чисел
- •Биты и байты
- •Функции прерываний
- •Interrupts()
- •Коммуникации
- •Int Serial.Available()
- •Int Serial.Read()
- •Библиотеки
- •Eeprom Library
- •Ethernet library
- •Firmata Library
- •LiquidCrystal Library
Firmata Library
Данная библиотека позволяет использовать протокол Firmataдля связи с программным обеспечением компьютера. Это позволяет вам написать собственную прошивку, протокол и объекты для программирования используемой среды.
Методы
begin()
Начать использовать библиотеку
begin(long)
Начать использовать библиотеку на отличной от дефолтной скорости данных
printVersion()
Отправить версию протокола на компьютер
printFirmwareVersion()
отправить имя прошивки и ее версию на компьютер.
setFirmwareVersion(byte major, byte minor)
установить имя прошивки используя имя скетча без расширения
Отправка сообщений:
sendAnalog(byte pin, int value)
послать аналоговое сообщение
sendDigitalPorts(byte pin, byte firstPort, byte secondPort)
послать цифровое сообщение как отдельные байты
sendDigitalPortPair(byte pin, int value)
послать int на цифровой порт
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(bytecommand)
отключить функцию от определенного типа сообщений
Вызываемые функции
Чтобы подключить вашу функцию к типу сообщений она должна соответствовать стандартным функциям обратного вызова. Существует три основных типа функций Firmata:generic,string,andsysex.
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);
Типы сообщений
Представлены различные типы сообщений, к которым можно подключить нашу функциюh
ANALOG_MESSAGE
аналоговое значение пина
DIGITAL_MESSAGE
8-бит цифровых данных (1 порт)
REPORT_ANALOG
включить/отключить отчет об аналоговом пине
REPORT_DIGITAL
включить/отключить отчет о цифровом пине
SET_PIN_MODE
установить режим пина INPUT/OUTPUT/PWM/и.т.д.
FIRMATA_STRING
строки C-стиля использующиеstringCallbackFunctionкак типовую функцию
SYSEX_START
generic, сообщения (сMIDISysExпротоколом), используетsysexCallbackFunctionкак типовую функцию
SYSTEM_RESET
сообщение для перезагрузки прошивки,используется systemResetCallbackFunctionкак типовая функция
Пример:
Этот пример показывает, как можно передавать и получать аналоговые данные используя 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));
}
}
