Arduino:Примеры/YunSerialTerminal
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Доступ к терминалу Linux через Serial Monitor (на Arduino Yun)[1]
Благодаря этому примеру вы научитесь использовать Yun’овский процессор 32U4 в качестве терминала для последовательной передачи данных в работе c Linux-процессором.
Загрузите этот скетч на Arduino Yun через USB (не через WiFi), а затем запустите последовательную передачу данных со скоростью 115200 бит/с, чтобы увидеть процесс начальной загрузки процессора Linux. Кроме того, в этом скетче Serial Monitor можно использовать в роли основного интерфейса командной строки для Linux.
Через Serial Monitor можно отправлять следующие команды:
- «~», а затем «0» ---> Выставляем скорость работы UART в 57 600 бод.
- «~», а затем «1» ---> Выставляем скорость работы UART в 115 200 бод.
- «~», а затем «2» ---> Выставляем скорость работы UART в 250 000 бод.
- «~», а затем «3» ---> Выставляем скорость работы UART в 500 000 бод.
- «~», а затем «~» ---> Отправляем команду разрыва соединения.
Необходимое оборудование
- Плата Arduino Yun;
Цепь
Для этого примера цепи строить не нужно.
Код
Создаем две переменные. В первой будем хранить информацию о скорости передачи данных между процессорами, а во второй – о том, вошли ли мы в командный режим (т.е. режим прямого ввода команд) или нет.
long linuxBaud = 250000;
boolean commandMode = false;
В секции setup() инициализируем последовательное соединение с компьютером и Linux.
void setup() {
Serial.begin(115200);
Serial1.begin(linuxBaud);
}
В секции loop() копируем данные из одного последовательного соединения в другое. Если нажата клавиша «~», включаем командный режим.
void loop() {
// копируем информацию с USB-соединения на UART и наоборот
if (Serial.available()) { // есть ли какая-нибудь информация от USB-соединения?
char c = (char)Serial.read(); // считываем ее
if (commandMode == false) { // если мы не находимся в командном режиме...
if (c == '~') { // если нажата клавиша «~»...
commandMode = true; // то входим в командный режим
} else {
Serial1.write(c); // в противном случае передаем символ на Linux
}
} else { // если мы находимся в командном режиме...
if (c == '0') { // если нажата клавиша «0»...
Serial1.begin(57600); // то устанавливаем скорость в 57600 бод
Serial.println("Speed set to 57600"); // "Скорость установлена в 57500"
} else if (c == '1') { // если нажата клавиша «1»...
Serial1.begin(115200); // то устанавливаем скорость в 115200 бод
Serial.println("Speed set to 115200"); // "Скорость установлена в 115200"
} else if (c == '2') { // если нажата клавиша «2»...
Serial1.begin(250000); // то устанавливаем скорость в 250000 бод
Serial.println("Speed set to 250000"); // "Скорость установлена в 250000"
} else if (c == '3') { // если нажата клавиша «3»...
Serial1.begin(500000); // то устанавливаем скорость в 50000 бод
Serial.println("Speed set to 500000"); // "Скорость установлена в 500000"
} else if (c == '~') {
Serial1.write((uint8_t *)"\xff\0\0\x05XXXXX\x0d\xaf", 11);
Serial.println("Sending bridge's shutdown command"); // "Отсылаем команду разрыва соединения"
} else { // нажата ли какая-нибудь другая клавиша?
Serial1.write('~'); // передаем на Linux «~»
Serial1.write(c); // передаем символ на Linux
}
commandMode = false; // в любом случае выходим из командного режима
}
}
if (Serial1.available()) { // есть ли какая-нибудь информация от Linux?
char c = (char)Serial1.read(); // считываем ее
Serial.write(c); // передаем на USB-соединение
}
}
Весь код полностью – ниже:
/*
Передача информации с последовательного соединения на Linux (Yun)
Позволяет использовать Yun’овский процессор 32U4 в качестве терминала для последовательной передачи данных в работе c Linux-процессором.
Загрузите этот скетч на Arduino Yun через последовательный порт (не через WiFi),
а затем откройте Serial Monitor на скорости 115200,
чтобы увидеть процесс начальной загрузки процессора Linux.
Кроме того, в этом скетчеSerial Monitor можно использовать
в качестве базового интерфейса командной строки для Linux.
Скетч настроен таким образом, что через Serial Monitor можно было давать следующие команды:
«~», а затем «0» ---> Выставляем скорость работы UART в 57 600 бод.
«~», а затем «1» ---> Выставляем скорость работы UART в 115 200 бод.
«~», а затем «2» ---> Выставляем скорость работы UART в 250 000 бод.
«~», а затем «3» ---> Выставляем скорость работы UART в 500 000 бод.
«~», а затем «~» ---> Отправляем команду разрыва соединения.
Цепь:
* Плата Arduino Yun
Создан в марте 2013 Массимо Банци (Massimo Banzi),
модифицирован Кристианом Мэгли (Cristian Maglie).
Этот код не защищен авторским правом.
*/
long linuxBaud = 250000;
void setup() {
Serial.begin(115200); // запускаем последовательную передачу данных через последовательный порт
Serial1.begin(linuxBaud); // запускаем последовательную передачу данных на Linux
}
boolean commandMode = false;
void loop() {
// копируем информацию с USB-соединения на UART и наоборот
if (Serial.available()) { // есть ли какая-нибудь информация от USB-соединения?
char c = (char)Serial.read(); // считываем ее
if (commandMode == false) { // если мы не находимся в командном режиме...
if (c == '~') { // если нажата клавиша «~»...
commandMode = true; // то входим в командный режим
} else {
Serial1.write(c); // в противном случае передаем символ на Linux
}
} else { // если мы находимся в командном режиме...
if (c == '0') { // если нажата клавиша «0»...
Serial1.begin(57600); // то устанавливаем скорость в 57600 бод
Serial.println("Speed set to 57600"); // "Скорость установлена в 57500"
} else if (c == '1') { // если нажата клавиша «1»...
Serial1.begin(115200); // то устанавливаем скорость в 115200 бод
Serial.println("Speed set to 115200"); // "Скорость установлена в 115200"
} else if (c == '2') { // если нажата клавиша «2»...
Serial1.begin(250000); // то устанавливаем скорость в 250000 бод
Serial.println("Speed set to 250000"); // "Скорость установлена в 250000"
} else if (c == '3') { // если нажата клавиша «3»...
Serial1.begin(500000); // то устанавливаем скорость в 50000 бод
Serial.println("Speed set to 500000"); // "Скорость установлена в 500000"
} else if (c == '~') {
Serial1.write((uint8_t *)"\xff\0\0\x05XXXXX\x0d\xaf", 11);
Serial.println("Sending bridge's shutdown command"); // "Отсылаем команду разрыва соединения"
} else { // нажата ли какая-нибудь другая клавиша?
Serial1.write('~'); // передаем на Linux «~»
Serial1.write(c); // передаем символ на Linux
}
commandMode = false; // в любом случае выходим из командного режима
}
}
if (Serial1.available()) { // есть ли какая-нибудь информация от Linux?
char c = (char)Serial1.read(); // считываем ее
Serial.write(c); // передаем на USB-соединение
}
}
См.также
Внешние ссылки
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