8. VS Code
Last updated
Last updated
Um editor universal de código, onde pode-se programar diversas linguagens diferentes. Inteiramente configurável. Capaz de agilizar muito o processo produtivo.
Essa seção apresenta tutoriais e informações sobre o editor, com o intuito de introduzir a utilização do mesmo. Vale ressaltar que as informações aqui apresentadas são relativamente superficiais e não englobam todo o editor. Para um melhor entendimento e aprendizado sobre o mesmo, recomendo fortemente os documentos oficiais de utilização do mesmo, como também pesquisas e principalmente um bom instinto de exploração, pois grande parte das funcionalidades dele serão compreendidas apenas com a prática. link dos documentos oficiais:
Para instalar o VS Code basta acessar o site oficial do mesmo e baixar o instalador. O site é bem intuitivo e o download é bem rápido. Após o download, basta executar o instalador e seguir os passos. O VS Code é um editor de código multiplataforma, portanto, ele está disponível para Windows, Linux e MacOS.
link de instalação:
A interface do VS Code é bem completa e organizada, com diversas funções e informações. A seguir uma breve descrição de algumas partes da interface.
Explorer: Mostra o Workspace e as pastas e os arquivos abertos no workspace. Um Outline do código mostra as funções do mesmo. E a Timeline mostra um histórico do código, os salvamentos e os commits (no repositório do github).
Search: Ferramenta para localizar e substituir palavras e abrange todos os arquivos abertos.
Source Control: Ferramentas para utilizar repositórios do GitHub.
Extensions: Instalar e administrar extensões do VS Code.
Run And Debug: Pode rodar alguns tipos de código, e fazer debug.
accounts: Login com a conta do GitHub e Sincronização de configurações.
Manage: Configurações gerais.
Algumas extensões podem adicionar outros menus na barra lateral. Como por exemplo, o PlatformIO e o Copilot.
Muitas funções do vs Code estão listadas na barra superior, dentro de alguns menus suspensos. Vale ressaltar que muitas destas estão ligadas a algum atalho do teclado. A seguir uma breve descrição desses menus.
File: Opções para os arquivos e workspaces. Como, "New File", "Auto save, e várias outras
Edit: Opções básicas para editar arquivos. Todas as funções deste menu apresenta atalhos vinculados
Selection: Opções para selecionar e modificar textos.
View: Opções para modificar a visualização do editor. Como "Toggle Word Wrap" e "Toggle Minimap".
Go: Opções para navegar por arquivos e funções, como "Go to Line" e "Go to Symbol".
Run: Opções para rodar e testar códigos. Como "Start Debugging" e "Run Without Debugging".
Terminal: Opções para usar o terminal do VS Code.
Help: Opções para oferecer ajudas e informações sobre VS Code. Como "Welcome" e "Documentation".
Diversas funções e informações estão localizadas na barra inferior. A seguir uma breve descrição dessas funções.
Language Mode: Mostra a linguagem do arquivo aberto e permite a mudança da mesma.
Line e Column: Mostra a linha e a coluna do cursor.
Encoding: Mostra o tipo de encoding do arquivo.
End of Line: Mostra o tipo de quebra de linha do arquivo.
Selection: Mostra o tamanho da seleção e permite a mudança da seleção.
Indentation: Mostra o tipo de indentação do arquivo.
Problems: Mostra os problemas do arquivo, como erros e avisos. Algumas dessas funções podem ser clicadas para mostrar mais informações ou opções. Diversas extensões podem adicionar mais informações e funções a essa barra. Como por exemplo o Copilot ou o PlatformIO (extensões que serão apresentadas ao decorrer deste documento).
Pode ser usada para pesquisar entre arquivos, palavras e símbolos, como também para rodar comandos. Pode ser utilizado digitando ou pelo menu suspenso
O VS CODE pode ser configurado de duas formas, por meio do menu, que é mais acessível ou por meio dos arquivos JSON, o que possibilita configurações mais diretas e avançadas.
O Vs code divide as configurações em 3:
User: Configuração geral, Default para as demais;
Workspace: Configuração do Workspace, útil caso sejam necessárias configurações específicas para o trabalho atual;
Folder/project: Configuração referente ao projeto, necessária caso o projeto tenha necessidades específicas.
Auto save: Salva os arquivos automaticamente, após um tempo determinado ou após perder o foco da janela ou na mudança de aba.
Folding Strategy: útil para organização do código a partir da indentação (Também pode ser modificado na barra inferior)
São aplicativos de terceiros que adicionam novas utilidades ao Vs code. A seguir serão listadas algumas.
Uma extensão do VS CODE, essencial para programação de microcontroladores. Essa será a extensão base que utilizaremos para programar ESP32, STM e Arduino.
Download
Vá até a seção de extensões e pesquise por: PlatformIO IDE
talvez seja necessário reiniciar o VScode (um botão irá aparecer escrito "reload required")
Importante salientar que após a primeira instalação no PlatformIO no dispositivo ele irá buscar pela pasta com os arquivos do PlatformIO. Caso não exista, ele irá fazer o download, o que pode levar um tempo.
O PlatformIO apresenta uma aba de menu com suas funções (que por default vai ser mostrada sempre que se abrir o vs code) e também adiciona um menu lateral com todas as funções do menu. Dentre essas funções há diversas extremamente úteis e algumas bem específicas. Nos tópicos a seguir será listada algumas dessas.
Para criar um projeto, basta ir ao menu e selecionar New project.
Escolha um nome para o projeto. Dê preferência a nomes simples e intuitivos, sem espaços nem caracteres especiais(como acentos).
Selecione uma placa. Tenha cuidado com a seleção de placas, se feita de forma incorreta, alguns recursos de sua placa podem não estar disponíveis. Para utilizar todos os recursos do módulo ESP32, selecione: "Espressif ESP32 Dev Module". Para utilizar todos os recursos do módulo Blackpill da STM, selecione: "WeAct Studio BlackPill V2.0 (STM32F411CE)"
Selecione um Framework. Um framework de programação é uma estrutura ou conjunto de bibliotecas de código que os desenvolvedores podem usar para construir aplicações de maneira mais eficiente. É recomendável a utilização do framework do Arduino para novos programadores, por causa de sua simplicidade, sua ampla documentação, comunidade ativa e sua grande quantidade de bibliotecas.
Selecione a localização da pasta do projeto. Recomenda-se não utilizar a localização padrão e sim uma pasta separada com os projetos. Para isso, basta desmarcar a opção "Use default location" e selecionar a pasta na qual será criada a pasta do projeto.
Com o projeto criado, dentro da pasta dele terá as seguintes pastas e arquivos:
Sinta-se livre para adicionar pastas e arquivos adicionais ao projeto. Lembre-se de não mover os arquivos padrão do projeto, e colocar os arquivos referentes ao código em suas devidas pastas.
Pastas com configurações do projeto e arquivos necessários para o funcionamento do aplicativo. Normalmente não há necessidade de modificar o conteúdo desta pasta, visto que há menus para configurar o projeto e modificar esses arquivos de forma segura. Caso seja necessário modificar os arquivos, faça-o com cuidado.
Pasta reservada para o arquivo header(.h) do código principal. A pasta apresenta um arquivo README com informações muito úteis, portanto, recomenda-se que ele seja lido.
Pasta reservada para as bibliotecas utilizadas no código principal. Para adicionar novas bibliotecas, basta copiar e colar suas pastas dentro desta. Vale ressaltar que o PlatformIO apresenta configurações para incluir outras maneiras de incluir bibliotecas em um projeto, seja utilizando de bibliotecas diretamente do GitHub ou da pasta de bibliotecas do Arduino IDE (caso esteja presente no computador). É fortemente recomendado não utilizar esses recursos, pois adicionar as bibliotecas à pasta lib é um método mais organizado e editável, pois há uma melhor noção de onde essas fontes estão localizadas, permitindo a edição e melhorando a compatibilidade do projeto com outros computadores. A pasta apresenta um arquivo README com informações muito úteis, portanto, recomenda-se que ele seja lido.
Pasta reservada para o código fonte, arquivo main.cpp (C++).
Pasta reservada para o Simulador do PlatformIO e outros testes de projeto. Ela geralmente não é utilizada, pois os testes práticos são simples e fáceis de serem executados. Esta pasta pode ser apagada para melhor organização. A pasta apresenta um arquivo README com informações muito úteis, portanto, recomenda-se que ele seja lido.
Arquivo com o nome das pastas e arquivos que não serão incluídos no repositório do github (caso exista)
Arquivo com as configurações do projeto do PlatformIO. Ele ja apresenta algumas configurações padrão, mas caso necessário pode-se adicionar algumas manualmente, como a porta de comunicação serial ou a velocidade do monitor serial.
O arquivo default .ini para o ESP32 já funciona corretamente, mas algumas configurações podem ser feitas. Algumas das configurações recomendadas sao:
monitor_speed : modifica a velocidade da comunicação do monitor serial, também conhecida como Baud Rate.```ini
upload_port : Seleciona a porta serial utilizada. Opção nao obrigatória, pois o PlatformIO a detecta automaticamente.
build_flags = -DCORE_DEBUG_LEVEL= (0 a 5) : mostra as mensagens de debug geradas pelo ESP32.
board_build.partitions : Configuração avançada para modificar as partições de memória do ESP32 por meio de uma planilha .csv
platformio.ini da Afrodite do Sumo 3K (15/03/24):
STM32
O arquivo default .ini para o STM32 geralmente precisa de algumas configurações, a depender da forma como ele será programado (Com ST-Link ou por USB) Algumas configurações para usar o Módulo BlackPill com o USB embutido:
Ferramentas do PlatformIO
Ao clicar no atalho lateral do PlatformIO, e expandir a opção "QUICK ACCESS" o seguinte menu será apresentado:
O menu lateral do PlatformIO tem várias funções que também podem ser acessadas por meio do menu do PlatformIO. A seguir uma breve descrição de algumas dessas funções.
Ao clicar no atalho lateral do PlatformIO, e expandir a opção "PROJECT TASKS" o seguinte menu será apresentado:
Este menu apresenta diversas funções úteis para o desenvolvimento de projetos. Nele há diversas funções divididas em pastas. A imagem a seguir apresenta algumas dessas funções, como Build, Upload, Devices, Clean há algumas funções exclusivas para o ESP32, como Program Size, Build Filesystem Image, Upload Filesystem Image e Erase Flash.
A extensão adiciona alguns atalhos na barra inferior como Build, Upload, Switch Environment (utilizado para trocar o projeto alvo) e Home.
Open: Abre o menu do PlatformIO
Libraries: Abre o menu de bibliotecas, onde é possível pesquisar por bibliotecas, visualizar as que estão instaladas. É recomendado não utilizar essa feature, pois a instalação de bibliotecas diretamente na pasta lib é mais organizada e editável.
Boards: Abre o menu de placas, com todas as placas suportadas pelo PlatformIO.
Platforms: Abre o menu de plataformas, onde pode-se visualizar as plataformas e frameworks instalados e os suportados pelo PlatformIO.
Devices: Abre o menu de dispositivos, onde é possível ver os dispositivos conectados e suas portas.
Um assistente de programação AI do github, para mais detalhes, veja o tópico: Copilot.
Por mais que não seja essencial, um ambiente agradável aos olhos melhora o conforto e consequentemente a produtividade. Os temas são conjuntos de cores e efeitos que personalizam o vs code. Esses podem ser instalados na mesma seção das extensões. Vale ressaltar que o VS Code já vem com alguns temas pré-instalados.
Basta apenas buscar pelo tema com o estilo desejado, fazer o download e em alguns casos reiniciar o vs code para que todas as alterações tenham efeito. Também é possível fazer temas inteiramente personalizados, mas como se trata de algo mais complexo, não será abordado nesse documento.
PlatformIO IDE (Para programação de microcontroladores)
Serial Monitor (Para monitorar a comunicação serial)
vscode-icons (Para melhorar a visualização dos arquivos)
Github copilot (Assistente de programação AI)
git graph (Para visualizar o histórico de commits)
GitBook (Para visualizar o GitBook da equipe)
Jupyter (Para desenvolvimento de softwares em diversas linguagens)