БИБЛИОТЕКА GYVERBUART

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

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

Функция Arduino GyverUART Разница, байт
Serial.begin 994 236 758
write 898 254 644
print long 1136 436 700
print string 2260 1764 496
print float 1168 516 652
parseInt 1076 336 740
readString 2378 1716 662
parseFloat 1108 366 742

Поддерживаемые платформы: все МК поколения 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. В комментарии на страницах я заглядываю очень редко, на форум – ещё реже.

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

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