Arduino:Библиотеки/SimpleMessageSystem: различия между версиями
Нет описания правки |
Myagkij (обсуждение | вклад) |
||
Строка 112: | Строка 112: | ||
===Получение сообщения=== | ===Получение сообщения=== | ||
* <syntaxhighlight lang="c">int messageBuild()</syntaxhighlight> Проверяет, завершено ли сообщение. Если завершено, возвращает размер сообщения, включая пробелы. | * <syntaxhighlight lang="c">int messageBuild()</syntaxhighlight> Проверяет, завершено ли сообщение. Если завершено, возвращает размер сообщения, включая пробелы. | ||
* <syntaxhighlight lang="c">char messageGetChar()</syntaxhighlight> Если имеется доступное слово, возвращает его в качестве символа. Если доступных слов нет, возвращает '''«0»'''. | {{Внимание1|Если вы вызовите эту функцию второй раз, это сбросит предыдущее сообщение!}} | ||
* <syntaxhighlight lang="c">char messageGetChar()</syntaxhighlight> Если имеется доступное слово, возвращает его в качестве символа. Если доступных слов нет, возвращает '''«0»'''. | |||
{{Внимание1|Если вы отправите что-то вроде «foo», она вернет «f» и проигнорирует «oo».}} | |||
* <syntaxhighlight lang="c">int messageGetInt()</syntaxhighlight> Если имеется доступное слово, возвращает его в качестве целого числа. Если доступных слов нет, возвращает '''«0»'''. | * <syntaxhighlight lang="c">int messageGetInt()</syntaxhighlight> Если имеется доступное слово, возвращает его в качестве целого числа. Если доступных слов нет, возвращает '''«0»'''. | ||
Текущая версия от 11:33, 18 февраля 2024
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Библиотека SimpleMessageSystem[1][2]
Библиотека SimpleMessageSystem упрощает коммуникацию с терминалами и программами, которыми можно управлять при помощи сообщений (к примеру, Max/Msp или Pure Data). Поддерживает платы Arduino версий 0004 и выше. Все данные, входящие и исходящие через последовательную коммуникацию, интерпретируются как сообщения формата ASCII.
Саму библиотеку, а также примеры и инструкции к ней можно скачать отсюда.
Главные преимущества библиотеки SimpleMessageSystem:
- Возможность отправлять, получать и обрабатывать списки символов и целых чисел, присылаемых и отсылаемых платой Arduino
- Терминальная программа, Max/Msp и Pure Data могут коммуницировать при помощи одного и того же кода, используемого для Arduino
- Может быть адаптирована для отправки, получения и обработки строк
- Пересылаемая информация удобочитаема
Главный недостаток:
- Медленней, чем специализированный последовательный протокол, который обращается с битами и байтами, как с числами, а не ASCII-символами
Что такое сообщение?
Сообщение – это серия слов, которая заканчивается символом возврата каретки (опционально – символом перевода строки); слова состоят из символов формата ASCII и разделены пробелами. Выглядит все это следующим образом:
слово 1 (пробел) слово2 (пробел) слово3 (возврат каретки)
В текущей версии SimpleMessageSystem слова могут быть либо одним символом, либо целым числом. Сообщение считается завершенным, если в конце поставлен символ возврата каретки. Это также значит, что теперь его можно обрабатывать в скетче Arduino.
Пример кода Arduino номер 1
if (messageBuild()) { // проверяем, завершено ли сообщение
firstChar = messageGetChar()) { // берем первое присланное слово и в виде символа сохраняем его в переменную firstChar
if (firstChar = 'r') { // проверяем, является ли он символом «r»
secondChar = messageGetChar() // берем следующее слово и в виде символа сохраняем его в secondChar
if (firstChar = 'd') // чтобы продолжить, следующим символом должен быть «d»
messageSendChar('d'); // отправляем обратно считанный символ
for (char i=2;i<14;i++) {
messageSendInt(digitalRead(i)); // считываем контакты 2-13
}
messageEnd(); // завершаем сообщение, чтобы отправить его
}
}
}
Если этот код получит сообщение rd CR (CR означает возврат каретки), то вернет значения всех цифровых контактов в сообщении, имеющем следующую структуру:
d кон2 кон3 кон4 кон5 кон6 кон7 кон8 кон9 кон10 кон11 кон12 кон13 CR
Пример кода Arduino номер 2
if (messageBuild()) { // проверяем, завершено ли сообщение
firstChar = messageGetChar()) { // берем первое присланное слово и в виде символа сохраняем его в переменную firstChar
if (firstChar = 'w') { // проверяем, является ли он символом «w»
int pin = messageGetInt(); // берем следующее слово и в виде целого числа сохраняем его в pin
int state = messageGetInt(); // берем следующее слово и в виде целого числа сохраняем его в state
pinMode(pin,OUTPUT);
digitalWrite(pin,state);
}
Если этот код получит сообщение w 13 1 CR (CR означает возврат каретки), то выставит 13-ый контакт в состояние HIGH, в результате чего последняя строчка будет выглядеть как digitalWrite(13, HIGH). В языке Arduino HIGH – это «1», а LOW – это «0».
Как импортировать/установить библиотеку
- Скачайте ZIP-файл с библиотекой SimpleMessageSystem (ссылку смотрите выше).
- Откройте IDE Arduino, кликните на Скетч > Подключить библиотеку > Добавить .ZIP библиотеку (Sketch > Include Library > Add .ZIP Library…), в появившемся окне укажите путь к скачанному ZIP-файлу и нажмите Open.
- Создайте новый скетч (или откройте уже существующий) и кликните на Скетч > Подключить библиотеку > SimpleMessageSystem (Sketch > Include Library > SimpleMessageSystem). Когда библиотека будет импортирована, в верхней части скетча появится строчка
#inlcude SimpleMessageSystem.h
- Когда вы запустите (скомпилируете) свой код, он также скомпилирует библиотеку SimpleMessageSystem. Вы получите предупреждающие сообщения, но это «нормально».
Примеры использования
Запустите в IDE Arduino следующий скетч-пример: Файл > Примеры > SimpleMessageSystem > SimpleMessageSystem_example_1 (File > Examples > SimpleMessageSystem > SimpleMessageSystem_example_1).
Теперь откройте патч для Max/Msp или Pure Data, чтобы начать коммуникацию с платой Arduino.
Max/Msp
Откройте файл SimpleMessageSystem.mxb в папке MaxMsp Example. Используйте абстракции max2asciimessage и asciimessage2max в своих патчах Max/Msp, чтобы коммуницировать с платой Arduino, в которую загружена библиотека SimpleMessageSystem.
Pure Data
Откройте файл SimpleMessageSystem.pd в папке Pure Data Example. Используйте абстракции pd2ascii и ascii2pd в своих патчах Pure Data, чтобы коммуницировать с платой Arduino, в которую загружена библиотека SimpleMessageSystem. Если вы работаете на Linux и не знаете номер порта, к которому подключена Arduino, воспользуйтесь следующей терминальной командой:
i=0; for f in `ls /dev/tty[US]*`; do echo $i $f; i=$(( $i + 1 )); done
Как пользоваться библиотекой
Получение сообщения
- Вызовите функцию messageBuilt(). Если она возвращает «1» или больше, это значит, что в конце сообщения стоит символ возврата каретки, то есть оно считается законченным. По сути, функция messageBuilt() возвращает количество символов в сообщении, включая пробелы.
- Извлекаем первое слово, используя функцию messageGetChar() или messageGetInt().
- Повторяем второй шаг для всех входящих слов.
Отправка сообщения
- Вызываем функцию messageSendChar() или messageSendInt(), чтобы отправить символ или целое число.
- Повторяем второй шаг для всех символов и чисел, которые хотим отправить. Между вызовами этих функций автоматически ставятся пробелы.
- Вызываем функцию messageEnd(), чтобы отправить символ возврата каретки и тем самым просигнализировать, что сообщение завершено и готово к обработке.
Функции
Получение сообщения
- Проверяет, завершено ли сообщение. Если завершено, возвращает размер сообщения, включая пробелы.
int messageBuild()
- Если имеется доступное слово, возвращает его в качестве символа. Если доступных слов нет, возвращает «0».
char messageGetChar()
- Если имеется доступное слово, возвращает его в качестве целого числа. Если доступных слов нет, возвращает «0».
int messageGetInt()
Отправка сообщения
- Отправляет символ (автоматически вставляет пробелы в сообщении между каждым отправляемым символом).
void messageSendChar(char value)
- Отправляет целое число (автоматически вставляет пробелы в сообщении между каждым отправляемым целым числом).
void messageSendInt(int value)
- Завершает сообщение, сигнализируя цели, что сообщение готово к обработке.
void messageEnd()
Примеры
- SimpleMessageSystem example 1 - Управление функциями Arduino при помощи сообщений
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Функция
- Библиотека SimpleMessageSystem
- SimpleMessageSystem