terça-feira, 16 de abril de 2013

WiringPi, uma API para o GPIO



O GPIO serve para podermos programar a interação entre periféricos como luzes, servos, sonares. Mas para o programar precisamos de uma API.

A API que vamos utilizar é a 'wiringPi' por ter mais e melhor informação que a 'bcm2835'.

Vamos instalar a API e fazer um pequeno programa em C.

Pode instalar a API de muitas maneiras alem da que vamos mostrar. Para a instalação precisamos de ter o nosso repositório actualizado, de modo a não haver erros, e ter o 'git' com os seguintes comandos:
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get git 

Agora com o git vamos buscar a API:
$sudo git clone git://git.dragon.net/wiringPi

E finalmente instalamos:
$cd /home/pi/wiringPi
$sudo ./build 

E já temos a API instalada. Convem ter em mente que os ficheiros de include vão estar em /usr/local/include e as bibliotecas em /usr/local/lib.

Vamos passar ao código e fazer um pequeno programa para ligar e desligar um Led. Para este exemplo utilizei uma resistência de 220 ohm.

Primeiro criamos o ficheiro.
$sudo nano raspberrying.c

----------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<wiringPi.h>                                                               //API wiringPi

int main(){

char comando;

if(wiringPiSetup == -1)                                                             //Verificação do GPIO
    return 1;

pinMode(7,Output);                                                                   //Modo do pino
while(1){
    printf("'l' para ligar e 'd' para desligar");
    scanf("%c",&comando);

    if(comando == 'd'){
        digitalWrite(7,LOW);                                                         //Escrita
    else if (comando =='l')
        digitalWrite(7,HIGH);

    }

return 0;
}

----------------------------------------------------------------------------------------------------------------------


As funções utilizadas são as seguintes:

  • int wiringPiSetup(void)
  • void pinMode(int pin, int mode)
  • void digitalWrite(int pin, int value)
Para  determinar o numero do pino a utilizar na API podemos ver no comando:
$Sudo gpio readall


Agora só falta compilar:
$sudo gcc -o NOME_FICHEIRO_FINAL NOME_FICHEIRO.c -l wiringPi
E correr:
$sudo ./NOME_FICHEIRO_FINAL

Sem comentários:

Enviar um comentário