# Pré-configuração

___

A configuração é uma das etapas mais comumente mal compreendidas ou esquecidas necessárias para programar um robô. Esta seção tem o objetivo de explicar a importância da configuração e dissipar equívocos comuns sobre ela, respondendo às seguintes perguntas:

1. O que é configuração?
2. Como você configura elementos de hardware?
3. Quais são os problemas comuns causados por um problema com o arquivo de configuração?

## **A importância da configuração**

Embora cada REV Control Hub seja o mesmo, os robôs controlados pelo Control Hub não são. Cada Control Hub tem o mesmo número de portas de motor, portas de servo, portas digitais, e assim por diante, mas como cada usuário utiliza essas portas varia de sistema para sistema. Por exemplo, um Sensor de Cor V3 pode ser conectado à I2C Bus 1 no Hub de um usuário, mas outro usuário pode usar o mesmo barramento para conectar um Sensor de Distância de 2m.

O Control Hub sabe que há um dispositivo I2C conectado à porta, mas não possui naturalmente as informações necessárias para traduzir essas informações para um Op Mode ou informar ao Op Mode quais drivers precisam ser acessados para usar esse sensor. O usuário precisa fornecer informações adicionais, para que o software interno no Hub possa pegar informações do Op Mode e aplicá-las a uma porta de hardware externa correspondente e vice-versa. Esse processo é conhecido como mapeamento de hardware. O mapeamento de hardware é um processo de duas etapas que inclui: a criação de um arquivo legível conhecido como arquivo de configuração e chamadas ao mapeamento de hardware dentro de um Op Mode.

#### **Arquivo de configuração**

O arquivo de configuração é um arquivo legível criado pelo usuário por meio do aplicativo Driver Station. Ao criar um arquivo de configuração, os usuários são obrigados a atribuir cada dispositivo a uma porta, selecionar o tipo de dispositivo a partir das opções fornecidas pelo SDK e dar a ele um nome exclusivo.

<p class="callout info">Na programação, é importante distinguir entre variáveis, dando a cada variável um nome diferente.</p>

1. Assim que um arquivo de configuração é salvo ou ativado, o robô será reiniciado. Esse reinício é feito para que o SDK possa ler o arquivo, determinar quais dispositivos estão presentes e adicionar os dispositivos à classe hardwareMap.

#### **Mapeamento de hardware**

No lado do usuário, no modo de operação criado, está a classe hardwareMap. Esta classe é onde as informações criadas na configuração estão disponíveis para uso no código Blocks, OnBot Java ou Android Studio.

O nível de acesso ou interação que um usuário tem com a classe hardwareMap depende da ferramenta de programação que estão usando. Como o Blocks é uma coleção de trechos de código predefinidos, ele cria referências ao hardwareMap sempre que um trecho de código de variável, correspondente a um hardware externo, é referenciado pela primeira vez. No entanto, com OnBot Java e Android Studio, a referência ao hardwareMap requer a criação de uma variável atribuída a uma unidade de hardware externa dentro do hardwareMap.

<p class="callout info">
As informações sobre como fazer referência à classe hardwareMap em Java serão explicadas com mais detalhes na seção Banco de dados - OnBot Java.</p>

## **Configurando dispositivos de hardware comum**

### **Acessando o utilitário de configuração**

Selecione o menu no canto superior direito da Estação do Motorista. Em seguida, selecione "Configure Robot" (Configurar Robô).

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/accessing-config-page.png" alt="module" width="50%"/>
</p>

Na página de configurações disponíveis, selecione "New" (Novo).

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/select-new.png" alt="module" width="50%"/>
</p>

Na página de configuração de dispositivos USB, selecione "Control Hub Portal" (Portal do Control Hub).

Observação: Se você tiver um Expansion Hub, ele aparecerá como "Expansion Hub Portal" (Portal do Expansion Hub).

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/open-portal.png" alt="module" width="50%"/>
</p>

Dentro do Portal do Hub, selecione o dispositivo que deseja configurar. Neste caso, selecione o Control Hub.

Observação: se você tiver um Expansion Hub conectado a um Control Hub, o Expansion Hub também aparecerá como um dispositivo configurável no portal.

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/select-ch.png" alt="module" width="50%"/>
</p>

Isso o levará para a página mostrada na imagem. A partir daqui, você pode configurar motores, servos e sensores que está usando. Siga o restante do guia para descobrir como configurar dispositivos que serão usados na seção de Teste.

Observação: A forma como os dispositivos Digitais e Analógicos são configurados difere significativamente da forma como os dispositivos I2C são configurados. Isso ocorre porque cada porta física I2C é um barramento diferente que pode hospedar vários sensores diferentes. Para obter mais informações sobre os diferentes tipos de sensores, consulte a seção de [sensores](https://docs.revrobotics.com/duo-control/sensors/intro-to-sensors).

<p align=center >
<img src="https://docs.stemos.com.br/uploads/images/gallery/2023-12/confifguration.png" alt="module" width="50%"/>
</p>

## **Configurando o hardware**

A próxima seção mostrará como configurar componentes que serão usados no Test Bed. O tipo de hardware e os nomes foram escolhidos levando em consideração o plano de aula Hello World. Os usuários devem observar as notas dentro das etapas para considerar ao criar arquivos de configuração para outras instâncias.