Você está na página 1de 3

#include "stm32f1xx_hal.

h"

#include "cmsis_os.h"

// Definições de pinos do robô

#define PINO_SENSOR1 GPIO_PIN_0

#define PINO_SENSOR2 GPIO_PIN_1

#define PINO_SENSOR3 GPIO_PIN_2

#define PINO_MOTOR_ESQUERDA1 GPIO_PIN_0

#define PINO_MOTOR_ESQUERDA2 GPIO_PIN_1

#define PINO_MOTOR_DIREITA1 GPIO_PIN_6

#define PINO_MOTOR_DIREITA2 GPIO_PIN_7

#define PINO_LED1 GPIO_PIN_13

#define PINO_LED2 GPIO_PIN_14

#define PINO_LED3 GPIO_PIN_15

// Fila para troca de informações entre a tarefa dos sensores e a tarefa dos motores

osMessageQueueId_t filaSensoresMotoresHandle;

// Função de tarefa para leitura dos sensores

void tarefaLeituraSensores(void *argument) {

int valorSensor1, valorSensor2, valorSensor3;

while (1) {

// Ler os valores dos sensores de linha

valorSensor1 = HAL_GPIO_ReadPin(GPIOA, PINO_SENSOR1);

valorSensor2 = HAL_GPIO_ReadPin(GPIOA, PINO_SENSOR2);

valorSensor3 = HAL_GPIO_ReadPin(GPIOA, PINO_SENSOR3);

// Enviar os valores dos sensores para a fila

int valoresSensores[3] = {valorSensor1, valorSensor2, valorSensor3};

osMessageQueuePut(filaSensoresMotoresHandle, valoresSensores, 0, 0);


// Aguardar um intervalo de leitura dos sensores

osDelay(10);

// Função de tarefa para acionamento dos motores

void tarefaAcionamentoMotores(void *argument) {

int valoresSensores[3];

while (1) {

// Receber os valores dos sensores da fila

osMessageQueueGet(filaSensoresMotoresHandle, valoresSensores, NULL, osWaitForever);

// Lógica de controle dos motores baseada nos valores dos sensores

// Implemente sua lógica específica aqui

// Exemplo: controle dos motores para seguir a linha

// Aguardar um intervalo antes de realizar nova ação dos motores

osDelay(20);

// Função de tarefa para sinalização com os LEDs

void tarefaSinalizacaoLEDs(void *argument) {

while (1) {

// Implemente a lógica de sinalização com os LEDs aqui

// Exemplo: piscar os LEDs em sequência

// Aguardar um intervalo antes de alterar a sinalização dos LEDs

osDelay(500);
}

int main(void) {

// Inicializar periféricos, configurações e ações iniciais

Você também pode gostar