#1 Програмування Arduino » Циклічний (коловий) масив » 2025-01-03 17:32:08

p-a-h-a
відповідей: 3

Доброго дня, хочу поділитися напрацюваннями для ESP 8266, ESP 32-S3 бібліотекою з прикладом реалізаціїї циклічного масиву. Фішки: має швидкий зсув всього масиву, швидко додає на початок або кінець масиву нові данні з сувом масиву. Фактично міняється вказівник на початок масиву без перенесення всіх комірок. Працювати можна як з vector, так само має ітератори, дані зберігаються на кучі. Спробував зробити якомога більшу сумісність з STL. Наприклад працює сортування

CyclicArray<int> arr{-1,1,-3,3,-2,2,-5,5,-4,4};
std::sort(arr.begin(), arr.end(), std::greater<int>()); //5 4 3 2 1 -1 -2 -3 -4 -5
arr >> 2; //зсув вправо -4 -5 5 4 3 2 1 -1 -2 -3
arr.push_back(100); //-5 5 4 3 2 1 -1 -2 -3 100

Бібліотека може мати помилки. З радістю почитаю про зауваження та варіанти оптимізації.
Один з варіантів використання: зберігати в масив покази датчику.

Посиланя на приклад для Platformio: https://github.com/androidpasha/QuickShiftArray
image.png

#2 Програмування Arduino » Передати посилання на HardwareSerial або EspSoftwareSerial::UART у кла » 2023-07-15 16:53:15

p-a-h-a
відповідей: 0

Доброго дня. Пишу бібліотеку яка має друкувати певні данні через Serial.
У скечі необхідно передати яким саме Serial буде користуватися бібліотека хардварними(їх 2 шт) чи софтварним.
Ось мої намагання:

#include "Arduino.h"
#include <variant>
#include "SoftwareSerial.h"

HardwareSerial &hwSerial(Serial);
EspSoftwareSerial::UART swSwrial;


class mySerial
{
public:
  mySerial(auto &serialType)
  {
    serial = serialType;
  }

  void print()
  {
    serial.begin(9600); // Error!!! класс "std::variant<HardwareSerial, EspSoftwareSerial::UART>" не содержит члена "begin"C/C++(135)
    serial.print("Hallo"); //Error!!! класс "std::variant<HardwareSerial, EspSoftwareSerial::UART>" не содержит члена "print"
  }

private:
  std ::variant<HardwareSerial, EspSoftwareSerial::UART> &serial;
};

void Setup()
{
 mySerial mySerial(hwSerial); 
 mySerial.print();
}

Помилки написані в коментарях до коду. Прошу допомогти розібратися в питанні.

Підвал форуму