Мигаем светодиодом с помощью Raspberry Pi

Я наконец-то дождался прибытия своего RPi! :-)

Первым делом, после вскрытия коробочки, вставил sd карту с установленной системой openelec и подключил питание. Девайс радостно замигал своими индикаторами и был немедленно подключен к телевизору. На экране появился интерфейс XBMC. Таким образом получился медиа-плеер. :-)

Но в этой статье нужно не развлекаться с медиа-плеером, а мигать светодиодом. Поэтому приступим к созданию окружения для компиляции программ под RPi (если на RPi стоит нормальный, т.е. полноценный linux, то можно просто поставить на него средства компиляции и сбрасывать исходники).

Создание окружения для компиляции

Первым делом необходимо стянуть tool-chain, который и предоставить возможность cross-compile. Стягивать его будем с github:

git clone git://github.com/raspberrypi/tools

Теперь, когда у нас есть tool-chain, можно с его помощью собрать библиотеки wiringPi, которые помогут нам работать с GPIO как с пинами Arduino.

Скачиваем wiringPi:

git clone git://git.drogon.net/wiringPi

И редактируем файл wiringPi/wiringPi/Makefile, заменяя компилятор и пути инсталляции, так чтобы компилятор был из tool-chain, а пути инсталляции ссылались в tool-chain, например:
Компилятор из tool-chain:

CC      = /home/rozh/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-gcc

Инсталяция в tool-chain:

install -m 0644 wiringPi.h      /home/rozh/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/lib/gcc/arm-bcm2708hardfp-linux-gnueabi/4.7.1/includ

А путь для конечного файла библиотеки libwiringPi.a должен быть вида:

/home/rozh/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/lib/gcc/arm-bcm2708hardfp-linux-gnueabi/4.7.1/

Вот с окружением и все, теперь можно компилить под arm :-)

Приложение для мигания светодиодом

Тут ничего сложного. Это простой пример использования wiringPi.h. Полный список возможностей и документацию можно посмотреть на сайте разработчика: http://projects.drogon.net/raspberry-pi/wiringpi.

Собственно листинг программы

#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
 
int main (void)
{
	if (wiringPiSetup () == -1) //Инициализация wiringPi
		exit (1);
	pinMode (1, OUTPUT) ;		//Установка 1 пина на выход
	for (;;)			//бесконечный цикл мигания :-)
	{
		digitalWrite (1, 1) ;	//подача высокого напряжения
		printf("light!\n");
		delay(1000);		//ждем 1 сек
		digitalWrite (1, 0) ;	//подача низкого напряжения
		printf("no!\n");
		delay(1000);		//ждем 1 сек
	}
}

Подключенный к 1 пину светодиод будет мигать с интервалом в 1 секунду.

Компиляция приложения

Что бы из исходника получить бинарник нужно его скомпилировать tool-chain’ом. Для этого указываем в командной строке путь до компилятора и указываем параметры компиляции, например я использую вот такой скриптик:

CC_ARM="/home/rozh/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-gcc"
FILE=$1
PROJECT="/home/rozh/RPi"
PARAMS="-lwiringPi"
$CC_ARM -o "$PROJECT/arm/$FILE.bin" "$PROJECT/source/$FILE.c" $PARAMS

Где:

  • CC_ARM — путь до компилятора в tool-chain
  • FILE — имя файла для компиляции
  • PROJECT — папка с проектом
  • PARAMS — параметры для копиляции

Параметр -lwiringPI необходим для компиляции файла с wiringPi.h.

Запуск приложения

Прежде всего скопируем скомпиленный бинарник на RPi любым способом. Далее подключимся через ssh и запустим прогу командой:

./led.bin

Если светодиод подключен правильно, то он начнет мигать. Вот и помигали светодиодом с помощью Raspberry Pi. :-)

Ну и на закуску видео:

Запись опубликована в рубрике Raspberry Pi с метками , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *