Arduino:Примеры/SimpleMessageSystem example 1
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Управление функциями Arduino при помощи сообщений
Этот пример показывает, как посредством библиотеки SimpleMessageSystem отправлять на Arduino текстовые команды, с их помощью управляя считыванием и записью значений на контакты Arduino. Отправка команд осуществляется при помощи патча-напарника Processing, установленного на компьютере.
Код
/*
---- Пример для SimpleMessageSystem номер 1 ----
Управление функциями Arduino при помощи сообщений
Список сообщений, которые можно передать Arduino:
r a -> прочесть значения на аналоговых контактах
r d -> прочесть значения на цифровых контактах
w d [контакт] [значение] -> записать значение на цифровой контакт
w a [контакт] [значение] -> записать значение на аналоговый контакт
Создан Томасом Оулле Фредериксом (Thomas Ouellet Fredericks),
модифицирован Алехандре Куэсси (Alexandre Quessy)
*/
// подключаем библиотеку SimpleMessageSystem,
// ЕСЛИ ИСПОЛЬЗУЕМ WIRING, ЭТУ СТРОЧКУ НУЖНО УДАЛИТЬ:
#include <SimpleMessageSystem.h>
void setup()
{
// команда ниже инициирует последовательную коммуникацию
// на скорости 9600 бод; имейте в виду, что это ОЧЕНЬ МЕДЛЕННО,
// поэтому, в зависимости от ситуации, эту скорость имеет смысл
// увеличить; если коммуникация осуществляется через USB, скорость
// можно поднять до 115200 бод, что в 12 раз быстрее:
Serial.begin(9600); // скорость 9600 выставлена для совместимости, ПОМЕНЯЙТЕ!
}
void loop()
{
if (messageBuild() > 0) { // проверяем, завершено ли сообщение и стираем все предыдущие сообщения
switch (messageGetChar()) { // извлекаем первое слово (в виде символа)
case 'r': // считываем контакты (аналоговые или цифровые)
readpins(); // вызываем функцию считывания
break; // прерываем исполнение оператора switch
case 'w': // записываем на контакты
writepin(); // вызываем функцию записи
}
}
}
void readpins(){ // пользовательская функция для считывания значений с контактов (аналоговых или цифровых)
switch (messageGetChar()) { // извлекаем следующее слово (в виде символа)
case 'd': // считываем цифровые контакты
messageSendChar('d'); // отправляем обратно считанное слово
for (char i=2;i<14;i++) {
messageSendInt(digitalRead(i)); // считываем значения с контактов 2-13
}
messageEnd(); // завершаем сообщение, которое хотим отправить
break; // прерываем исполнение оператора switch
case 'a': // считываем аналоговые контакты
messageSendChar('a'); // отправляем обратно считанное слово
for (char i=0;i<6;i++) {
messageSendInt(analogRead(i)); // считываем значения с контактов 0-5
}
messageEnd(); // завершаем сообщение, которое хотим отправить
}
}
void writepin() { // пользовательская функция для записи значений на контакты (аналоговые или цифровые)
int pin;
int state;
switch (messageGetChar()) { // извлекаем следующее слово (в виде символа)
case 'a' : // делаем запись на аналоговый контакт
pin = messageGetInt(); // извлекаем следующее слово (в виде целого числа) и сохраняем его в переменную pin
state = messageGetInt(); // извлекаем следующее слово (в виде целого числа) и сохраняем его в переменную state
pinMode(pin, OUTPUT); // выставляем состояние контакта на OUTPUT
analogWrite(pin, state); // задаем ШИМ контакта
break; // прерываем исполнение оператора switch
// делаем запись на цифровой контакт
case 'd' :
pin = messageGetInt(); // извлекаем следующее слово (в виде целого числа) и сохраняем его в переменную pin
state = messageGetInt(); // извлекаем следующее слово (в виде целого числа) и сохраняем его в переменную state
pinMode(pin,OUTPUT); // выставляем состояние контакта на OUTPUT
digitalWrite(pin,state); // задаем контакту значение HIGH (1) или LOW (0)
}
}
См.также
Внешние ссылки
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
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino