Arduino.Библиотеки

Arduino.Библиотеки

https://t.me/HotCheatSheet
EEPROM

Позволяет записывать и считывать информацию из памяти устройства.

Функции

read() — считывает байт из EEPROM. Те байты, которые никогда не подвергались записи, имеет значение 255.

Синтаксис:

EEPROM.read(address)

Параметры:

address: адрес байта, значение которого необходимо считать (int)

Возвращаемые значения:

значение указанного байта (byte)

Пример:

#include 

int a = 0;
int value;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  value = EEPROM.read(a);

  Serial.print(a);
  Serial.print("\t");
  Serial.print(value);
  Serial.println();

  a = a + 1;

  if (a == 512)
    a = 0;

  delay(500);
}


write() — записывает байт в EEPROM.

Синтаксис:

EEPROM.write(address, value)

Параметры:

address: адрес байта (нумерация с 0), значение которого необходимо записать (int). 

value: записываемое значение, от 0 до 255 (byte)

Возвращаемые значения:

нет

Пример:

#include 

void setup()
{
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, i);
}

void loop()
{
}


SD

Позволяет считывать и записывать информацию на SD-карту памяти (например, на плате расширения Arduino Ethernet).

Класс SD

Класс SD содержит функции для доступа к SD-карте памяти и позволяет совершать различные операции над файлами и каталогами.


begin() — инициализирует библиотеку и SD-карту памяти.

Синтаксис:

SD.begin()

SD.begin(cspin)

Параметры:

cspin (не обязательный параметр): номер вывода, подключенного к линии CS SD-карты памяти; по умолчанию равен номеру вывода SS аппаратной шины SPI.

Возвращаемые значения:

При успешном выполнении функция возвращает true, в противном случае - false.


exists() — проверяет существование на SD-карте указанного файла или директории.

Синтаксис:

SD.exists(filename)

Параметры:

filename: имя файла, существование которого необходимо проверить. Имя может включать в себя директории, разделенные прямым слешем "/".

Возвращаемые значения:

Если указанный файл или директория существует - функция возвращает true, в противном случае - false.


mkdir() — создает на SD-карте указанную директорию. Если путь к указанной директории содержит несуществующие папки - функция также их создает. Например, команда SD.mkdir("a/b/c") приведет к созданию трех папок: a, b и с.

Синтаксис:

SD.mkdir(filename)

Параметры:

filename: имя создаваемой директории. Имя может включать в себя вложенные папки, разделенные прямым слешем "/".

Возвращаемые значения:

Если директория успешно создана - функция возвращает true, в противном случае - false.


open() — функция открывает файл на SD-карте памяти.

Синтаксис:

SD.open(filepath)

SD.open(filepath, mode)

Параметры:

filename: имя открываемого файла. Может содержать директории, разделенные прямым слешем "/" - char *

mode (не обязательный параметр): режим открытия файла, по умолчанию - FILE_READ - byte. Может принимать одно из следующих значений:

FILE_READ: открыть для чтения с начала файла.

FILE_WRITE: открыть для чтения или записи в конец файла..

Возвращаемые значения:

Объект File, ссылающийся на открытый файл; если файл открыть не удалось, возвращаемый объект будет эквивалентен значению false (в логическом смысле). Т.е. значение, возвращаемое этой функцией, можно анализировать с помощью условного оператора if.


remove() — функция удаляет файл с SD-карты.

Синтаксис:

SD.remove(filename)

Параметры:

filename: имя удаляемого файла. Может содержать директории, разделенные прямым слешем "/".

Возвращаемые значения:

Если файл был успешно удален - функция вернет true, в противном случае - false. (Если указанный файл не существовал, возвращаемое значение может быть неопределенным).


rmdir() — удаляет директорию с SD-карты. Указываемая директория должна быть пустой.

Синтаксис:

SD.rmdir(filename)

Параметры:

filename: имя удаляемой директории. Может содержать вложенные папки, разделенные прямым слешем "/".

Возвращаемые значения:

Если удаление директории прошло успешно - функция вернет true, в противном случае - false. (Если указанная директория не существовала, значение, возвращаемое функцией, может быть неопределенным).


Класс File

Этот класс предназначен для чтения и записи данных в отдельные файлы на SD-карте памяти.


available() — функция проверяет наличие в файле байт, доступных для чтения.

Синтаксис:

file.available()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

Количество доступных для чтения байт (int).


