Arduino:Примеры/SoftwareSerialExample: различия между версиями
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Нет описания правки |
||
Строка 21: | Строка 21: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Тест c передачей данных посредством Software Serial (вариация 1) | Тест c передачей данных посредством Software Serial (вариация 1) |
Версия от 18:20, 14 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Пример работы с библиотекой Software Serial[1]
Платы Arduino имеют встроенную поддержку для последовательной передачи данных (на 0-ом и 1-ом контактах), но что если вам нужно больше последовательных портов? Как раз для этого случая была разработана библиотека SoftwareSerial, которая позволяет организовать последовательную передачу данных через другие цифровые контакты – при помощи ПО, которое копирует функционал «намертво» запрограммированных линий RX и TX. Эта библиотека может оказаться крайне полезна, когда вам надо настроить последовательную передачу данных сразу с двумя девайсами, либо с одним, но так, чтобы один из последовательных портов был отведен под отладку.
В примере ниже в качестве виртуальных RX- и TX-линий выступят цифровые контакты номер 10 и 11. Скетч будет настроен таким образом, чтобы прослушивать все, что идет через главный последовательный порт, а затем отражать это на виртуальной TX-линии. И наоборот, все, что будет получено на виртуальном RX, в дальнейшем будет отправлено через аппаратный TX.
Необходимое оборудование
- Плата Arduino;
Цепь
Для этого примера цепи строить не нужно. Только убедитесь, что Arduino подключена к компьютеру через USB, чтобы иметь возможность запустить последовательную коммуникацию.
Код
/*
Тест c передачей данных посредством Software Serial (вариация 1)
Получает данные по аппаратной линии, отправляет на виртуальную.
Получает данные по виртуальной линии, отправляет на аппаратную.
Цепь:
* RX – это 10-ый цифровой контакт (подключен к TX другого девайса)
* TX – это 11-ый цифровой контакт (подключен к RX другого девайса)
Примечание:
Не все контакты Mega и Mega 2560 поддерживают «перепрошивку»,
поэтому для RX можно использовать только эти:
10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
Также не все контакты Leonardo поддерживают «перепрошивку»,
поэтому для RX можно использовать только эти:
8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
Создан давным-давно, в далекой-далекой галактике,
модифицирован 25 мая 2012 Томом Иго (Tom Igoe),
основан на примере Микала Харта (Mikal Hart).
Этот код не защищен авторским правом.
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // виртуальные контакты RX и TX
void setup()
{
// Запускаем последовательную передачу данных и ждем открытия порта:
Serial.begin(57600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для Leonardo)
}
Serial.println("Goodnight moon!"); // "Спокойной ночи!"
// Задаем скорость для передачи данных через порт SoftwareSerial:
mySerial.begin(4800);
mySerial.println("Hello, world?"); // "Эм... привет, мир?"
}
void loop() // Запускаем снова и снова:
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
См.также
- The Software Serial Library
- MultiSerialMega: use two of the serial ports available on the Arduino Mega.
- Serial Call Response: send multiple vairables using a call-and-response (handshaking) method.
- Serial Call Response ASCII: send multiple variables using a call-and-response (handshaking) method, and ASCII-encode the values before sending.