Browse Source

drivers: added rgbled driver

dev/timer
Hauke Petersen 9 years ago
parent
commit
9e0653afbb
  1. 4
      Makefile.dep
  2. 3
      drivers/Makefile
  3. 59
      drivers/include/rgbled.h
  4. 3
      drivers/rgbled/Makefile
  5. 49
      drivers/rgbled/rgbled.c

4
Makefile.dep

@ -80,3 +80,7 @@ endif
ifneq (,$(filter ccn_lite,$(USEMODULE)))
USEMODULE += crypto
endif
ifneq (,$(filter rgbled,$(USEMODULE)))
USEMODULE += color
endif

3
drivers/Makefile

@ -34,6 +34,9 @@ endif
ifneq (,$(filter lm75a,$(USEMODULE)))
DIRS += lm75a
endif
ifneq (,$(filter rgbled,$(USEMODULE)))
DIRS += rgbled
endif
all:
@for i in $(DIRS) ; do "$(MAKE)" -C $$i || exit 1; done ;

59
drivers/include/rgbled.h

@ -0,0 +1,59 @@
/*
* Copyright (C) 2014 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser General
* Public License v2.1. See the file LICENSE in the top level directory for more
* details.
*/
/**
* @defgroup driver_rgbled RGB-LED driver
* @ingroup drivers
* @brief High-level driver for RGB-LEDs
* @{
*
* @file
* @brief High-level driver for easy handling of RGB-LEDs
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*/
#ifndef __RGBLED_H
#define __RGBLED_H
#include "color.h"
#include "periph/pwm.h"
/**
* @name Descriptor struct for rgbleds
*/
typedef struct {
pwm_t device;
int channel_r;
int channel_g;
int channel_b;
} rgbled_t;
/**
* @brief Initialize the RGB LED by assigning PWM channels to colors
*
* @param[in] led Struct identifying the LED
* @param[in] pwm PWM device to drive the LED
* @param[in] channel_r PWM channel connected to red
* @param[in] channel_g PWM channel connected to green
* @param[in] channel_b PWM channel connected to blue
*/
void rgbled_init(rgbled_t *led, pwm_t pwm, int channel_r, int channel_g, int channel_b);
/**
* @brief Set the RGB-LED to the given color value
*
* @param[in] led Struct identifying the LED to set
* @param[in] color Color to set the led to
*/
void rgbled_set(rgbled_t *led, color_rgb_t *color);
#endif /* __RGBLED_H */
/** @} */

3
drivers/rgbled/Makefile

@ -0,0 +1,3 @@
MODULE = rgbled
include $(RIOTBASE)/Makefile.base

49
drivers/rgbled/rgbled.c

@ -0,0 +1,49 @@
/*
* Copyright (C) 2014 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser General
* Public License v2.1. See the file LICENSE in the top level directory for more
* details.
*/
/**
* @ingroup driver_rgbled
* @{
*
* @file
* @brief High-level driver for easy handling of RGB-LEDs
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*
* @}
*/
#include "rgbled.h"
/**
* @name Drive the RGB-LED by default with 500Hz
*/
#define PWM_FREQU (500)
/**
* @name Set the default resolution to 8-bit per color (for a 24-bit color space)
*/
#define PWM_RES (255)
void rgbled_init(rgbled_t *led, pwm_t pwm, int channel_r, int channel_g, int channel_b)
{
led->device = pwm;
led->channel_r = channel_r;
led->channel_g = channel_g;
led->channel_b = channel_b;
pwm_init(pwm, PWM_LEFT, PWM_FREQU, PWM_RES);
}
void rgbled_set(rgbled_t *led, color_rgb_t *color)
{
pwm_set(led->device, led->channel_r, (unsigned int)color->r);
pwm_set(led->device, led->channel_g, (unsigned int)color->g);
pwm_set(led->device, led->channel_b, (unsigned int)color->b);
}
Loading…
Cancel
Save