close() — функция закрывает файл, удостоверившись, что все записанные в него данные физически сохранены на SD-карту памяти.

Синтаксис:

file.close()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

нет


flush() — позволяет убедиться, что все записанные в файл данные физически сохранены на SD-карту памяти. Эта же операция выполняется автоматически при закрытии файла.

Синтаксис:

file.flush()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

нет


peek() — считывает из файла байт данных, не перемещая указатель текущей позиции файла на следующий символ. Т.е. при многократном вызове peek() функция будет возвращать одно и то же значение.

Синтаксис:

file.peek()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

Байт данных (или символ), либо -1, если таковой отсутствует.


position() — функция позволяет узнать текущее положение указателя внутри открытого файла (т.е. позицию, с которой будет осуществляться чтение или запись следующего байта).

Синтаксис:

file.position()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

Номер текущей позиции указателя внутри файла (unsigned long)


print() — функция выводит данные в файл, предварительно открытый для записи. При этом числа выводятся как последовательность цифр, каждая из которых является ASCII-символом (например, число 123 будет отправлено как последовательность из трех символов '1', '2', '3').

Синтаксис:

file.print(data)

file.print(data, BASE)

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

data: данные, которые необходимо вывести (char, byte, int, long или string)

BASE (не обязательный параметр): система счисления, в которой необходимо выводить числа:

BIN для двоичной системы (основание 2)

DEC - для десятичной (основание 10)

OCT - для восьмеричной (основание 8)

HEX - для шестнадцатеричной (основание 16)

Возвращаемые значения:

byte

print() возвращает количество записанных байт. Считывать это значение не обязательно.


println() — функция выводит в файл данные, заканчивающиеся символом перевода каретки и пустой строкой. Перед вызовом функции файл должен быть предварительно открыт для записи. 

Синтаксис:

file.println()

file.println(data)

file.print(data, BASE)

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

data (не обязательный параметр): данные, которые необходимо вывести (char, byte, int, long или string)

BASE (не обязательный параметр): система счисления, в которой необходимо выводить числа:

BIN для двоичной системы (основание 2)

DEC - для десятичной (основание 10)

OCT - для восьмеричной (основание 8)

HEX - для шестнадцатеричной (основание 16).

Возвращаемые значения:

byte

println() возвращает количество записанных байт. Считывать это значение не обязательно.


seek() — функция изменяет положение текущей позиции внутри файла. Задаваемая позиция должна лежать в пределах от 0 до текущего размера файла (включительно).

Синтаксис:

file.seek(pos)

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

pos: позиция, в которую необходимо переместить указатель (unsigned long)

Возвращаемые значения:

В случае успешного выполнения функция возвращает true, в противном случае - false (boolean).


size() — возвращает размер файла.

Синтаксис:

file.size()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

Размер файла в байтах (unsigned long).


read() — функция считывает байт данных из открытого файла.

Синтаксис:

file.read()

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open()).

Возвращаемые значения:

Байт данных (или символ), либо -1, если таковых нет.


write() — записывает данные в файл.

Синтаксис:

file.write(data)

file.write(buf, len)

Параметры:

file: экземпляр класса File (возвращаемый функцией SD.open())

data: записываемый байт данных (byte), символ (char) или строка (char *)

buf: массив символов или байт

len: количество элементов массива

Возвращаемые значения:

byte

Функция write() возвращает количество записанных байт. Считывать этот параметр не обязательно.


isDirectory() — директории (или папки) технически являются особым видом файлов. Данная функция позволяет проверить, является ли указанный файл директорией или нет.

Синтаксис:

file.isDirectory()

Параметры:

file: экземпляр класса File (возвращаемый функцией file.open())

Возвращаемые значения:

boolean

Пример:

#include <SD.h>

File root;

void setup()
{
  Serial.begin(9600);
  pinMode(10, OUTPUT);

  SD.begin(10);

  root = SD.open("/");

  printDirectory(root, 0);

  Serial.println("done!");
}

void loop()
{
  // после первоначальной настройки ничего не происходит.
}

void printDirectory(File dir, int numTabs) {
   while(true) {

     File entry =  dir.openNextFile();
     if (! entry) {
       // больше нет файлов
       //Serial.println("**nomorefiles**");
       break;
     }
     for (uint8_t i=0; i<numTabs; i++) {
       Serial.print('\t');
     }
     Serial.print(entry.name());
     if (entry.isDirectory()) {
       Serial.println("/");
       printDirectory(entry, numTabs+1);
     } else {
       // у файлов есть размер, в отличие от директорий
       Serial.print("\t\t");
       Serial.println(entry.size(), DEC);
     }
   }
}


