Raspberry Pi:Библиотеки/WiringPi/Драйверы DevLib/Драйвер для PiFace

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Драйвер для PiFace[1]

Библиотека WiringPi поддерживает модуль (драйвер) devLib для платы PiFace.

PiFace – это вспомогательная плата для Raspberry Pi, служащая для добавления контактов. Она оснащена 8 выходными контактами с открытым коллектором, 2 реле и 8 входными контактами. Эти 8 входных контактов можно использовать и в качестве выходных контактов, но нужно помнить, что они оснащены 330-омовыми резисторами, и для них, кроме того, нужно использовать расширительный модуль MCP23S17 из библиотеки WiringPi, а не расширительный модуль PiFace, о котором идет речь в этой статье.

Краткий обзор PiFace можно почитать тут.

Подключение

#include <wiringPi.h>
#include <piFace.h>

Инициализация

piFaceSetup (int pinBase) ;

Параметр pinBase – это базовое значение для номеров, через которые выполняется взаимодействие с контактами PiFace. В примере ниже базовым контактом сделан «200». Суммарно используется 32 контакта, но особенности платы таковы, что 8 входных контактов и 8 выходных контактов как бы наслаиваются друг на друга. Таким образом, если мы хотим выполнить запись на первый входной контакт, нам нужен номер, рассчитанный по формуле «номер базового контакта + 0», но та же самая формула нужна, чтобы определить номер для записи на первый выходной контакт.

Чтобы сосчитать состояние с выходного контакта-защелки, вам нужен номер, рассчитанный по формуле «номер базового контакта + 8 + номер выходного контакта». Остальные 16 контактов используются для внутреннего драйвера MCP23S17 (т.е. напрямую они не используются).

Плата PiFace, подключенная поверх Raspberry Pi, которая находится в корпусе Pibow

Обычная программа типа «Blink» будет выглядеть для PiFace следующим образом:

/*
 * blink.c:
 * Простой тест «Blink» для интерфейсной платы PiFace.  ***********************************************************************
 */

#include <stdio.h>

#include <wiringPi.h>
#include <piFace.h>

// в качестве базового контакта для PiFace указываем «200»
// и выбираем контакт для светодиода, не подключенного к реле

#define PIFACE  200
#define LED     (PIFACE+2)

int main (int argc, char *argv [])
{
  printf ("Raspberry Pi PiFace Blink\n") ;
  printf ("=========================\n") ;
  //  "Программа Blink для PiFace, подключенной к Raspberry Pi"

// всегда инициализируем WiringPi; если вам не нужно (или если
// вы не хотите) инициализировать ее с правами root-пользователя,
// используйте функцию wiringPiSys():

  wiringPiSetupSys () ;

// инициализируем плату PiFace:

  piFaceSetup (PIFACE) ;

  for (;;)
  {
    digitalWrite (LED, HIGH) ;  // вкл
    delay (500) ;               // мс
    digitalWrite (LED, LOW) ;   // выкл
    delay (500) ;
  }

  return 0 ;
}

Примечания

  • Плата PiFace использует чип MCP23S17, работающий через шину SPI и служащий для подключения к Pi дополнительных GPIO-контактов. Поэтому перед началом работы загрузите в ядро модули для шины SPI. Для этого впишите в терминал следующее:
gpio load spi
  • Если вы хотите использовать входные контакты в качестве выходных, тогда вместо расширительного модуля для PiFace вам нужно использовать расширительный модуль для чипа MCP23S17. В дальнейшем работать с контактами относительно просто: контакты с 0-го по 7-ой – это выходные контакты, а с 8-го по 15-ый – обычные входные контакты, на которых, если потребуется, можно использовать функцию pinMode(), чтобы переключить их в режим вывода данных.
  • Команда gpio поддерживает плату PiFace напрямую при помощи флага –p, но в этом случае с контактами придется работать по другому – номером базового контакта будет «200». К примеру, команда
gpio -p write 200 1

запишет первому выходному контакту значение HIGH – это первое реле.

См.также

Внешние ссылки