|
|
Linha 1: |
Linha 1: |
| Esta página explica como programar as saídas GPIO (General Purpose Input/Output) da Labrador, que são basicamente fios nos quais você pode enviar e receber dados. Para facilitar a programação, a placa Labrador é compatível com o formato da Raspberry Pi, e possui a biblioteca <code>wiringK9</code>, baseada na wiringPi, também da Raspberry Pi. Veja a seguir detalhes sobre a pinagem GPIO, e sobre como usar a <code>wirkingK9</code>. | | Esta página explica como programar as saídas GPIO (General Purpose Input/Output) da Labrador, que são basicamente pinos nos quais você pode enviar e receber dados. Para facilitar a programação, a placa Labrador segue a interface padrão para userspace para Linux embarcado. O tutorial desta página funciona tanto com a Labrador 32 quanto 64-bits. |
| | |
| | Além disso, a placa Labrador 32-bits é compatível com o formato da Raspberry Pi, e possui a biblioteca <code>wiringK9</code>, baseada na wiringPi, também da Raspberry Pi. Mais detalhes desta biblioteca pode ser encontrado nessa página [[Wiring K9]]. |
|
| |
|
| == Configuração dos pinos == | | == Configuração dos pinos == |
|
| |
|
| A configuração de pinos para o cabeçalho compatível com Raspberry Pi é a seguinte: | | A configuração de pinos para o cabeçalho de GPIO é a seguinte: |
|
| |
|
| [[File:40pinh.png|image|1000px|caption Mapeamento do header de 40 pinos.]] | | [[File:40pinh.png|image|1000px|caption Mapeamento do header de 40 pinos.]] |
|
| |
|
| == Primeiros passos == | | == Primeiros passos == |
|
| |
| === Instalando wiringK9 ===
| |
|
| |
| Para começar a usar a biblioteca wiringK9, o primeiro passo é instalá-la. Em sistemas Linux, os seguintes comandos são usados:
| |
|
| |
| <pre>$ git clone https://github.com/caninos-loucos/wiringK9.git
| |
| $ cd wiringK9
| |
| $ chmod +x ./build
| |
| $ sudo ./build</pre>
| |
| === Incluindo e inicializando ===
| |
|
| |
| Depois de instalar o wiringK9 ele estará pronto para ser usado em seus projetos, para isso você precisa incluir seu arquivo de cabeçalho em seu código usando a linha <code>#include <wiringPi.h></code>.
| |
|
| |
| Depois de incluído, o wiringK9 pode ser inicializado de quatro maneiras diferentes. Nós recomendamos o uso do seguinte comando:
| |
|
| |
| <pre>int wiringPiSetupPhys (void);</pre>
| |
| Inicializar o GPIO dessa maneira garantirá que os números de pinos da Figura acima sejam usados. Assim, um exemplo de "blink" (piscar) no pino 7 (GPIOB18) ficaria assim:
| |
|
| |
| <pre>#include <wiringPi.h>
| |
| int main (void)
| |
| {
| |
| wiringPiSetupPhys () ;
| |
| pinMode (7, OUTPUT) ;
| |
| while (1)
| |
| {
| |
| digitalWrite (7, HIGH) ; delay (500) ;
| |
| digitalWrite (7, LOW) ; delay (500) ;
| |
| }
| |
| return;
| |
| }</pre>
| |
| As outras formas de inicializar a biblioteca são usando uma das funções abaixo:
| |
|
| |
| <pre>int wiringPiSetup (void) ;
| |
| int wiringPiSetupGpio (void) ;
| |
| int wiringPiSetupSys (void) ;</pre>
| |
| Se usar <code>wiringPiSetupGPIO</code> ou <code>wiringPiSetupSys</code>, a configuração do pino seguirá o número do GPIO original do chip Broadcomm usado no Raspberry Pi. Uma tabela com a equivalência pode ser encontrada na seção [pin].
| |
|
| |
| === Compilando ===
| |
|
| |
| Finalmente, para compilar um código usando a biblioteca wiringK9, as seguintes linhas de comando são necessárias:
| |
|
| |
| -I/usr/local/include -L/usr/local/lib -lwiringPi
| |
|
| |
| Outros parâmetros que podem ser úteis, dependendo do ambiente em execução, são -lwiringPi, -lwiringPiDev e -lpthread.
| |
|
| |
| == Funções ==
| |
|
| |
| As principais funções dessa biblioteca podem ser encontradas na tabela abaixo:<br />
| |
| [[File:wiringK9-functions.png|image|800px]]
| |
|
| |
| == Mapeamento dos pinos na inicialização ==
| |
|
| |
| {| class="wikitable"
| |
| !align="center"| Physical Numbering
| |
| !align="center"|
| |
|
| |
| !align="center"|
| |
|
| |
| !align="center"|
| |
|
| |
| |-
| |
| |align="center"| wiringPiSetupPhys()
| |
| |align="center"| wiringPiSetup()
| |
| |align="center"| wiringPiSetupGpio()
| |
| |align="center"| wiringPiSetupSys()
| |
| |-
| |
| |align="center"| 1
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 2
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 3
| |
| |align="center"| 8
| |
| |align="center"| 2
| |
| |align="center"| 2
| |
| |-
| |
| |align="center"| 4
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 5
| |
| |align="center"| 9
| |
| |align="center"| 3
| |
| |align="center"| 3
| |
| |-
| |
| |align="center"| 6
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 7
| |
| |align="center"| 7
| |
| |align="center"| 4
| |
| |align="center"| 4
| |
| |-
| |
| |align="center"| 8
| |
| |align="center"| 15
| |
| |align="center"| 14
| |
| |align="center"| 14
| |
| |-
| |
| |align="center"| 9
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 10
| |
| |align="center"| 16
| |
| |align="center"| 15
| |
| |align="center"| 15
| |
| |-
| |
| |align="center"| 11
| |
| |align="center"| 0
| |
| |align="center"| 17
| |
| |align="center"| 17
| |
| |-
| |
| |align="center"| 12
| |
| |align="center"| 1
| |
| |align="center"| 18
| |
| |align="center"| 18
| |
| |-
| |
| |align="center"| 13
| |
| |align="center"| 2
| |
| |align="center"| 27
| |
| |align="center"| 27
| |
| |-
| |
| |align="center"| 14
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 15
| |
| |align="center"| 3
| |
| |align="center"| 22
| |
| |align="center"| 22
| |
| |-
| |
| |align="center"| 16
| |
| |align="center"| 4
| |
| |align="center"| 23
| |
| |align="center"| 23
| |
| |-
| |
| |align="center"| 17
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 18
| |
| |align="center"| 5
| |
| |align="center"| 24
| |
| |align="center"| 24
| |
| |-
| |
| |align="center"| 19
| |
| |align="center"| 12
| |
| |align="center"| 10
| |
| |align="center"| 10
| |
| |-
| |
| |align="center"| 20
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 21
| |
| |align="center"| 13
| |
| |align="center"| 9
| |
| |align="center"| 9
| |
| |-
| |
| |align="center"| 22
| |
| |align="center"| 6
| |
| |align="center"| 25
| |
| |align="center"| 25
| |
| |-
| |
| |align="center"| 23
| |
| |align="center"| 14
| |
| |align="center"| 11
| |
| |align="center"| 11
| |
| |-
| |
| |align="center"| 24
| |
| |align="center"| 10
| |
| |align="center"| 8
| |
| |align="center"| 8
| |
| |-
| |
| |align="center"| 25
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 26
| |
| |align="center"| 11
| |
| |align="center"| 7
| |
| |align="center"| 7
| |
| |-
| |
| |align="center"| 27
| |
| |align="center"| 30
| |
| |align="center"| 0
| |
| |align="center"| 0
| |
| |-
| |
| |align="center"| 28
| |
| |align="center"| 31
| |
| |align="center"| 1
| |
| |align="center"| 1
| |
| |-
| |
| |align="center"| 29
| |
| |align="center"| 21
| |
| |align="center"| 5
| |
| |align="center"| 5
| |
| |-
| |
| |align="center"| 30
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 31
| |
| |align="center"| 22
| |
| |align="center"| 6
| |
| |align="center"| 6
| |
| |-
| |
| |align="center"| 32
| |
| |align="center"| 26
| |
| |align="center"| 12
| |
| |align="center"| 12
| |
| |-
| |
| |align="center"| 33
| |
| |align="center"| 23
| |
| |align="center"| 13
| |
| |align="center"| 13
| |
| |-
| |
| |align="center"| 34
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 35
| |
| |align="center"| 24
| |
| |align="center"| 19
| |
| |align="center"| 19
| |
| |-
| |
| |align="center"| 36
| |
| |align="center"| 27
| |
| |align="center"| 16
| |
| |align="center"| 16
| |
| |-
| |
| |align="center"| 37
| |
| |align="center"| 25
| |
| |align="center"| 26
| |
| |align="center"| 26
| |
| |-
| |
| |align="center"| 38
| |
| |align="center"| 28
| |
| |align="center"| 20
| |
| |align="center"| 20
| |
| |-
| |
| |align="center"| 39
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |align="center"| –
| |
| |-
| |
| |align="center"| 40
| |
| |align="center"| 29
| |
| |align="center"| 21
| |
| |align="center"| 21
| |
| |}
| |
Esta página explica como programar as saídas GPIO (General Purpose Input/Output) da Labrador, que são basicamente pinos nos quais você pode enviar e receber dados. Para facilitar a programação, a placa Labrador segue a interface padrão para userspace para Linux embarcado. O tutorial desta página funciona tanto com a Labrador 32 quanto 64-bits.
Além disso, a placa Labrador 32-bits é compatível com o formato da Raspberry Pi, e possui a biblioteca wiringK9
, baseada na wiringPi, também da Raspberry Pi. Mais detalhes desta biblioteca pode ser encontrado nessa página Wiring K9.
Configuração dos pinos
A configuração de pinos para o cabeçalho de GPIO é a seguinte:
Primeiros passos