openNextFile() — Возвращает имя следующего файла или папки в пределах директории.

Синтаксис:

file.openNextFile()

Параметры:

file: экземпляр класса File, ссылающийся на директорию.

Возвращаемые значения:

char: имя следующего файла или папки в пределах директории.

Пример:

#include <SD.h>

File root;

void setup()
{
  Serial.begin(9600);
  pinMode(10, OUTPUT);

  SD.begin(10);

  root = SD.open("/");

  printDirectory(root, 0);

  Serial.println("done!");
}

void loop()
{
  // после первоначальной настройки ничего не происходит.
}

void printDirectory(File dir, int numTabs) {
   while(true) {

     File entry =  dir.openNextFile();
     if (! entry) {
       // больше нет файлов
       Serial.println("**nomorefiles**");
     }
     for (uint8_t i=0; i<numTabs; i++) {
       Serial.print('\t');
     }
     Serial.print(entry.name());
     if (entry.isDirectory()) {
       Serial.println("/");
       printDirectory(entry, numTabs+1);
     } else {
       // у файлов есть размер, в отличие от директорий
       Serial.print("\t\t");
       Serial.println(entry.size(), DEC);
     }
   }
}


rewindDirectory() — функция позволяет вернуться к первому файлу в пределах директории. Как правило, используется вместе с функцией openNextFile().

Синтаксис:

file.rewindDirectory()

Параметры:

file: экземпляр класса File.

Возвращаемые значения:

нет

Пример:

#include <SD.h>

File root;

void setup()
{
  Serial.begin(9600);
  pinMode(10, OUTPUT);

  SD.begin(10);

  root = SD.open("/");

  printDirectory(root, 0);

  Serial.println("done!");
}

void loop()
{
  // после первоначальной настройки ничего не происходит.
}

void printDirectory(File dir, int numTabs) {
   while(true) {

     File entry =  dir.openNextFile();
     if (! entry) {
       // больше нет файлов
       Serial.println("**nomorefiles**");
     }
     for (uint8_t i=0; i<numTabs; i++) {
       Serial.print('\t');
     }
     Serial.print(entry.name());
     if (entry.isDirectory()) {
       Serial.println("/");
       printDirectory(entry, numTabs+1);
     } else {
       // у файлов есть размер, в отличие от директорий
       Serial.print("\t\t");
       Serial.println(entry.size(), DEC);
     }
   }
}


SPI

Позволяет взаимодействовать с различными SPI-устройствами, выступая при этом в роли ведущего устройства.

Функции

begin() — функция инициализирует работу шины SPI, а именно: конфигурирует выводы SCK, MOSI и SS как выходы, формирует низкий уровень сигнала на выводах SCK и MOSI, и высокий уровень - на выводе SS.

Синтаксис:

SPI.begin()

Параметры:

нет

Возвращаемые значения:

нет


end() — функция завершает работу шины SPI (режим работы выводов SPI остается прежним).

Синтаксис:

SPI.end()

Параметры:

нет

Возвращаемые значения:

нет


setBitOrder() — функция определяет порядок следования бит данных по шине SPI: младшим битом вперед (LSBFIRST) или старшим битом вперед (MSBFIRST).

Синтаксис:

SPI.setBitOrder(order)

Параметры:

order: одно из двух значений - LSBFIRST или MSBFIRST.

Возвращаемые значения:

нет


setClockDivider() — позволяет задать тактовую частоту SPI, указав коэффициент деления тактовой частоты контроллера.

Синтаксис:

SPI.setClockDivider(divider)

Параметры:

divider:

SPI_CLOCK_DIV2, SPI_CLOCK_DIV4, SPI_CLOCK_DIV8

SPI_CLOCK_DIV16, SPI_CLOCK_DIV32, SPI_CLOCK_DIV64

SPI_CLOCK_DIV128

Возвращаемые значения:

нет


setDataMode() — позволяет задать режим работы SPI: полярность и фазу тактовых импульсов.

Синтаксис:

SPI.setDataMode(mode)

Параметры:

mode:

SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3

Возвращаемые значения:

нет


transfer() — осуществляет передачу байта данных по шине SPI, одновременно принимая входящий байт.

Синтаксис:

