БИБЛИОТЕКА GYVERBUART

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

Занимаемое место во Flash памяти у разных функций

Функция Arduino GyverUART Разница, байт
begin 1028 166 862
print long 1094 326 768
print string 2100 1484 616
print float 2021 446 1575
parseInt 1030 214 816
readString 2334 1594 740
parseFloat 1070 246 824

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

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


Библиотека полностью (за исключением функции 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();
  }
}

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

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