Laboratório 01
A documentação desta atividade de laboratório é complementar a documentação principal da disciplina.
Utilize como base a descrição apresentada no Moodle da disciplina.
| Tarefa | Template | Início | Fim | Conteúdo |
|---|---|---|---|---|
| LAB01 | TPL01 | 23-Mar-2026 | 30-Mar-2026 | Ambiente de desenvolvimento VS Code; Uso do git e GitHub; |
Conteúdo
Git e GitHub; Ambiente de desenvolvimento;
- Uso do Git;
- Uso do GitHub;
- Crie uma organização no GitHub;
- Solicitar inclusão em um time;
- Ambiente de desenvolvimento;
- Comandos básicos, git e GitHub;
Solicitar inclusão em um time
Esta página explica como pedir para ser adicionado(a) ao seu grupo (time) na
organização ELT73A-S22-2026-2 do GitHub.
Toda solicitação é feita abrindo uma issue em um repositório dedicado, por meio de um formulário. Depois de enviada, um administrador adiciona você ao time e fecha a issue.
- Ter uma conta no GitHub.
- Saber o slug do seu grupo (de
grupo-aatégrupo-j). - Conhecer o seu username do GitHub (o nome que aparece no seu perfil, sem o
@).
Passo a passo
1. Abra o formulário de solicitação
Acesse o repositório de solicitações e clique em New issue (Nova issue), ou use o link direto:
2. Selecione o formulário
Na tela de escolha, selecione "Solicitar inclusão em time".
3. Preencha os campos
| Campo | O que informar |
|---|---|
| Grupo (slug do time) | Escolha o slug do seu grupo, de grupo-a a grupo-p. |
| Seu username do GitHub | Seu nome de usuário, sem o @. Ex.: octocat. |
| Confirmação | Marque a caixa confirmando que o username está correto. |
Um username digitado errado impede a inclusão e atrasa o processo. Confirme no seu perfil antes de enviar.
Estrutura organizacional dos repositórios
ELT73A-S22-2026-2
├── Times
│ ├── Grupo-A
│ ├── ...
│ ├── Grupo-P # (Professor)
│ └── Grupo-N # (Notas)
└── Repositórios
├── lab01-template
├── lab01-grupo-a
├── ...
├── lab01-grupo-p # (Professor)
└── lab01-grupo-n # (Notas)
Verifique o seu ambiente de desenvolvimento
- Git SCM
- GitHub CLI
- VS Code
- Wokwi
- PlatformIO
- Drivers
- Docker
O Git é a ferramenta de gerenciamento de código-fonte mais utilizada por desenvolvedores profissionais.
- O Git é um sistema de controle de versão distribuído gratuito e de código aberto, projetado para lidar com tudo, desde projetos pequenos até muito grandes, com rapidez e eficiência.
winget install --id Git.Git -e --source winget
Configurações do git:
git config --list --show-origin
O GitHub CLI traz o GitHub para o seu terminal.
- O GitHub CLI é uma ferramenta de linha de comando que permite interagir com o GitHub diretamente pelo terminal. Está disponível para Windows, macOS e Linux.
winget install --id GitHub.cli -e --source winget
Status de login do GitHub CLI:
gh auth status
Visual Studio Code: IDE e Editor de Código para Desenvolvimento de Software.
- O VS Code é um editor de código-fonte gratuito criado pela Microsoft para Windows, Linux e macOS. Inclui suporte para depuração, controle Git integrado, realce de sintaxe, conclusão inteligente de código, snippets e refatoração de código.
winget install --id Microsoft.VisualStudioCode -e --source winget
Extensões instaladas do Visual Studio Code para o perfil ESP32IO:
code --list-extensions --profile "ESP32IO"
Inicie o projeto no PlatformIO:
pio project init -b esp32dev -O "framework=arduino" -O "monitor_speed=115200" --sample-code
Wokwi para VSCode: Simulador de sistemas embarcados e IoT com suporte para ESP32, Arduino e Raspberry Pi Pico.
- Wokwi para VSCode Seu código nunca sai do seu computador - o Wokwi executa a simulação dentro do VS Code, utilizando os binários de firmware do seu projeto.
code --install-extension wokwi.wokwi-vscode --profile "ESP32IO"
PlatformIO IDE para VSCode: Sua porta de entrada para a excelência no desenvolvimento de software embarcado.
- PlatformIO IDE para VSCode Desbloqueie o verdadeiro potencial do desenvolvimento de software embarcado com o ecossistema colaborativo do PlatformIO, adotando princípios declarativos, metodologias orientadas a testes e toolchains modernas para um sucesso incomparável.code --install-extension platformio.platformio-ide --profile "ESP32IO"
Instale a plataforma espressif32:
pio platform install espressif32Você precisa editar a variável de ambiente do sistema chamada Path e adicionar o caminho %USERPROFILE%\.platformio\penv\Scripts\ no início da lista.
Inicie o projeto no PlatformIO:
pio project init -b esp32dev -O "framework=arduino" -O "monitor_speed=115200" --sample-code
- Conecte o ESP32 ao computador via USB.
- Abra o Gerenciador de Dispositivos (clique com o botão direito no Menu Iniciar → Gerenciador de Dispositivos).
- Expanda a seção Portas (COM e LPT).
- Procure por um dispositivo similar a:
- Silicon Labs CP210x USB to UART Bridge (COMx)
- Driver Windows CH340/CH341 USB para porta serial
- FTDI ou “Dispositivo Serial USB (COMx)”
Anote o número da porta (ex: COM4, COM6, COM12). Se não aparecer nenhuma porta nova, o driver não está instalado. Baixe o driver correspondente (CP210x ou CH340) no site do fabricante da placa.
pip install esptool
esptool chip-id
Docker Desktop & WSL 2: O Docker Desktop no Windows 11 utiliza a arquitetura do WSL 2 para executar containers Linux nativamente com alta performance.
Habilitação e Atualização do WSL 2:
wsl --installwsl --update && wsl --set-default-version 2Instalação do Docker Desktop via Winget:
winget install --id Docker.DockerDesktop -eConfirme no terminal integrado do VS Code:
wsl --version && docker --version && docker compose versionTeste rápido com a imagem oficial do Nginx:
docker run --rm -d -p 8080:80 --name teste-nginx nginxAcesse no navegador:http://localhost:8080
Pare o container:
docker stop teste-nginx
Configure o nome de usuário para todos os repositórios locais ligados às suas transações de commit:
git config --global user.name "Your Name"
Configure o email de usuário para todos os repositórios locais ligados às suas transações de commit:
git config --global user.email "you@example.com"
É recomendado verificar se a instalação do seu Git não está realizando nenhuma transformação entre LFs e CRLFs.
git config --global core.autocrlf false
Configure o git para usar o Visual Studio Code como editor padrão para tarefas como escrever mensagens de commit ou rebases interativos
git config --global core.editor "code --wait"
Habilite a coloração automática da saída da linha de comando do Git:
git config --global color.ui auto
Configura o Git para usar main como o nome do branch padrão sempre que você inicializar um novo repositório localmente:
git config --global init.defaultBranch main
Liste as configurações aplicadas:
git config --list --show-origin
Versão do git e configurações:
git --version && git config --list --show-origin
Versão do GitHub CLI e status de login:
gh --version && gh auth status
Versão do Visual Studio Code e extensões instaladas:
code -v && code --list-extensions --profile "ESP32IO"
Clone o repositório inicial do LAB01
Escolha o seu grupo e entre com o comando abaixo para criar o repositório no GitHub:
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- P
- Grupo: Grupo-A (slug:
grupo-a) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-a
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-a/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-a
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-a.git && cd lab01-grupo-a
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-B (slug:
grupo-b) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-b
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-b/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-b
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-b.git && cd lab01-grupo-b
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-C (slug:
grupo-c) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-c
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-c/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-c
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-c.git && cd lab01-grupo-c
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-D (slug:
grupo-d) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-d
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-d/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-d
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-d.git && cd lab01-grupo-d
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-E (slug:
grupo-e) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-e
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-e/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-e
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-e.git && cd lab01-grupo-e
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-F (slug:
grupo-f) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-f
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-f/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-f
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-f.git && cd lab01-grupo-f
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-G (slug:
grupo-g) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-g
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-g/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-g
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-g.git && cd lab01-grupo-g
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-H (slug:
grupo-h) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-h
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-h/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-h
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-h.git && cd lab01-grupo-h
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-I (slug:
grupo-i) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-i
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-i/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-i
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-i.git && cd lab01-grupo-i
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-J (slug:
grupo-j) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-j
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-j/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-j
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-j.git && cd lab01-grupo-j
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-K (slug:
grupo-k) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-k
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-k/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-k
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-k.git && cd lab01-grupo-k
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-L (slug:
grupo-l) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-l
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-l/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-l
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-l.git && cd lab01-grupo-l
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-M (slug:
grupo-m) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-m
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-m/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-m
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-m.git && cd lab01-grupo-m
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
- Grupo: Grupo-P (slug:
grupo-p) - Repositório: https://github.com/ELT73A-S22-2026-2/lab01-grupo-p
- Commits: https://github.com/ELT73A-S22-2026-2/lab01-grupo-p/commits/main/
- Time: https://github.com/orgs/ELT73A-S22-2026-2/teams/grupo-p
1. Crie e entre na pasta-mãe da disciplina:
mkdir "%USERPROFILE%ELT73A" & cd /d "%USERPROFILE%ELT73A"
2. Clone e entre no repositório do laboratório:
git clone https://github.com/ELT73A-S22-2026-2/lab01-grupo-p.git && cd lab01-grupo-p
3. Abra o conteúdo do repositório no perfil ESP32IO do VS Code :
code . --profile "ESP32IO"
Como fazer commit da atualizações
Verifique o status do repositório:
git status
Adicione os arquivos modificados:
git add .
Realize o commit das alterações:
git commit -m "Descrição breve das alterações realizadas!"
Envie para o repositório remoto (GitHub):
git push
Vizualize o log de alterações:
git log
Vizualize no GitHub:
gh repo view --web
Envie o link do repositório do seu grupo no Moodle:
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- P
Repositório do Grupo A para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo B para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo C para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo D para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo E para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo F para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo G para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo H para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo I para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo J para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo K para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo L para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo M para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Repositório do Grupo P para Laboratório 01:
- Copie o link do repositório acima.
- Abra a página de envio da atividade no Moodle (botão abaixo).
- Clique em Adicionar envio.
- Cole o link no campo Texto online.
- Clique em Salvar mudanças.
- Confira se o status mudou para Enviado para avaliação.
Cada cartão Ponto de commit é uma tarefa: faça-a, copie o comando do cartão e rode. A mensagem começa com o código (T1:, T2:…) — é como a correção identifica sua entrega. Um commit por tarefa; pode refazer (vale o mais recente); e não esqueça o git push. Detalhes em Como funciona a avaliação.
Uso do git e GitHub
Conventional Commits em Projetos de Firmware e Sistemas Embarcados
Em projetos de firmware e sistemas embarcados (PlatformIO + VS Code + Wokwi para ESP32), a adoção da Convenção Conventional Commits traz clareza, facilita a geração automática de changelogs e melhora a colaboração em atividades de laboratório.
Este documento apresenta a classificação dos tipos de commits e exemplos práticos orientados para o contexto de sala de aula.
Estrutura Básica
<tipo>[escopo opcional]: <descrição curta>
[corpo opcional]
[rodapé(s) opcional(is)]
Regras importantes
- A descrição deve ser escrita no imperativo e em minúsculas (exceto nomes próprios).
- Máximo recomendado de 72 caracteres na primeira linha.
- O escopo é opcional e geralmente indica o módulo ou componente afetado (
sensor,wifi,platformio,display, etc.). - Use o corpo para explicar o porquê da mudança, não apenas o o quê.
Classificação dos Tipos
| Tipo | Quando usar | Exemplo de contexto em laboratório |
|---|---|---|
| feat | Nova funcionalidade | Implementar leitura de sensor DHT22 |
| fix | Correção de bug | Corrigir overflow no buffer UART |
| docs | Alterações apenas em documentação | Atualizar README com diagrama de conexão |
| style | Formatação, espaços, ponto e vírgula (sem mudança de lógica) | Ajustar indentação do código PlatformIO |
| refactor | Mudança de código que não corrige bug nem adiciona feature | Separar lógica de Wi-Fi em arquivo próprio |
| perf | Melhoria de performance | Otimizar leitura ADC com media móvel |
| test | Adição ou correção de testes | Criar teste unitário para função de debounce |
| build | Mudanças no sistema de build ou dependências externas | Atualizar versão da biblioteca FastLED |
| ci | Configuração de integração contínua | Adicionar workflow de build no GitHub Actions |
| chore | Tarefas de manutenção que não afetam o código-fonte | Atualizar .gitignore ou limpar arquivos temporários |
| revert | Reverter um commit anterior | Desfazer commit que quebrou o simulador Wokwi |
Exemplos Práticos para Atividades de Laboratório
Utilize as abas abaixo para consultar cada tipo de commit, sua finalidade, exemplos de uso em laboratório e os comandos correspondentes.
- feat
- fix
- docs
- style
- refactor
- perf
- test
- build
- ci
- chore
- revert
feat — Nova funcionalidade
Quando usar: Adicionar uma nova funcionalidade ao firmware.
Contexto de laboratório: Implementar leitura de sensor, controle de atuador, conexão Wi-Fi, etc.
Exemplos
git commit -m "feat(sensor): adiciona leitura do DHT22 com média móvel"
git commit -m "feat(wifi): configura conexão automática ao Wi-Fi da sala
Usa credenciais definidas em platformio.ini e tenta
reconexão a cada 10 segundos em caso de falha."
git commit -m "feat(display): implementa tela de status no OLED"
fix — Correção de bug
Quando usar: Corrigir um comportamento incorreto ou erro no código.
Contexto de laboratório: Overflow de buffer, pinagem errada no Wokwi, conversão incorreta de valores, etc.
Exemplos
git commit -m "fix(uart): corrige overflow no buffer de recepção"
git commit -m "fix(wokwi): resolve erro de pinagem do LED no diagrama
Alinha o pino GPIO2 do ESP32 com o LED no arquivo
diagram.json do simulador."
git commit -m "fix(sensor): corrige conversão de umidade relativa"
docs — Documentação
Quando usar: Alterações que afetam apenas a documentação (README, comentários, diagramas, etc.).
Contexto de laboratório: Atualizar instruções de montagem, documentar pinos ou flags de compilação.
Exemplos
git commit -m "docs: atualiza README com instruções de montagem no breadboard"
git commit -m "docs(platformio): documenta flags de compilação usadas no laboratório"
git commit -m "docs: adiciona diagrama de ligação do sensor DHT22"
style — Formatação / estilo
Quando usar: Mudanças que não afetam a lógica (indentação, espaços, formatação).
Contexto de laboratório: Aplicar clang-format, padronizar estilo de código da turma.
Exemplos
git commit -m "style: aplica formatação clang-format em todos os arquivos .cpp/.h"
git commit -m "style(main): ajusta indentação e remove espaços em branco extras"
refactor — Refatoração
Quando usar: Reorganizar o código sem alterar o comportamento externo (nem bugfix nem feature).
Contexto de laboratório: Separar lógica em arquivos, extrair funções, melhorar legibilidade.
Exemplos
git commit -m "refactor(display): extrai funções de desenho para oled.cpp"
git commit -m "refactor: move constantes de pinos para config.h"
git commit -m "refactor(wifi): separa lógica de conexão em módulo próprio"
perf — Performance
Quando usar: Melhorias de desempenho (tempo de execução, consumo de memória, etc.).
Contexto de laboratório: Otimizar leituras de ADC, reduzir tempo de amostragem, economizar RAM.
Exemplos
git commit -m "perf(adc): reduz tempo de amostragem do ADC em 30%"
git commit -m "perf(sensor): implementa média móvel para reduzir ruído sem aumentar latência"
test — Testes
Quando usar: Adicionar ou corrigir testes (unitários, de integração, etc.).
Contexto de laboratório: Criar testes de validação de sensores, debounce, faixas de valores.
Exemplos
git commit -m "test(sensor): adiciona teste de validação de faixa de temperatura"
git commit -m "test: cria teste unitário para função de debounce"
build — Sistema de build / dependências
Quando usar: Mudanças no sistema de build, platformio.ini, dependências ou bibliotecas.
Contexto de laboratório: Atualizar plataforma, adicionar bibliotecas, alterar flags de compilação.
Exemplos
git commit -m "build: atualiza plataforma espressif32 para versão 6.5.0"
git commit -m "build(deps): adiciona biblioteca ArduinoJson 7.0.0"
git commit -m "build: configura monitor_speed = 115200 no platformio.ini"
ci — Integração Contínua
Quando usar: Configurações de CI/CD (GitHub Actions, GitLab CI, etc.).
Contexto de laboratório: Automatizar build e testes do projeto ESP32.
Exemplos
git commit -m "ci: adiciona workflow de build no GitHub Actions"
git commit -m "ci: configura job de verificação de formatação com clang-format"
chore — Manutenção
Quando usar: Tarefas de manutenção que não afetam o código-fonte principal.
Contexto de laboratório: Atualizar .gitignore, limpar arquivos temporários do Wokwi/PlatformIO.
Exemplos
git commit -m "chore: atualiza .gitignore para ignorar arquivos do PlatformIO"
git commit -m "chore(wokwi): limpa arquivos temporários gerados pela simulação"
git commit -m "chore: remove arquivos .bak e temporários do projeto"
revert — Reversão
Quando usar: Desfazer um commit anterior.
Contexto de laboratório: Reverter alteração que quebrou a simulação no Wokwi ou o build.
Exemplos
git commit -m "revert: reverte feat(wifi): configura conexão automática
Este commit causava travamento no Wokwi quando o
Access Point da sala estava indisponível.
Refs: abc1234"
git commit -m "revert: desfaz alteração que quebrou o diagrama do Wokwi"
O GitHub é uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando o Git.
Git
| Git | Git |
|---|---|
| O Git é um programa de código aberto para acompanhamento de alterações em arquivos de texto. Ele foi escrito pelo autor do sistema operacional Linux e é a principal tecnologia na qual o GitHub, a interface social e do usuário, se baseia. | Git is an open source program for tracking changes in text files. It was written by the author of the Linux operating system, and is the core technology that GitHub, the social and user interface, is built on top of. |
repository
| Repositório | Repository |
|---|---|
| Um repositório é o elemento mais básico do GitHub. É mais fácil imaginá-lo como uma pasta de projetos. Um repositório contém todos os arquivos de projeto (incluindo a documentação) e armazena o histórico de revisão de cada arquivo. Os repositórios podem ter vários colaboradores e podem ser públicos ou privados. | A repository is the most basic element of GitHub. They're easiest to imagine as a project's folder. A repository contains all of the project files (including documentation), and stores each file's revision history. Repositories can have multiple collaborators and can be either public or private. |
commit
git-commit - Record changes to the repository
| confirmar | commit |
|---|---|
| Commit, ou "revisão", é uma alteração individual em um arquivo (ou conjunto de arquivos). Quando você faz um commit para salvar seu trabalho, o Git cria uma ID exclusiva (também conhecida como o "SHA" ou "hash") que permite que você mantenha o registro das alterações específicas confirmadas com quem as fez e quando. Os commits normalmente contêm uma mensagem do commit, que é uma breve descrição de quais alterações foram feitas. | A commit, or "revision", is an individual change to a file (or set of files). When you make a commit to save your work, Git creates a unique ID (a.k.a. the "SHA" or "hash") that allows you to keep record of the specific changes committed along with who made them and when. Commits usually contain a commit message which is a brief description of what changes were made. |
git help commit
pull
| pull | pull |
|---|---|
| Pull refere-se a quando você busca alterações e as mescla. Por exemplo, se alguém editou o arquivo remoto no qual vocês dois estão trabalhando, o ideal é fazer pull dessas alterações na cópia local para que ele fique atualizado. Confira também fetch. | Pull refers to when you are fetching in changes and merging them. For instance, if someone has edited the remote file you're both working on, you'll want to pull in those changes to your local copy so that it's up to date. See also fetch. |
git help pull
fetch
| fetch | fetch |
|---|---|
Ao usar git fetch, você está adicionando alterações do repositório remoto ao branch de trabalho local sem fazer commit delas. Ao contrário de git pull, a busca permite que você revise as alterações antes de fazer commit delas no branch local. | When you use git fetch, you're adding changes from the remote repository to your local working branch without committing them. Unlike git pull, fetching allows you to review changes before committing them to your local branch. |
git help fetch
clone
git-clone - Clone a repository into a new directory
| clone | clone |
|---|---|
| Um clone é uma cópia de um repositório que fica em seu computador em vez de ficar em algum outro lugar em um servidor de site. Clonar significa o ato de fazer essa cópia. Quando você faz um clone, é possível editar os arquivos no seu editor preferido e usar o Git para acompanhar as alterações sem precisar ficar online. O repositório clonado ainda está conectado à versão remota, ou seja, você poderá enviar as alterações locais por push ao repositório remoto para mantê-las sincronizadas quando estiver online. | A clone is a copy of a repository that lives on your computer instead of on a website's server somewhere, or the act of making that copy. When you make a clone, you can edit the files in your preferred editor and use Git to keep track of your changes without having to be online. The repository you cloned is still connected to the remote version so that you can push your local changes to the remote to keep them synced when you're online. |
git help clone
push
git-push - Update remote refs along with associated objects
| efetuar push | push |
|---|---|
| Enviar por push significa enviar as alterações confirmadas para um repositório remoto no GitHub.com. Por exemplo, se você alterar algo localmente, poderá enviar por push essas alterações para que outras pessoas possam acessá-las. | To push means to send your committed changes to a remote repository on GitHub.com. For instance, if you change something locally, you can push those changes so that others may access them. |
git help push
branch
git-branch - List, create, or delete branches
| branch | branch |
|---|---|
| Um branch é uma versão paralela de um repositório. Está no repositório, mas não afeta a ramificação principal ou primária e permite que você trabalhe à vontade, sem prejudicar a versão "online". Depois de fazer as alterações desejadas, você poderá fazer uma mesclagem do branch novamente com a ramificação principal para publicar as alterações. | A branch is a parallel version of a repository. It is contained within the repository, but does not affect the primary or main branch allowing you to work freely without disrupting the "live" version. When you've made the changes you want to make, you can merge your branch back into the main branch to publish your changes. |
git help branch
checkout
git-checkout - Switch branches or restore working tree files
| fazer checkout | checkout |
|---|---|
Use git checkout na linha de comando para criar um branch, alterar o branch de trabalho atual para outro branch ou até alternar para uma versão diferente de um arquivo de outro branch com git checkout [branchname] [path to file]. A ação de "check-out" atualiza toda ou parte da árvore de trabalho com um objeto de árvore ou um blob do banco de dados de objetos e atualiza o índice e o HEAD se toda a árvore de trabalho está apontando para um novo branch. | You can use git checkout on the command line to create a new branch, change your current working branch to a different branch, or even to switch to a different version of a file from a different branch with git checkout [branchname] [path to file]. The "checkout" action updates all or part of the working tree with a tree object or blob from the object database, and updates the index and HEAD if the whole working tree is pointing to a new branch. |
git help checkout
fork
| fork | fork |
|---|---|
| Uma bifurcação é uma cópia do repositório de outro usuário que está em sua conta. Os forks permitem que você faça alterações livremente em um projeto sem afetar o repositório upstream original. Você também pode abrir uma solicitação pull no repositório upstream e manter o fork sincronizado com as alterações mais recentes, pois os dois repositórios ainda estão conectados. | A fork is a personal copy of another user's repository that lives on your account. Forks allow you to freely make changes to a project without affecting the original upstream repository. You can also open a pull request in the upstream repository and keep your fork synced with the latest changes since both repositories are still connected. |
merge
git-merge - Join two or more development histories together
| mesclar | merge |
|---|---|
| O merge pega as alterações de um branch (no mesmo repositório ou a partir de uma bifurcação) e as aplica em outro. Normalmente, isso ocorre por meio de uma "solicitação de pull" (que pode ser considerada uma solicitação de mesclagem) ou por meio da linha de comando. Uma mesclagem pode ser feita por meio de uma solicitação de pull pela interface da Web GitHub.com se não há alterações conflitantes ou sempre pode ser feita por meio da linha de comando. | Merging takes the changes from one branch (in the same repository or from a fork), and applies them into another. This often happens as a "pull request" (which can be thought of as a request to merge), or via the command line. A merge can be done through a pull request via the GitHub.com web interface if there are no conflicting changes, or can always be done via the command line. |
git help merge
Cheatsheet — Team members working with lab repos
Org: ELT73A-S22-2026-2
Your team: Grupo-X → slug grupo-x
Your lab repo: lab01-grupo-x (example)
Open in VS Code:
code .
# or, if you use a profile:
code . --profile "ESP32IO"
2. Daily workflow
# Update from remote
git pull
# See status
git status
# Stage changes
git add .
# or specific files:
git add src/main.cpp
# Commit
git commit -m "Implement exercise 2"
# Push to GitHub
git push
If git push asks for a remote branch the first time:
git push -u origin main
3. Branch workflow (recommended)
# Create and switch to a branch
git checkout -b feature/ex2
# Work, commit, push
git add .
git commit -m "Exercise 2"
git push -u origin feature/ex2
# Open a PR into main
gh pr create --base main --title "Exercise 2" --body "Done"
After the PR is merged:
git checkout main
git pull
git branch -d feature/ex2
5. What you can and cannot do
| Action | Allowed? |
|---|---|
| Clone / pull / push to your group repo | Yes (if team has push) |
| Create branches / commits | Yes |
| Open issues / PRs in your repo | Yes |
Edit other groups’ repos (lab00-grupo-b, …) | No |
| Delete the repository | No (usually) |
| Change team / org settings | No |
Access lab00-template (if private) | Only if granted |
Your access comes from the team (grupo-a, etc.), not from being repo admin.
7. Common problems
Permission denied on push
- Confirm you are logged in:
gh auth status - Confirm you are in the right team/repo
- Ask the instructor to check team access (
pushon the repo)
Repo not found
gh repo view ELT73A-S22-2026-2/lab00-grupo-a
If 404: wrong name, or you are not a member of the org/team yet.
Merge conflicts
git pull
# fix conflicted files
git add .
git commit -m "Resolve merge conflicts"
git push
Undo local changes (destructive)
git checkout -- .
git clean -fd
8. Minimal “start of lab” checklist
gh auth status(logged in)gh repo clone ELT73A-S22-2026-2/labXX-grupo-ycd labXX-grupo-ycode .- Work →
git add→git commit→git push - Check CI:
gh run list
9. One-liner cheat card
clone → gh repo clone ORG/lab00-grupo-a
update → git pull
save → git add . && git commit -m "msg" && git push
web → gh repo view --web
ci → gh run list
Criando diagramas
Here is a simple flow chart:
```mermaid
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
```
Como escrever expressões matemáticas
**The Cauchy-Schwarz Inequality**\
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
The Cauchy-Schwarz Inequality
Static Badge
Para o git "esquecer" suas informações salvas:
git credential-manager erase && cmdkey /list | findstr "github" && gh auth logout