Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A linguagem C foi criada nos anos de 1970 e embora um pouco antiga, ainda amplamente usada nos
dias de hoje. considerada uma das linguagens de uso geral mais populares. O pblico que utiliza
essa linguagem varia desde entusiastas e hobbystas construindo projetos em casa at pro ssionais da
indstria que ganham seu po de cada dia programando em C.
Podemos encontrar a linguagem C em diversos lugares. Pequenos dispositivos como relgios digitais e
cafeteiras como tambm grandes sistemas de software sendo executados em mquinas industriais, so
apenas alguns exemplos do uso desta poderosa linguagem. Se voc j usou Linux deve saber que
grande parte do sistema foi e escrito em linguagem C. At mesmo parte do sistema da Raspberry Pi, o
Raspbian, escrito em C.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 1/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Neste tutorial iremos apresentar como con gurar a Raspberry Pi para desenvolvimento em linguagem C
mostrando alguns exemplos bsicos como piscar um LED e ler botes.
Materiais necessrios
Para realizar os exemplos deste tutorial voc ir precisar dos seguintes materiais:
necessrio instalar a imagem Raspbian com Desktop no carto micro SD. Para gravar imagem no
carto recomendamos o software Etcher pois bem fcil de usar.
Circuito Eletrnico
O circuito utilizado para este tutorial bem simples e de fcil montagem. Monte conforme a gura a
seguir:
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 2/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Existem IDEs que suportam diversos tipos de linguagem. Para este tutorial usaremos a IDE Geany que
j vem inclusa na imagem Desktop da Raspberry Pi. No Geany iremos escrever, compilar e executar
nossas aplicaes em linguagem C.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 3/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Hello World C
1 #include <stdio.h>
2
3 int main()
4 {
5 printf("Hello World!\n");
6 return 0;
7 }
Salve o programa em alguma pasta do sistema com algum nome terminado em .c como hello_world.c.
Para isso clique em File -> Save, digite o nome do arquivo terminado em .c, escolha a pasta e clique
em Save.
Para executar a aplicao selecione o menu Build -> Build e depois Build -> Execute ou pressione F9 e
ento F5. Um terminal dever abrir com a mensagem Hello World!.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 4/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Voc pode veri car que foi gerado um arquivo binrio de nome hello_world na mesma pasta onde o
programa foi salvo. Abrindo um terminal possvel executar o programa utilizando o seguinte
comando:
Pronto! Agora voc j sabe como desenvolver aplicaes em linguagem C na Raspberry Pi.
Biblioteca WiringPi
Para quem j programou Arduino vai achar bem fcil a biblioteca WiringPi. Ela foi desenvolvida para
facilitar o acesso e controle dos pinos GPIO da Raspberry Pi. uma biblioteca feita para uso em
programas de linguagem C ou C++. Assim como a IDE Geany, a biblioteca WiringPi j vem instalada no
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 5/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
sistema bastando apenas incluir a biblioteca em seu programa com a linha #include <wiringPi.h>.
Caso a biblioteca no esteja instalada por padro, seguir os passos de instalao encontrados aqui.
WiringPi tambm vem com um programa de linha de comando chamado gpio que tambm pode ser
utilizado para pequenos testes. Executando o comando gpio readall podemos ver uma tabela com a
organizao dos pinos. Veja a seguir:
A coluna marcada em azul indica a numerao que ser usada nas funes da biblioteca. As colunas
em amarelo indicam se o pino est con gurado como entrada ou sada. A coluna central em verde
mostra a numerao dos pinos fsicos da Raspberry Pi.
Con gura um GPIO como entrada, sada ou sada PWM. int mode pode ter os valores INPUT, OUTPUT
ou PWM_OUTPUT.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 6/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Con gura os resistores internos de pull-up ou pull-down. int pud pode ter os valores PUD_OFF (sem
resistor interno), PUD_UP(resistor pull-up 3,3V) e PUD_DOWN(resistor pull-down GND).
Escreve valores HIGH ou LOW (1 ou 0) em um determinado pino con gurado anteriormente como sada.
Retorna o valor lido em um determinado pino podendo ser HIGH ou LOW (1 ou 0).
Importante! Para que os programas compilem e executem corretamente necessrio indicar ao Geany
que utilizaremos a biblioteca WiringPi e executaremos a aplicao como sudo. Para isso clique no
menu Build -> Set Build Commands e nos campos Compile, Build e Execute adicione -l wiringPi e
sudo como na gura abaixo. Caso execute os binrios pela linha de comando, lembrar de utilizar
sudo ./nomePrograma.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 7/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 8/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Importante! O pino 1 se refere ao pino da biblioteca que na verdade o pino fsico 12 da barra de
pinos da Raspberry.
Salve o arquivo e aperte F9(Build) e depois F5(Execute) para executar o programa. Voc ver o LED
piscando como a seguir.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 9/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
1 #include <stdio.h>
2 #include <wiringPi.h>
3
4 int main()
5 {
6 wiringPiSetup();// inicia biblioteca wiringPi
7 pinMode(1, OUTPUT); // configura pino 1 como saida
8 pinMode(7, INPUT);// configura pino 7 como entrada
9 pullUpDnControl(7, PUD_UP); // configura resistor pull-up no pino 7
10
11 int estadoLED = 0;
12
13 printf("Exemplo 2 - Controle do LED com chave push button\n"); //imprime mensagem na tela
14
15 while(1)
16 {
17 if(digitalRead(7) == LOW)// detecta se a chave foi pressionada
18 {
19 estadoLED = !estadoLED;// inverte o estado do LED
20 digitalWrite(1, estadoLED);// controla o LED conforme estado
21 if(estadoLED == 1) printf("LED aceso\n");// imprime estado do LED
22 if(estadoLED == 0) printf("LED apagado\n");// imprime estado do LED
23 delay(20);
24 while(digitalRead(7) == LOW); // aguarda enquato chave ainda esta pressionada
25 delay(20);
26 }
27 }
28 return 0;
29 }
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 10/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
1 #include <stdio.h>
2 #include <wiringPi.h>
3
4 int main()
5 {
6 wiringPiSetup();// inicia a biblioteca WiringPi
7 pinMode(1, PWM_OUTPUT); // configura o pino 1 como sada PWM
8
9 int i; // declara varivel para o loop for
10
11 printf("Exemplo 3 - Controlando LED por PWM\n"); //imprime mensagem na tela
12
13 while(1)
14 {
15 for(i=0;i<=1024;i+=4)// faz um loop mudando valor de i de 0 a 1024 com um passo de 4
16 {
17 pwmWrite(1, i); // escreve 0-1024 a cada iterao
18 delay(3);
19 }
20 for(i=1024;i>=0;i-=4) // faz um loop mudando valor de i de 1024 a 0 com um passo de 4
21 {
22 pwmWrite(1, i); // escreve 1024-0 a cada iterao
23 delay(3);
24 }
25 }
26 return 0;
27 }
O cdigo fonte e o binrio pr-compilado dos trs exemplos podem ser encontrados no GitHub da
FILIPEFLOP.
post
Neste
rvoc
Pesquisar
m n 0 0
aprendeu os primeiros passos para programar em linguagem C usando a Raspberry Pi.
produtos
Com os conceitos aqui apresentados e utilizando a biblioteca WiringPi possvel controlar motores, ler
sensores e muito mais! Para voc que quer se aprofundar na linguagem C, veja o post Raspberry Pi e
ThingSpeak onde Pedro Bertoleti apresenta um programa desenvolvido em C que envia valores para a
nuvem sendo mostrados em um gr co na plataforma ThingSpeak. Acesse tambm a revista MagPi
ensinando muito mais sobre linguagem C.
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 11/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Gostou de programar em linguagem C? Ajude-nos a melhorar o blog comentando abaixo sobre este
tutorial. No se esquea de visitar nossa loja FILIPEFLOP!
Posts Relacionados
Giovanni Bauermeister
Projeto de PCB para Planta IoT Parte 3 Central de jogos RetroPie com Raspberry Pi
Conectar com:
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 12/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Comentrio
Nome * E-mail *
Site
Publicar comentrio
2 Comentrios
Parabns pelo tutorial! muito bom mesmo! Dvida :Con gura os resistores internos de pull-up ou pull-
down. Tem pinos espec cos para rodar em pull-up ou qualquer pino pode usar?
Outra dvida, add bibliotecas como ultrassonic, dht, entre outros , igual na ide do arduino?
Valeu, obrigado!
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 13/14
17/09/2017 Programao em Linguagem C com Raspberry Pi - FilipeFlop
Ol Pedro!
Obrigado pela leitura!
Todos os GPIOs tem resistores internos que voc pode ativar/desativar via software. Mas seria
legal dar uma olhada no datasheet do processador.
Esse outro implementou a leitura do sensor DHT11 diretamente, usando apenas a biblioteca
WiringPi
http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-the-raspberry-pi/
Pesquisar
Categorias
https://www.lipeop.com/blog/linguagem-c-com-raspberry-pi/ 14/14