# Olá robô - Introdução a programação

___

## **Olá robô - escolhendo seu caminho**
Em quase toda a aula de programação, a primeira lição ensinada é alguma variação do código Olá Mundo. Olá Mundo, frequentemente um segmento de código de uma ou duas linhas, exibe a linha Olá Mundo quando o código é construído e executado. Embora este código possa parecer uma introdução muito simples à programação, ele apresenta vários conceitos cruciais na programação. Olá Mundo é a primeira lição que muitos estudantes têm na lógica de programação, bem como na sintaxe específica da linguagem. Mas, o mais importante, a simplicidade do Olá Mundo permite que ele seja um ponto de teste para o sistema usado para executar o código.

Embora seja possível exibir Olá Mundo ou Olá Robô em um dispositivo Android no Sistema de Controle REV, isso não serve exatamente para o mesmo propósito. Para considerar adequadamente a sintaxe, lógica e teste no Sistema de Controle REV, é necessário prestar atenção a uma multiplicidade de elementos do sistema como atuadores e sensores. Por essa razão, a lição Olá Mundo foi adaptada para Olá Robô.

Ao final deste guia, os usuários devem entender como configurar seu robô e testar seus mecanismos de robô. O esboço a seguir percorre o fluxo e os objetivos desta seção. Escolha o caminho que melhor se adequa às suas necessidades.

<p class="callout info">
Se você é novo na programação ou no Sistema de Controle REV, recomendamos que você siga todo o guia para aprender como utilizar adequadamente o sistema.
</p>

### **Introdução**

#### **Ferramentas de programação**

Existem três ferramentas de programação para o Sistema de Controle REV. Conheça os benefícios de cada opção e escolha aquela que melhor atenda às suas necessidades. A seção também inclui instruções sobre como acessar a opção que você escolher.

#### **Op Modes**

O que são Op Modes? Saiba mais sobre os diferentes tipos de Op Modes no Sistema de Controle REV.

### **Configuração**

#### **Importância da configuração**

O que é Configuração e por que você deve configurar antes de começar a programar?

#### **Configurando hardware comum**

Aprenda como configurar hardware comumente utilizado, como motores, servos e sensores.

#### **Erros comuns no mapeamento de hardware**

Entender e resolver os erros comuns que ocorrem ao configurar e mapear hardware 

### **banco de testes: introdução**

#### **Banco de testes**

Por que criar um banco de testes com atuadores e sensores pode ajudar na programação. Este banco de testes, ou algo equivalente, será usado nas seções seguintes.

#### **Noções básicas de testes**

Entenda por que o aprendizado é um dos aspectos mais importantes do desenvolvimento de software e como ele difere da solução de problemas (troubleshooting).

### **Banco de testes: blocos**

#### **Criando um Op Mode**

Concentra-se em como navegar na interface de blocos e criar um modo operacional (op mode).

#### **Fundamentos da programação**

Quebra a estrutura e os elementos-chave necessários para um modo operacional (op mode), bem como alguns dos componentes essenciais dos Blocos e da lógica de programação.

#### **Programando Atuadores**

Como codificar servos e motores. Esta seção orienta a lógica básica de codificação de atuadores, controle de atuadores com um gamepad e uso de telemetria.

### **Banco de dados: OnBot Java**


#### **Criando um OpMode**

Concentre-se em como navegar na interface OnBot Java e criar um op mode.

#### **Fundamentos da programação**

Explique a estrutura e os elementos-chave necessários para um "op mode", bem como alguns dos componentes essenciais do Java.

#### **Programando Atuadores**

Como codificar servos e motores. Esta seção orienta sobre a lógica básica de programação de atuadores, controlar atuadores com um gamepad e usar telemetria.

#### **Programando Sensores**

Como programar um dispositivo digital. Esta seção foca na lógica básica de codificação de um dispositivo digital, como um Sensor de Toque REV.

### **Controle de robô**

#### **Crie um robô simples**

Apresenta um possível robô para trabalhar, assim como o arquivo de configuração usado nas seções seguintes.

#### **Noções básicas de transmissão**

Diferenças entre drivetrains diferenciais e omnidirecionais e seu impacto nos tipos de controle teleoperados.

### **Movimentação do robô: blocos**

#### **Noções básicas de programação de transmissão**

O que considerar ao programar os motores do drivetrain e como aplicar isso a um controle teleoperado no estilo arcade.

#### **Tempo decorrido**

Aprenda a usar o conceito de tempo decorrido para criar programas autônomos controlados por tempo.

#### **Movimentação por encoder**

#### **Noções básicas de programação de transmissão**

O que considerar ao programar os motores do drivetrain e como aplicar isso a um controle teleoperado no estilo arcade.

#### **Tempo decorrido**

Aprenda a usar o conceito de tempo decorrido para criar programas autônomos controlados por tempo.

#### **Movimentação por encoder**

Aprenda a usar encoders para criar trajetórias autônomas mais consistentes.

### **Controle de braço: blocos**

### **Controle de braço**

#### **Noções básicas de progrmação de braço**

Introdução à codificação de um braço para controle teleoperado e trabalho com um interruptor de limite.

#### **Programando um braço para uma posição**

Utilizando encoders de motores para mover um braço para uma posição específica, como de 45 graus para 90 graus.

#### **Utilizando limites para controlar a amplitude de movimento**

Trabalhando com os conceitos básicos de controle de braço, encoder de motor e interruptores de limite para controlar a amplitude de movimento de um braço.

### **Controle de braço: OnBot**

#### **Noções básicas de progrmação de braço**

Introdução à codificação de um braço para controle teleoperado e trabalho com um interruptor de limite.

#### **Programando um braço para uma posição**

Utilizando encoders de motores para mover um braço para uma posição específica, como de 45 graus para 90 graus.

#### **Utilizando limites para controlar a amplitude de movimento**

Trabalhando com os conceitos básicos de controle de braço, encoder de motor e interruptores de limite para controlar a amplitude de movimento de um braço.