Raspberry Pi:Примеры/Библиотека WiringPi/Gertboard и WiringPi/Мигание светодиодом

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

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



Gertboard и WiringPi: мигание светодиодом[1]

В мире микроконтроллеров программы с миганием светодиодов – это что-то вроде «Hello, World!» То есть программы, демонстрирующие простейший функционал микроконтроллера. Как правило, они не делают ничего более, кроме как мигают одним или двумя светодиодами.

Итак, предположим, что вы подключили Pi к Gertboard, как было описано в предыдущей статье. Если да, мы можем приступить к написанию нашей первой программы для Gertboard при помощи WiringPi.

Небольшое примечание: Нумерация контактов в WiringPi отличается от родной нумерации микроконтроллера Pi. Как правило, мы используем номера, которые являются, по сути, позициями битов во внутренних GPIO-регистрах, и это нормально, однако у Pi эти номера не очень интуитивны, т.к. менялись при переходе из Rev1 в Rev2. Поэтому далее я буду использовать номера библиотеки WiringPi, попутно указывая их «настоящие» номера (т.е. номера типа BCM_GPIO). На номера WiringPi версия платы никак не влияет.

Один светодиод

Эта программа должна идти в комплекте с дистрибутивом WiringPi в папке «examples». Для удобства давайте покажем ее здесь:

#include <stdio.h>
#include <wiringPi.h>

// светодиодный контакт: контакт 0 в WiringPi – это BCM_GPIO 17.

#define LED     0

int main (void)
{
  printf ("Raspberry Pi - Gertboard Blink\n") ;
  //  "Raspberry Pi и Gertboard: Мигание"
 
  wiringPiSetup () ;

  pinMode (LED, OUTPUT) ;

  for (;;)
  {
    digitalWrite (LED, 1) ;     // включение
    delay (500) ;               // задержка в миллисекундах
    digitalWrite (LED, 0) ;     // выключение
    delay (500) ;
  }
  return 0 ;
}

Важная строчка программы – это

#include <wiringPi.h>

Если вы раньше программировали на C или C++, то оставшаяся часть программы должна быть понятна. Чтобы скомпилировать и запустить программу, пишем следующее:

gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink

Здесь нам нужно сделать привязку к библиотеке WiringPi, отсюда и -lwiringPi. Кроме того, чтобы запустить программу, вы должны быть root-пользователем – только он имеет прямой доступ к GPIO-контактам.

В программе используются следующие функции библиотеки WiringPi:

  • Функция wiringPiSetup(). Вызывается самой первой. Она «открывает» GPIO-устройства и позволяет нашей программе получить к ним доступ.
  • Функция pinMode(). Задает режим контакта. Как правило, выставляет контакт либо на ввод, либо на вывод данных, но допускает и пару других вариантов.
  • Функция digitalWrite(). Записывает на указанный контакт значение «0» или «1».
  • Функция delay(). Делает задержку на указанное количество миллисекунд.

То есть ничего экстраординарного тут нет. Если вы работали с Arduino, все это должно быть очень знакомым.

Когда программа будет запущена, вы можете нажать  Ctrl + C , чтобы остановить ее и вернуться к режиму командной строки.

Больше светодиодов

Теперь давайте подключим еще 7 светодиодов, чтобы в целом у нас получилось 8. Для этого мы соединим проводами-перемычками контакты GP17, GP18, GP21, GP22, GP23, GP24, GP25, GP4 (на гребешке J2) с одной стороны и контакты B1, B2, B3, B4, B5, B6, B7, B8 (на гребешке J3) с другой. Так, как показано в этой таблице:

J2 Провод-перемычка J3
GP17 <–> B1
GP18 <–> B2
GP21 <–> B3
GP22 <–> B4
GP23 <–> B5
GP24 <–> B6
GP25 <–> B7
GP4 <–> B8

Результат должен выглядеть примерно так:

Gertboard с 8 контактами, подключенными к буферам и светодиодам

В данном случае используется кабель с цветовой индикацией. Если вы знаете цветовую маркировку резисторов, то разберетесь, какой провод за что отвечает. Впрочем, в данном случае все просто – первые 8 GPIO-контактов на Pi подключены к первым 8 входным буферным контактам на Gertboard.

Программа-пример для 8 светодиодов

Она называется «blink8.c», ищите ее в папке «examples».

Эта программа отсылает 8 светодиодам простую последовательность действий: сначала она одновременно их зажигает, а затем выключает. Компиляция и запуск выполняются также:

gcc -Wall -o blink8 blink8.c -lwiringPi
sudo ./blink8

Если вы изучите эту программу, то увидите, что там используется нумерация контактов WiringPi. В частности, контакты с 0 по 7 удобно привязаны к первым восьми GPIO-контактам.

Эти светодиодные программы способны продемонстрировать лишь самые простейшие функции Gertboard. Чтобы изучить эту тему более подробно, попробуйте модифицировать их или написать свои собственные.

См.также

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