Урок 11 — Работа с последовательным портом со стороны платы

Урок 11 - Работа с последовательным портом со стороны платы

План

1. Работа с последовательным портом
2. Основные функции
3. Пример программы

Теоретическая часть

1. Работа с последовательным портом

Для связи компьютера с платой Arduino существует последовательный порт обмена данными(UART). Для обмена данными искользуется USB порт и цифровые порты ввод/вывода 0 (RX) и 1 (TX).
Важно! При работе с последовательным портом выводы 0 и 1 не могут использоваться для других целей.
Для работы с последовательным интерфейсом IDE Arduino имеет Монитор порта (Serial monitor). Внешний вид монитора порта изображен на рисунке 1.

монитор порта

Рисунок 1 — Диалоговое окно “Монитор порта”

Значение в скорости связи в мониторе порта должно соответствовать значению, указанному в параметрах в функции begin().

2. Основные функции

Для работы с последовательным портом существуют функции класса Serial. Ниже перечислены основные из них:
Serial.begin() — Задает скорость передачи данных через последовательный порт в битах в секунду (бодах). В параметрах указывется скорость передачи. Для взаимодействия с компьютером следует использовать одну из предустановленных скоростей обмена: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200. Для взаимодействия с какими-либо другими устройствами через 0 и 1 выводы можно задавать другие скорости. Обычно эта функция вызывается внутри функции setup().
Serial.available() — получает количество поступивших на порт байт. Полученные байты записываются в буфер последовательного порта. В буфере может находиться до 64 байт.
Serial.read() — считывает очередной доступный байт из буфера последовательного порта.
Serial.print() — посылает данные через последовательный порт как ASCII текст.
Serial.println() — функция аналогична Serial.print(), но добавляет данным признак конца строки и возврата каретки.

3. Пример программы

Ниже представлен пример программы, который принимает через последовательный порт данные и посылает их обратно.
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()>0)
int val=Serial.read();
Serial.println(val);
}

Практическое задание

Написать программу, управляющую двумя светодиодами через последовательный интерфейс.

 int val;
void setup()
{
pinMode(11,OUTPUT);
Serial.begin(9600);
}
void loop()
{
if (Serial.available()>0){
val=Serial.read();
if (val==49)
{
digitalWrite(11,HIGH);
Serial.println(«led on»);
}
else
if (val==48)
{digitalWrite(11,LOW);
Serial.println(«led off»);
}
}
}

 

Учебная программа курса BotBase

Центр робототехники "BOTEON".
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: