Programação GPIO: mudanças entre as edições

De Caninos Loucos
Ir para navegação Ir para pesquisar
(Criou página com '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 fac...')
 
Sem resumo de edição
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 &lt;wiringPi.h&gt;</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 &lt;wiringPi.h&gt;
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
|}

Edição das 14h30min de 2 de julho de 2020

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:

caption Mapeamento do header de 40 pinos.

Primeiros passos