Чтение онлайн

на главную

Жанры

Программируем Arduino. Основы работы со скетчами
Шрифт:

Остальные поля для данного примера не имеют значения.

ПРИМЕЧАНИЕ

Полный список сообщений NMEA GPS можно найти по адресу http://aprs.gids.nl/nmea/.

Далее приводится скетч для этого примера:

#include <SoftwareSerial.h>

SoftwareSerial gpsSerial(10, 11); // RX, TX (TX не используется)

const int sentenceSize = 80;

char sentence[sentenceSize];

void setup

{

Serial.begin(9600);

gpsSerial.begin(9600);

}

void loop

{

static int i = 0;

if (gpsSerial.available)

{

char ch = gpsSerial.read;

if (ch != '\n' && i < sentenceSize)

{

sentence[i] = ch;

i++;

}

else

{

sentence[i] = '\0';

i = 0;

//Serial.println(sentence);

displayGPS;

}

}

}

void displayGPS

{

char field[20];

getField(field, 0);

if (strcmp(field, "$GPRMC") == 0)

{

Serial.print("Lat: ");

getField(field, 3); //

число

Serial.print(field);

getField(field, 4); // широта N/S

Serial.print(field);

Serial.print(" Long: ");

getField(field, 5); // число

Serial.print(field);

getField(field, 6); // долгота E/W

Serial.println(field);

}

}

void getField(char* buffer, int index)

{

int sentencePos = 0;

int fieldPos = 0;

int commaCount = 0;

while (sentencePos < sentenceSize)

{

if (sentence[sentencePos] == ',')

{

commaCount ++;

sentencePos ++;

}

if (commaCount == index)

{

buffer[fieldPos] = sentence[sentencePos];

fieldPos ++;

}

sentencePos ++;

}

buffer[fieldPos] = '\0';

}

Сообщения, посылаемые модулем GPS, имеют разную длину, но не более 80 символов, поэтому в скетче используется буфер емкостью 80 символов, который заполняется данными, пока не заполнится или не будет получен признак конца строки.

После того как полное сообщение будет прочитано, в конец буфера вставляется нулевой символ, завершающий строки в языке C. Это необходимо, только если вы пожелаете «напечатать» сообщение в его исходном виде.

Остальная часть скетча реализует извлечение полей и форматирование выходной строки для записи в монитор последовательного порта. Функция getField извлекает текст из поля с указанным индексом.

Функция displayGPS игнорирует любые сообщения, тип которых отличается от "$GPRMC", и извлекает широту и долготу, а также односимвольные названия полушарий для отображения.

В заключение

В этой главе мы исследовали несколько способов программирования взаимодействий через последовательный интерфейс между платами Arduino, периферийными устройствами и компьютерами.

В следующей главе мы обратим внимание на одну интересную особенность Arduino Leonardo, которая позволяет имитировать поведение периферийных

устройств USB, таких как клавиатура и мышь. А также рассмотрим некоторые аспекты программирования интерфейса USB.

8 Похожее описание на русском языке:— Примеч. пер.

9 Описание на русском языке:— Примеч. пер.

11. Программирование интерфейса USB

В этой главе рассматриваются разные аспекты использования порта USB на плате Arduino. В том числе возможность эмуляции клавиатуры и мыши, поддерживаемой платой Arduino Leonardo, а также подключения клавиатуры или мыши к соответственно оборудованной плате Arduino.

Эмуляция клавиатуры и мыши

Три модели Arduino — Due, Leonardo и Micro (основанная на модели Leonardo) — позволяют использовать их порт USB для эмуляции клавиатуры или мыши. Существуют также Arduino-совместимые платы, такие как LeoStick от компании Freetronics (рис. 11.1), поддерживающие аналогичную возможность.

Эта возможность широко используется, например, с музыкальными контроллерами, что позволяет плате Arduino взаимодействовать с музыкальными синтезаторами и управляющими программами, такими как Ableton Live. Благодаря ей можно, к примеру, на основе Arduino создавать новые музыкальные инструменты, управляющие музыкальным программным обеспечением с помощью датчиков поворота, прерываемых лучей света или педальной клавиатуры. К несерьезным применениям этой возможности можно отнести устройства, которые создают впечатление, что мышь живет

Рис. 11.1. Плата LeoStick

своей жизнью независимо от действий пользователя или клавиатура сама печатает случайные символы.

Модель Arduino Due имеет два порта USB. Эмуляция клавиатуры и мыши осуществляется через локальный порт USB, а программирование Arduino Due — через порт USB для программирования (рис. 11.2).

Рис. 11.2. Плата Arduino Due с двумя портами USB

Эмуляция клавиатуры

Функции эмуляции клавиатуры просты в использовании. Они входят в состав стандартной библиотеки языка, поэтому для доступа к ним не требуется подключать дополнительные библиотеки. Чтобы включить режим эмуляции клавиатуры, добавьте в функцию setup следующую команду:

Keyboard.begin;

Чтобы заставить Arduino печатать что-нибудь, можно воспользоваться командами print и println, и переданный им текст появится в позиции текстового курсора:

Поделиться:
Популярные книги

Дайте поспать! Том III

Матисов Павел
3. Вечный Сон
Фантастика:
фэнтези
5.00
рейтинг книги
Дайте поспать! Том III

Путь Чести

Щукин Иван
3. Жизни Архимага
Фантастика:
фэнтези
боевая фантастика
6.43
рейтинг книги
Путь Чести

Энфис 2

Кронос Александр
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 2

Сумеречный Стрелок 2

Карелин Сергей Витальевич
2. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 2

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Книга пяти колец. Том 3

Зайцев Константин
3. Книга пяти колец
Фантастика:
фэнтези
попаданцы
аниме
5.75
рейтинг книги
Книга пяти колец. Том 3

Диверсант

Вайс Александр
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Диверсант

Ученичество. Книга 2

Понарошку Евгений
2. Государственный маг
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ученичество. Книга 2

Титан империи 3

Артемов Александр Александрович
3. Титан Империи
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Титан империи 3

Последний попаданец 9

Зубов Константин
9. Последний попаданец
Фантастика:
юмористическая фантастика
рпг
5.00
рейтинг книги
Последний попаданец 9

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Неестественный отбор.Трилогия

Грант Эдгар
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Неестественный отбор.Трилогия

Хозяйка дома на холме

Скор Элен
1. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка дома на холме

Гром над Академией. Часть 2

Машуков Тимур
3. Гром над миром
Фантастика:
боевая фантастика
5.50
рейтинг книги
Гром над Академией. Часть 2