БИБЛИОТЕКА GYVERBUART

Лёгкая библиотека для работы с последовательным портом. Практически полный аналог стандартного Serial, но гораздо легче и быстрее (например, чтение быстрее в 2 раза). Данная библиотека вшита в моё ядро GyverCore, при его использовании дополнительно библиотеку подключать не нужно!

Занимаемое место во Flash памяти у разных функций (при использовании Gyver-вывода)

ФункцияArduinoGyverUARTРазница, байт
Serial.begin994236758
write898254644
print long1136436700
print string22601764496
print float1168516652
parseInt1076336740
readString23781716662
parseFloat1108366742

Поддерживаемые платформы: все МК поколения ATmega328, а также Mega2560

ДОКУМЕНТАЦИЯ


Библиотека полностью (за исключением функции find) аналогична библиотеке Serial, но на всякий случай напомню:

uart.begin();           // запустить соединение по последовательному порту со скоростью 9600
uart.begin(baudrate);   // запустить соединение по последовательному порту со скоростью baudrate
uart.end();             // выключить сериал
uart.peek();            // вернуть крайний байт из буфера, не убирая его оттуда
uart.clear();           // очистить буфер
uart.flush();           // ждать окончания приёма
uart.read();            // вернуть крайний байт из буфера, убрав его оттуда
uart.write(val);        // запись в порт
uart.print(val);        // печать в порт (числа, строки, char array);
uart.println(val);      // печать в порт с переводом строки
uart.available();       // возвразает true, если в буфере что-то есть
uart.setTimeout(val);   // установить таймаут для функций парсинга (по умолчанию 100 мс)
uart.parseInt();        // принять целочисленное число
uart.readString();      // принять строку
uart.readStringUntil(); // принять строку по терминатору
uart.parseFloat();      // принять число float
uart.parsePacket(dataArray);  // принять пакет вида $50 60 70; в массив dataArray (смотри пример)

ПРИМЕРЫ


#include "GyverUART.h"

char data0 = 'b';
int8_t data1 = -50;
uint8_t data2 = 125;
int16_t data3 = -2000;
uint16_t data4 = 30000;
int32_t data5 = -70000;
uint32_t data6 = 4194967295;
float data7 = 3681.65424;
float data8 = -4375.12353;
String data9 = "LOL LOL";

const char *data10[] = {
  "LOL",
  "KEK",
  "CHEBUREK",
};

byte data11 = 0b11101011;
uint32_t data12 = 0xFAB666;

void setup() {
  uart.begin();
  uart.println(data0);
  uart.println(data1);
  uart.println(data2);
  uart.println(data3);
  uart.println(data4);
  uart.println(data5);
  uart.println(data6);
  uart.println(data7);
  uart.println(data8, 3);
  uart.println(data9);
  uart.println("KEK KEK");
  uart.println(F("KEK KEK MACRO"));
  uart.println(data10[2]);
  uart.println(data11, BIN);
  uart.println(data12, HEX);
}

void loop() {
  
}
#include "GyverUART.h"

int dataArray[8];

void setup() {
  uart.begin();    // открыть на 9600
}

void loop() {
  // $10 21 458 63 8 45 875 215;
  if (uart.parsePacket((int*)dataArray)) {
    for (byte i = 0; i < 8; i++) {
      uart.print(dataArray[i]);
      uart.print(" ");
    }
    uart.println();
  }
}

УСТАНОВКА БИБЛИОТЕКИ

Если вы не знаете, как установить библиотеку – читайте отдельный урок по работе с библиотеками!

БАГИ И ОШИБКИ

Если вы нашли баг или ошибку в исходнике или примерах, или у вас есть идеи по доработке библиотеки – пишите пожалуйста на почту alex@alexgyver.ru. В комментарии на страницах я заглядываю очень редко, на форум – ещё реже.

ОСТАЛЬНЫЕ БИБЛИОТЕКИ

У меня есть ещё очень много всего интересного! Смотрите полный список библиотек вот здесь.