Служебные функции библиотеки WiringRP

setupWiringRP() #

Инициализирует библиотеку WiringRP.

Синтаксис #

int setupWiringRP(int MODE_PINS)

Параметры #

MODE_PINS - режим нумерации контактов.

Допустимые значения:

  • WRP_MODE_SUNXI - нумерация контактов по номерам sunxi (PA - PL).
  • WRP_MODE_PHYS - нумерация контактов по их физическому расположению на GPIO-разъеме (1 - 40).
  • WRP_MODE_WIRING - нумерации контактов по номерам wiring (для совместимости с Raspberry Pi 3).

Возвращаемое значение #

0 при успешном выполнении или отрицательное значение в случае ошибки.

Пример кода #

Пример инициализирует библиотеку WiringRP.

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"

void setup() {
    // Инициализация библиотеки WiringRP.
    // Используется режим нумерации контактов SUNXI.
    if (setupWiringRP(WRP_MODE_SUNXI) < 0) {
        onClose(2);
    }

    // Инициализация пользовательских объектов
    // ...
}

void loop() {
    // Основной цикл программы
    // ...
}

ONDESTROY() {
    // Освобождение занятых ресурсов, выключение напряжения на пинах
    // ...

    // Завершение работы библиотеки
    releaseWiringRP();
    // Выход из программы
    exit(0);
}

MAIN_WIRINGRP();

releaseWiringRP() #

Завершает работу WiringRP, освобождая занятые библиотекой ресурсы.

Синтаксис #

void releaseWiringRP(void)

Параметры #

Ничего.

Возвращаемое значение #

Ничего.

Пример кода #

Пример завершает работу с библиотекой WiringRP.

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"

void setup() {
    // Инициализация библиотеки WiringRP.
    // Используется режим нумерации контактов sunxi.
    if (setupWiringRP(WRP_MODE_SUNXI) < 0) {
        onClose(2);
    }

    // Инициализация пользовательских объектов
    // ...
}

void loop() {
    // Основной цикл программы
    // ...
}

ONDESTROY() {
    // Освобождение занятых ресурсов, выключение напряжения на пинах
    // ...

    // Завершение работы библиотеки
    releaseWiringRP();
    // Выход из программы
    exit(0);
}

MAIN_WIRINGRP();

getPin() #

Возвращает номер контакта GPIO-разъема, указанного в текущем режиме нумерации.

К СВЕДЕНИЮ

Режим нумерации задается при инициализации библиотеки функцией setupWiringRP.

Синтаксис #

int getPin(int pin, bool isValidate)

Параметры #

pin - номер контакта GPIO-разъема в текущем режиме нумерации.

isValidate - флаг для проверки доступности контакта в текущей версии распиновки:

  • true - выполнять проверку доступности.
  • false - не выполнять проверку доступности.

Возвращаемое значение #

Номер контакта или отрицательное значение в случае недоступности контакта или ошибки выполнения.

Пример кода #

Пример отображает номер контакта с физическим номером 3 на GPIO-разъеме.

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"

// Физический номер контакта GPIO-разъема
const int physPinNumber = 3;

void setup() {
    // Инициализация библиотеки WiringRP
    // Используется режим нумерации PHYSICS
    if (setupWiringRP(WRP_MODE_PHYS) < 0) {
        onClose(2);
    }

    int pinNumber = getPin(physPinNumber, true);
    printf("Указан физический номер контакта GPIO-разъема: %d\n", physPinNumber);
    if (pinNumber < 0) {
        printf("Контакт с физическим номером %d недоступен.\n", physPinNumber);
    } else {
        printf("Sunxi-номер контакта: %d.\n", pinNumber);
    }
    onClose(0);
}

void loop() {
    // Основной цикл программы
}

ONDESTROY() {
    // Завершение работы библиотеки
    releaseWiringRP();
    // Выход из программы
    exit(0);
}

MAIN_WIRINGRP();

getVersion() #

Возвращает текущую версию библиотеки WiringRP.

Синтаксис #

void getVersion(int *major, int *minor)

Параметры #

major - указатель на переменную для хранения старшего значения версии библиотеки.

minor - указатель на переменную для хранения младшего значения версии библиотеки.

Возвращаемое значение #

Ничего.

Пример кода #

Пример отображает текущую версию библиотеки WiringRP.

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"

// Переменные для хранения старшего и младшего значений версии библиотеки.
int major, minor;

void setup() {
    getVersion(&major, &minor);
    printf("Версия WiringRP: %d.%d\n", major, minor);
    // Выход из программы
    onClose(0);
}

void loop() {
    // Основной цикл программы
}

ONDESTROY() {
    // Выход из программы
    exit(0);
}

MAIN_WIRINGRP();

getPinOut() #

Возвращает текущую версию распиновки контактов GPIO-разъема.

Синтаксис #

int getPinOut(void)

Параметры #

Ничего.

Возвращаемое значение #

Текущая версия распиновки контактов GPIO-разъема.

Пример кода #

Пример отображает текущую версию распиновки контактов GPIO-разъема.

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"

void setup() {
    // Инициализация библиотеки WiringRP
    // Используется режим нумерации SUNXI
    if(setupWiringRP(WRP_MODE_SUNXI) < 0) {
        exit(EXIT_FAILURE);
    }

    int pinout = getPinOut();
    printf("Текущая версия распиновки GPIO-разъема: %d.\n", pinout);
    onClose(0);
}

void loop() {
    // Основной цикл программы
}

ONDESTROY() {
    // Завершение работы библиотеки
    releaseWiringRP();
    // Выход из программы
    exit(0);
}

MAIN_WIRINGRP();

map() #

Отображает число из одного диапазона в другой.

Синтаксис #

int map(int x, int in_min, int in_max, int out_min, int out_max)

Параметры #

x - значение для отображения

in_min - нижняя граница диапазона значения x

in_max - верхняя граница диапазона значения x

out_min - нижняя граница целевого диапазона значения

out_max - верхняя граница целевого диапазона значения

Возвращаемое значение #

Отображенное значение в целевом диапазоне.

Пример кода #

Пример отображает указанное значение из исходного диапазона от 0 до 100 (включительно) в целевой диапазон от -512 до 512 (включительно).

#include <stdio.h>
#include <stdlib.h>
#include "wiringRP.h"

// Исходный диапазон
const int inMin = 0;
const int inMax = 100;
// Целевой диапазон
const int outMin = -512;
const int outMax = 512;

void setup() {
    int mappedX = 0;

    printf("Исходное значение X | Отображенное значение X\n");
    for (int x = inMin; x <= inMax; x++) {
        mappedX = map(x, inMin, inMax, outMin, outMax);
        printf("%19d%26d\n", x, mappedX);        
    }

    onClose(0);
}

void loop() {
    // Основной цикл программы
}

ONDESTROY() {
    // Выход из программы
    exit(0);
}

MAIN_WIRINGRP();

4210 просмотров0 комментариев
0

Комментарии (0)

Для участия в обсуждении Вы должны быть авторизованным пользователем
Разделы

Навигация

ВойтиРегистрация