Elabore um projeto com a placa NUCLEO-G474RE que:
  1. use 4 leds para contar em binário de 0 a 9 com 1 segundo para cada

Passo 1

Beleza, vamos por partes! O enunciado pede para a gente criar um projeto usando a placa NUCLEO-G474RE que utilize 4 LEDs para contar de 0 a 9 em binário, mudando a cada segundo. Para resolver isso, vamos precisar entender um pouquinho de programação de microcontroladores, como manipular LEDs na NUCLEO-G474RE e implementar a lógica binária para a contagem.

Passo 2

Primeiro, vamos configurar os 4 LEDs na placa NUCLEO-G474RE. Cada LED vai representar um bit no nosso número binário. Por exemplo, o LED mais à direita será o bit menos significativo (2^0) e o mais à esquerda será o bit mais significativo (2^3).

Passo 3

Agora, precisamos programar a placa para que ela incremente o valor contado a cada 1 segundo. Para isso, vamos usar a função de delay que pausa a execução do programa por um tempo específico, nesse caso, 1000 milissegundos.

Passo 4

Vamos implementar a lógica binária. Para cada número de 0 a 9, vamos converter o número decimal para binário e acender os LEDs correspondentes. Por exemplo:
  • 0 em binário é 0000 (todos os LEDs apagados)
  • 1 em binário é 0001 (apenas o LED menor aceso)
  • 2 em binário é 0010 (apenas o segundo LED aceso)
  • E assim por diante até 9, que em binário é 1001.

Passo 5

No código, vamos usar operações bit a bit para determinar quais LEDs acender. Isso significa que para cada bit do número, vamos verificar se está ligado (1) ou desligado (0) e acender ou apagar o LED correspondente.

Passo 6

Finalmente, vamos criar um loop que conta de 0 a 9, atualizando os LEDs a cada segundo. Depois de chegar em 9, o contador volta para 0 e o processo se repete.

Resposta

Prontinho! Com esses passos, conseguimos programar a placa NUCLEO-G474RE para contar de 0 a 9 em binário usando 4 LEDs, mudando a cada segundo. Basta seguir a lógica de configuração dos LEDs, implementar a contagem binária e controlar o tempo de cada contagem.

Código de Exemplo

#include "stm32g4xx.h"

void delay_MS(int delay);
void set_LEDs(int number);

int main(void) {
    // Inicializa o sistema
    HAL_Init();
    __HAL_RCC_GPIOA_CLK_ENABLE(); // Supondo que os LEDs estão no GPIOA

    // Configura os pinos dos LEDs como saída
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    int count = 0;

    while (1) {
        set_LEDs(count);
        HAL_Delay(1000); // Espera 1 segundo
        count++;
        if(count > 9){
            count = 0;
        }
    }
}

void set_LEDs(int number){
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, (number & 0x1) ? GPIO_PIN_SET : GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, (number & 0x2) ? GPIO_PIN_SET : GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, (number & 0x4) ? GPIO_PIN_SET : GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, (number & 0x8) ? GPIO_PIN_SET : GPIO_PIN_RESET);
}
Esse código configura os LEDs nos pinos PA0 a PA3 e atualiza o estado deles conforme o contador incrementa de 0 a 9 a cada segundo, mostrando a representação binária do número.

Exercícios relacionados