SPI.transfer(val)

Параметры:

val: байт данных, который необходимо отправить по SPI

Возвращаемые значения:

байт данных, полученный по шине SPI


SoftwareSerial

Позволяет реализовать последовательный интерфейс на любых цифровых выводах Ардуино с помощью программных средств, дублирующих функциональность UART (отсюда и название "SoftwareSerial").

Функции

SoftwareSerial() — функция создает новый объект типа SoftwareSerial и присваивает его указанной переменной

Синтаксис:

SoftwareSerial(rxPin, txPin)

Параметры:

rxPin: вывод для приема данных по последовательному интерфейсу

txPin: вывод для передачи данных по последовательному интерфейсу

Пример:

#define rxPin 2
#define txPin 3

// инициализируем новый последовательный порт
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);


available() — возвращает количество непрочитанных байт (символов), принятых через программный последовательный порт. Непрочитанные данные накапливаются во входном последовательном буфере.

Параметры:

нет

Возвращаемые значения:

количество непрочитанных байт

Пример:

// подключаем библиотеку SoftwareSerial для использования ее функций:
#include <SoftwareSerial.h>

#define rxPin 10
#define txPin 11

// инициализируем новый последовательный порт
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup()  {
  // задаем режим работы выводов tx, rx:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  // устанавливаем скорость передачи данных последовательного порта
  mySerial.begin(9600);
}

void loop() {
  if (mySerial.available()>0){
  mySerial.read();
 }
}


begin() — задает скорость передачи данных последовательного порта. Поддерживаемые значения: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 31250, 38400, 57600 и 115200.

Синтаксис:

mySerial.begin(speed)

Параметры:

speed: скорость передачи данных в бодах (long)

mySerial: имя экземпляра класса SoftwareSerial, который должен принимать данные

Возвращаемые значения:

нет

Пример:

// подключаем библиотеку SoftwareSerial для использования ее функций:
#include <SoftwareSerial.h>

#define rxPin 10
#define txPin 11

// инициализируем новый последовательный порт
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup()  {
  // задаем режим работы выводов tx, rx:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  // устанавливаем скорость передачи данных последовательного порта
  mySerial.begin(9600);
}

void loop() {
  // ...
 }
}


isListening() — позволяет проверить, активен ли программный последовательный порт. Функция возвращает true. если порт находится в режиме ожидания данных.

Параметры:

нет

Возвращаемые значения:

boolean

Пример:

#include <SoftwareSerial.h>

// программный последовательный порт : TX = цифровой вывод 10, RX = цифровой вывод 11
SoftwareSerial portOne(10,11);

void setup()
{
  // инициализируем аппаратный последовательный порт
  Serial.begin(9600);

  // инициализируем программный последовательный порт
  portOne.begin(9600);
}

