78 lines
2.7 KiB
C
78 lines
2.7 KiB
C
/*
|
|
* COMPASS_LEDS.c
|
|
*
|
|
* Created on: Apr 3, 2021
|
|
* Author: Think
|
|
*/
|
|
|
|
#include "COMPASS_LEDS.h"
|
|
|
|
bool COMPASS_LEDS_Init(COMPASS_LEDS *compassLeds)
|
|
{
|
|
compassLeds->southLed.Pin = GPIO_PIN_15;
|
|
compassLeds->eastLed.Pin = GPIO_PIN_12;
|
|
compassLeds->northLed.Pin = GPIO_PIN_13;
|
|
compassLeds->westLed.Pin = GPIO_PIN_14;
|
|
|
|
compassLeds->southLed.Mode = GPIO_MODE_OUTPUT_PP;
|
|
compassLeds->eastLed.Mode = GPIO_MODE_OUTPUT_PP;
|
|
compassLeds->northLed.Mode = GPIO_MODE_OUTPUT_PP;
|
|
compassLeds->westLed.Mode = GPIO_MODE_OUTPUT_PP;
|
|
|
|
compassLeds->southLed.Speed = GPIO_SPEED_LOW;
|
|
compassLeds->eastLed.Speed = GPIO_SPEED_LOW;
|
|
compassLeds->northLed.Speed = GPIO_SPEED_LOW;
|
|
compassLeds->westLed.Speed = GPIO_SPEED_LOW;
|
|
|
|
HAL_GPIO_Init(GPIOD, &compassLeds->southLed);
|
|
HAL_GPIO_Init(GPIOD, &compassLeds->eastLed);
|
|
HAL_GPIO_Init(GPIOD, &compassLeds->northLed);
|
|
HAL_GPIO_Init(GPIOD, &compassLeds->westLed);
|
|
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool COMPASS_LEDS_Light(COMPASS_LEDS *compassLeds, Heading heading)
|
|
{
|
|
switch(heading)
|
|
{
|
|
case SOUTH:
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_SET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET);
|
|
break;
|
|
case NORTH:
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_SET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET);
|
|
break;
|
|
case EAST:
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_SET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET);
|
|
break;
|
|
case WEST:
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_SET);
|
|
break;
|
|
default:
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->southLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->eastLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->northLed.Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(GPIOD, compassLeds->westLed.Pin, GPIO_PIN_RESET);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|