# Exemplos de aplicação REV DUO

___

#### **Programação para FIRST Tech Challenge**
Um dos pedidos mais comuns dos usuários do Control Hub é como usar o Blinkin para sinalizar ao piloto as diferentes ações que o robô está realizando. O código básico abaixo mostra como usar o SDK para programar o Blinkin para diferentes ações. Quando um botão específico do gamepad é pressionado, o LED acende em uma cor sólida; se nenhum botão estiver pressionado, o LED exibe o padrão Beats Per Minute com a Paleta Floresta.

##### Blocks
[![Blocks-code-example-FTC.png](https://docs.stemos.com.br/uploads/images/gallery/2025-05/scaled-1680-/blocks-code-example-ftc.png)](https://docs.stemos.com.br/uploads/images/gallery/2025-05/blocks-code-example-ftc.png)

##### OnBot Java

<p class="callout ">Em Java, o padrão de LED do Blinkin é atribuído usando a convenção de nomenclatura CONSTANT_CASE. Por exemplo, se você quiser usar o Padrão de Cor Personalizada, Gradiente de Cor, o nome da variável constante é:
  CP1_2_COLOR_GRADIENT</p>

    package org.firstinspires.ftc.teamcode;

    import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
    import com.qualcomm.hardware.rev.RevBlinkinLedDriver;
    import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
    import com.qualcomm.robotcore.util.ElapsedTime;


    @TeleOp

    public class BlinkInTest extends LinearOpMode {
    RevBlinkinLedDriver blinkinLedDriver;
    RevBlinkinLedDriver.BlinkinPattern pattern;

    @Override
    public void runOpMode() {
        blinkinLedDriver = hardwareMap.get(RevBlinkinLedDriver.class, "blinkin");
        waitForStart();


        while (opModeIsActive()) {
            if(gamepad1.x){
                pattern = RevBlinkinLedDriver.BlinkinPattern.BLUE;
                blinkinLedDriver.setPattern(pattern);
            }
            else if(gamepad1.y){
                pattern = RevBlinkinLedDriver.BlinkinPattern.ORANGE;
                blinkinLedDriver.setPattern(pattern);
            }
            else if (gamepad1.b){
                pattern = RevBlinkinLedDriver.BlinkinPattern.WHITE;
                blinkinLedDriver.setPattern(pattern);
            }
            else if (gamepad1.a){
                pattern = RevBlinkinLedDriver.BlinkinPattern.VIOLET;
                blinkinLedDriver.setPattern(pattern);
            }
            else{
                pattern = RevBlinkinLedDriver.BlinkinPattern.BEATS_PER_MINUTE_FOREST_PALETTE;
                blinkinLedDriver.setPattern(pattern);
            }
            
            
        }
    }
}

#### **Fiação Independente**
O Blinkin pode operar no modo autônomo quando não há como gerar um sinal PWM ou quando é necessário apenas um padrão de saída único. Nesse modo, o Blinkin funcionará em Modo Normal sem sinal de entrada (LED azul piscando) e adotará o padrão programado para ausência de sinal (configuração de fábrica é o padrão 29 – Ondas de Cor, Paleta Festiva).

O padrão exibido atualmente pode ser alterado a qualquer momento pressionando os botões de subir e descer para navegar pela lista de padrões. A menos que um novo padrão padrão para ausência de sinal seja salvo na memória ao completar o processo de configuração, o Blinkin voltará ao último padrão salvo após um ciclo de energia.

[![image-_6_.png](https://docs.stemos.com.br/uploads/images/gallery/2025-05/scaled-1680-/JCPimage-6.png)](https://docs.stemos.com.br/uploads/images/gallery/2025-05/JCPimage-6.png)

1. Conecte a uma fonte de energia de 12V que possa fornecer até 5 amperes.

2. Selecione uma fita de LED de 12V ou 5V.

3. Siga as etapas de Configuração para programar um padrão padrão.


#### **Ideias de Aplicação para Robótica Competitiva**

Adicionar LEDs ao seu robô (ou outro projeto) pode fazer mais do que apenas deixá-los visualmente legais; você pode usar os LEDs para fornecer feedback visual crítico. Aqui estão alguns exemplos:

- Programe um botão do controlador para mudar o padrão de saída dos LEDs (por exemplo, 85 – Amarelo sólido) para que o piloto possa usar os LEDs para comunicar ao jogador humano na estação do portal, do outro lado do campo, que o robô está pronto para receber um objeto do jogo.

- Se o piloto tiver dificuldade para ver se o robô capturou um objeto do jogo, adicione um sensor na entrada, e a fita de LED pode ser programada para exibir automaticamente um novo padrão quando o objeto for capturado. Assim, o piloto não precisa desviar o olhar do robô para verificar o painel, pois o robô exibirá claramente seu status.

- Usando o valor do tempo da partida disponível no software, os LEDs podem ser alterados para um padrão de aviso de tempo (por exemplo, Vermelho sólido) quando faltarem X segundos para o fim da partida.

- O robô pode exibir um padrão diferente quando estiver habilitado versus desabilitado, oferecendo um indicador visual mais claro do estado do robô do que o RSL (Robot Signal Light).