void loop()
{
  if (portOne.isListening()) {
   Serial.println("Port One is listening!"); 
}


overflow() — проверяет входной буфер программного последовательного порта на предмет его переполнения. При вызове этой функции, флаг переполнения буфера сбрасывается.

Параметры:

нет

Возвращаемые значения:

boolean

Пример:

#include <SoftwareSerial.h>

// программный последовательный порт : TX = цифровой вывод 10, RX = цифровой вывод 11
SoftwareSerial portOne(10,11);

void setup()
{
  // инициализируем аппаратный последовательный порт
  Serial.begin(9600);

  // инициализируем программный последовательный порт
  portOne.begin(9600);
}

void loop()
{
  if (portOne.overflow()) {
   Serial.println("SoftwareSerial overflow!"); 
}


peek() — возвращает символ, принятый программным последовательным портом через вывод RX. Однако, в отличие от read(), многократный вызов данной функции будет приводить к получению одного и того же значения.

Параметры:

нет

Возвращаемые значения:

полученный символ, или -1, если такового нет

Пример:

SoftwareSerial mySerial(10,11);

void setup()
{
  mySerial.begin(9600);
}

void loop()
{
  char c = mySerial.peek();
}


read() — возвращает символ, принятый программным последовательным портом через вывод RX. Следует иметь ввиду, что в каждый момент времени принимать поступающие данные может только один программный порт.

Параметры:

нет

Возвращаемые значения:

полученный символ, или -1, если такового нет

Пример:

SoftwareSerial mySerial(10,11);

void setup()
{
  mySerial.begin(9600);
}

void loop()
{
  char c = mySerial.read();
}


print() — выводит данные через вывод TX программного последовательного порта.

Параметры:

Аналогично функции Serial.print().

Возвращаемые значения:

byte

Функция print() возвращает количество отправленных байт. Считывание этого значения не обязательно.

Пример:

SoftwareSerial serial(10,11);
int analogValue;

void setup()
{
  serial.begin(9600);
}

void loop()
{
  // считываем значение с аналогового входа 0:
  analogValue = analogRead(A0);

  // выводим его в разных форматах:
  serial.print(analogValue);         // выводим как ASCII-символы в десятичном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, DEC);    // выводим как ASCII-символы в десятичном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, HEX);    // выводим как ASCII-символы в шестнадцатеричном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, OCT);    // выводим как ASCII-символы в восьмеричном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, BIN);    // выводим как ASCII-символы в двоичном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue/4, BYTE); // выводим в необработанном виде (предварительно 
                                     // поделив на 4, т.к. analogRead() возвращает значения
                                     // в диапазоне от 0 до 1023, а в байте данных может
                                     // хранится число не больше 255)
  serial.print("\t");                // выводим символ табуляции    
  serial.println();                  // выводим символ перевода строки

  // задержка 10 миллисекунд перед очередным считыванием:
  delay(10);
}


println() — выводит данные через вывод TX программного последовательного порта с последующим символом возврата каретки и перевода строки.

Параметры:

Аналогично функции Serial.println().

Возвращаемые значения:

byte

Функция println() возвращает количество отправленных байт. Считывание этого значения не обязательно.

Пример:

SoftwareSerial serial(10,11);
int analogValue;

void setup()
{
  serial.begin(9600);
}

void loop()
{
  // считываем значение с аналогового входа 0:
  analogValue = analogRead(A0);

  // выводим его в разных форматах:
  serial.print(analogValue);         // выводим как ASCII-символы в десятичном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, DEC);    // выводим как ASCII-символы в десятичном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, HEX);    // выводим как ASCII-символы в шестнадцатеричном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, OCT);    // выводим как ASCII-символы в восьмеричном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue, BIN);    // выводим как ASCII-символы в двоичном виде
  serial.print("\t");                // выводим символ табуляции
  serial.print(analogValue/4, BYTE); // выводим в необработанном виде (предварительно 
                                     // поделив на 4, т.к. analogRead() возвращает значения
                                     // в диапазоне от 0 до 1023, а в байте данных может
                                     // хранится число не больше 255)
  serial.print("\t");                // выводим символ табуляции    
  serial.println();                  // выводим символ перевода строки

  // задержка 10 миллисекунд перед очередным считыванием:
  delay(10);
}


listen() — переводит указанный последовательный порт в режим ожидания данных. В каждый момент времени только один программный порт может принимать данные; при этом данные, поступающие другим портам, будут игнорироваться.

Синтаксис:

mySerial.listen()

Параметры:

mySerial: имя экземпляра класса SoftwareSerial, который должен принимать данные

Возвращаемые значения:

нет

Пример:

#include <SoftwareSerial.h>

// программный последовательный порт : TX = цифровой вывод 10, RX = цифровой вывод 11
SoftwareSerial portOne(10, 11);

// программный последовательный порт : TX = цифровой вывод 8, RX = цифровой вывод 9
SoftwareSerial portTwo(8, 9);

void setup()
{
  // инициализируем аппаратный последовательный порт
  Serial.begin(9600);

  // инициализируем оба программных порта
  portOne.begin(9600);
  portTwo.begin(9600);

}

void loop()
{
  portOne.listen();

  if (portOne.isListening()) {
   Serial.println("Port One is listening!"); 
}else{
   Serial.println("Port One is not listening!"); 
}

  if (portTwo.isListening()) {
   Serial.println("Port Two is listening!"); 
}else{
   Serial.println("Port Two is not listening!"); 
}

}


write() — выводит данные в виде последовательности байт через вывод TX программного последовательного порта.

Параметры:

Аналогично функции Serial.write().

Возвращаемые значения:

byte

Функция write() возвращает количество записанных байт. Считывание этого значения не обязательно.

Пример:

SoftwareSerial mySerial(10, 11);

void setup()
{
  mySerial.begin(9600);
}

void loop()
{
  mySerial.write(45); // отправляем байт данных со значением 45

   int bytesSent = mySerial.write("hello"); //отправляем строку "hello", считывая длину этой строки.
}

Report Page