1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-22 15:55:48 +03:00
betaflight/src/drivers/light_ledring.c
Dominic Clifton 3bd4cd2ed2 Use slightly flatter directory structure since some developers did not
like too many folders.
Extracted code from some files into separate files to fit with the new
layout.
2014-04-08 22:07:37 +01:00

55 lines
1.2 KiB
C

#include "board.h"
#include "mw.h"
#include "maths.h"
// Driver for DFRobot I2C Led Ring
#define LED_RING_ADDRESS 0x6D
bool ledringDetect(void)
{
bool ack = false;
uint8_t sig = 'e';
ack = i2cWrite(LED_RING_ADDRESS, 0xFF, sig);
if (!ack)
return false;
return true;
}
void ledringState(void)
{
uint8_t b[10];
static uint8_t state;
if (state == 0) {
b[0] = 'z';
b[1] = (180 - heading) / 2; // 1 unit = 2 degrees;
i2cWriteBuffer(LED_RING_ADDRESS, 0xFF, 2, b);
state = 1;
} else if (state == 1) {
b[0] = 'y';
b[1] = constrain(angle[ROLL] / 10 + 90, 0, 180);
b[2] = constrain(angle[PITCH] / 10 + 90, 0, 180);
i2cWriteBuffer(LED_RING_ADDRESS, 0xFF, 3, b);
state = 2;
} else if (state == 2) {
b[0] = 'd'; // all unicolor GREEN
b[1] = 1;
if (f.ARMED)
b[2] = 1;
else
b[2] = 0;
i2cWriteBuffer(LED_RING_ADDRESS, 0xFF, 3, b);
state = 0;
}
}
void ledringBlink(void)
{
uint8_t b[3];
b[0] = 'k';
b[1] = 10;
b[2] = 10;
i2cWriteBuffer(LED_RING_ADDRESS, 0xFF, 3, b);
}