eCompass/Drivers/COMPASS_LEDS/COMPASS_LEDS.c
2021-04-04 10:21:26 +02:00

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;
}