---
# System prepended metadata

title: Main.hpp

---

# Main.hpp
[toc]

## Objetivo:
Esse arquivo tem como objetivo centralizar os demais arquivos do código, para executá-los de uma determinada forma a fim de realizar a tarefa principal a qual o código foi proposto.

## [Fluxograma](https://miro.com/welcomeonboard/eUlVUDVxTW5rNmpWeDdVam9UNjZPam5KVXFZckhZYzRLY1dsdHNtczg1WjJkVHNKSjZVUVkzM3hFbDM3RUpsT3wzNDU4NzY0NTM5MDA3MTM2NjM1fDI=?share_link_id=395314307886)

## Processo criativo:
A main foi idealizada para reunir e gerenciar os demais arquivos do código, evitando a poluição do arquivo em definir funções e variáveis, minimizando esse processo ao reunir as demais definições.

## Ferramentas utilizadas:
Nesse arquivo somente importamos a ide do arduino para utilizar no esp, e nos demais arquivos do código.

## Passo a passo para rodar o projeto:

Primeiro, é necessário incluir todas as funções presentes nos documentos específicos para cada uma. Em seguida, criamos algumas variáveis que serão necessárias para verificar as etapas e ()

. Além disso, defini-se os objetos: "sensores" para realizar a leitura dos tais; e "PID" (tanto o angular como o linear) para a correção dos erros na movimentação do robô.

Com todos os itens presente, iniciam  

// Não sei se já acabaram de escrever, mas ficou confuso kkkk

## Instruções de teste:
Para testar esse arquivo pode-se verificar a transição dos modos que o robô pode assumir, sendo eles "halt", "calibrating", "beforeRunning", "mapping" e "running". E verificar os prints feitos pelo minervApp ou prints adicionados ao código.

## Partes técnicas e afins:

### Funções no código e seus propósitos:

#### run():
![](https://i.imgur.com/ODu8lfr.png)
![](https://i.imgur.com/RUiLS3I.png)

A função tem como objetivo implementar a locomoção e mapeamento, para isso começa calculando a posição do robo em relação a linha em que se encontra para assim fazer os calculos de PID angular e atualizar os erros

#### setup():
![](https://i.imgur.com/55aHwnk.png)

Função padrão da ide do arduino utilizada para as definições de inicialização no código e ações primárias. Como o envio das informações do robô ao minervApp, o inicio dos motores e das pinagens de sensores e dos suportes necessários para a utilização do wifi. 


#### loop():
![](https://i.imgur.com/OqTAwYP.png)

Utiliza as informações dos sensores calibrados e atualiza os valores das velocidades criando uma nova média para a velocidade durante a corrida.

Ela também é responsável por sprovocars diferentes ações de acordo com os estados do robô, 

#### Possíveis Dúvidas:

#### Possíveis melhorias:
* Deixar o código em português, para entender melhor os estados assumidos, deixando nomes mais intuitivos;

## Problemas encontrados:

