No post anterior referente ao Raspberry Pi Pico, vimos como programa-lo em Python. Para tanto, carregamos um interpretador minimizado em sua flash e, a partir dele, reproduzíamos códigos salvos em sua memória ainda em Python. Por ser uma linguagem interpretada, no entanto, esta tem limitações quanto a performance e segurança. Neste contexto, surge a demanda por meios de programar a placa em linguagens compiladas, como C++.
Primeiramente, faça os downloads dos links:
Durante a instalação do GCC ARM, habilite, no mínimo, “Add Path to environment variable”.
Faça o mesmo durante a instalação do CMake.
Ao instalar os pacotes a partir do VS Build Tools, é necessário que estejam selecionados:
Durante a instalação do Python, garanta que o launcher esteja habilitado para todos os usuários e que o caminho PATH seja adicionado às variáveis de sistema.
Na instalação dos demais itens, permita, sempre que solicitado, a escrita do caminho na variável PATH.
A partir da pasta de sua preferência aberta no prompt de comandos, digite:
> git clone -b master https://github.com/raspberrypi/pico-sdk.git > cd pico-sdk \pico-sdk> git submodule update --init \pico-sdk> cd .. > git clone -b master https://github.com/raspberrypi/pico-examples.git
Então, abra um “Developer Command prompt for VS” como administrador e, nele, digite: setx PICO_SDK_PATH "CAMINHO_PARA_SUA_PAST_PICO_SDK"
onde “CAMINHO_PARA_SUA_PAST_PICO_SDK” será algo do tipo: C:\Users\User\pico\pico-sdk. Por fim, acesse as variáveis de sistema e adicione à variável path o caminho para a pasta Hostx64\x64 de seu Visual Studio. Ele será algo do tipo: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14…\bin\Hostx64\x64.
Ao fim, feche o terminal e o abra novamente para digitar:
> cd pico-examples \pico-examples> mkdir build \pico-examples> cd build \pico-examples\build> cmake -G "NMake Makefiles" .. \pico-examples\build> nmake
Quando o processo terminar, se não houverem erros, todos os exemplos estarão compilados na pasta build. Para carrega-los no Pico, conecte-o ao PC enquanto pressiona o botão BOOTSEL e, quando este for reconhecido como dispositivo de armazenamento, copie o arquivo .uf2 referente ao código que quiser para o microcontrolador. Ele irá reiniciar e executar o programa.
Para compilar pelo VS code, siga o tutorial visto a partir da página 42 do manual.
Aqui, utilizaremos uma refatoração do código que controla um LCD com módulo I2C encontrado na pasta pico-examples e uma pasta modelo de projeto individual. Para começar, faça o download deste arquivo. Descompacte-o fora do diretório de exemplos e altere o nome da pasta conforme preferir.
Os arquivos nesta pasta estão prontos para a compilação, que deve ser feita da mesma forma que os arquivos da pasta de exemplos. Fique à vontade para explora-la e modifica-la como quiser. Seguindo com nosso projeto, apague os três arquivos fonte: extrafunc.c, extrafunc.h (na imagem, sem o .h) e main.c. Agora, copie o código fonte do exemplo, encontrado em \pico-examples\i2c\lcd_1602_i2c, como mostra a figura abaixo, e cole na pasta de nosso projeto.
Perceba, ao abrir o código, que este não segue as boas práticas de programação, principalmente porque temos toda a definição e implementação de funções genéricas no arquivo principal. Corrigiremos isto implementando a modularização. Para tanto, abra o Developer Command Prompt for VS e, por meio dele, abra a pasta no VS code (utilizando >code CAMINHO_NO_SISTEMA_PARA_A_PASTA). Então, crie um arquivo main.c e um lcd_120_i2c.h. Neste ponto, sua janela do editor deverá estar semelhante à vista na imagem abaixo.
Agora, separaremos o código entre as pastas de acordo com a função de cada trecho. Neste programa, o arquivo main.c deve conter somente a função main, a inclusão do módulo e das bibliotecas utilizadas. Deverá ficar assim:
Já o lcd_1602_i2c.h deverá conter as declarações das funções e as definições de pré-processamento. Sua versão adequada pode ser vista abaixo.
Por fim, o arquivo header deverá ser incluído no source do módulo. Este deverá ficar como se vê na imagem que segue:
Feitas as edições nos arquivos fonte, devemos, agora, adaptar o makelist a eles. Antes das alterações, ela estará assim:
Primeiro, deve-se substituir “project1” pelo nome dado a sua pasta. Em add_executable, “extrafunc.c” deve ser substituído por “lcd_1602_i2c” (em projetos com mais códigos fonte, os demais devem ser listados nesta função, também). Já target_link_libraries deve receber todas as bibliotecas embutidas que forem utilizadas. A maioria dos programas utilizará a pic_stdlib, incluindo este. Além dela, devemos listar, também, a hardware_i2c, incluída no código fonte. Ao salvar o arquivo com estas edições, ele deverá estar assim:
O programa está, agora, pronto para ser compilado. Caso tenha configurado o VS Code para compilar os códigos para a placa Pico, basta clicar em “Build”, na barra azul inferior da tela. Caso não, compile pela linha de comando, como mostrado anteriormente. Após a compilação, o arquivo .uf2 estará na pasta build, como mostra a imagem abaixo.
Para carrega-lo no Pico, basta copiar este arquivo e colar no armazenamento da placa.
Neste post, vimos como é trabalhoso o processo de preparação e de programação do Raspberry Pi Pico em C e C++. Surge, perante tal dificuldade, o questionamento: vale a pena programar este chip em C++? O vídeo Raspberry Pi Pico C++ vs Python Performance – YouTube mostra a diferença de performance entre programas semelhantes escritos nas diferentes linguagens. Portanto, depende de sua demanda em relação a velocidade de processamento e de armazenamento consumido, visto que, além das diferenças mostradas no vídeo, para programar o Pico em Python é necessária a instalação de um interpretador e dos códigos em sua Flash, enquanto somente os códigos, já em linguagem de máquina, são necessários para a programação em C++.
Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!