Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed ros_lib_kinetic
RGBA_LED.h
- Committer:
- thomasjlew
- Date:
- 2021-03-02
- Revision:
- 7:794bd40830c1
- Parent:
- 1:40bdbe1a93b7
File content as of revision 7:794bd40830c1:
#ifndef RGBA_LED_H
#define RGBA_LED_H
#include "RGBA.h"
#include "PCA9634.h"
#include "colors.h"
#include "defines.h"
#include "mbed.h"
#include "math.h"
#include <vector>
#include <string>
class RGBA_LED
{
public:
RGBA_LED(I2C *i2c, DigitalOut *inv_out_en, int addr, bool amber_enabled);
void disableAmber();
void disableAmber(int stripID);
void enableAmber();
void enableAmber(int stripID);
void setColor(RGBA<float> color);
void setColor(RGBA<float> color, int stripID);
void setBrightness(float alpha);
void setBrightness(float alpha, int stripID);
// TODO
void fadeColor(RGBA<float>, int duration);
void fadeColor(RGBA<float>, int duration, int stripID);
void fadeBrightness(float alpha, int duration);
void fadeBrightness(float alpha, int duration, int stripID);
void setDefaultColorFadeTime(int def_color_fade_time);
void setDefaultBrightnessFadeTime(int def_alpha_fade_time);
void setStepTime(int step_time); // TODO
int getStepTime();
void step();
// TODO
void turnOn();
void turnOn(int stripID);
void turnOff();
void turnOff(int stripID);
// TODO
//void setColorProgram(int preset_id, bool fadeInto);
//void setColorProgram(int preset_id, int stripID, bool fadeInto);
void setColorProgram(vector<RGBA<float> > color_program, vector<float> time_program, bool fadeInto);
void setColorProgram(vector<RGBA<float> > color_program, vector<float> time_program, int stripID, bool fadeInto);
//void setBrightnessProgram(int preset_id, bool fadeInto);
//void setBrightnessProgram(int preset_id, int stripID, bool fadeInto);
void setBrightnessProgram(vector<float> alpha_program, vector<float> time_program, bool fadeInto);
void setBrightnessProgram(vector<float> alpha_program, vector<float> time_program, int stripID, bool fadeInto);
RGBA<float> getPresetColor(char colorID);
vector<RGBA<float> > getPresetColorProgram(int programID);
//vector<RGBA<float> > genColorProgram(string sequence);
//vector<RGBA<float> > genDoubleColorProgram(vector<RGBA<float> > colorProgram); // Dublicates each color in sequence
//vector<RGBA<float> > genHalfColorProgram(vector<RGBA<float> > colorProgram); // For undoing genDoubleColorProgram
vector<float> getPresetAlphaProgram(int programID);
//vector<float> genFadeAlphaProgram(float duration); // For simple fading without breaks
//vector<float> genDelayedFadeAlphaProgram(float duration1, float duration2); // For fading while staying at each color for a while
private:
PCA9634 *led_driver_;
RGBA<ledID> strip_leds_[2]; // Contains ids of LEDs associated with strips
RGBA<float> cur_color_[2], dcolor_[2]; // Colors range from 0 to 255
float cur_alpha_[2], dalpha_[2]; // Brightness ranges from 0.0 to 1.0
int count_color_[2], count_alpha_[2];
int ind_color_program_[2], ind_alpha_program_[2];
int step_time_; // In milliseconds
float def_color_fade_time_, def_alpha_fade_time_;
vector<RGBA<float> > color_program_[2];
vector<float> alpha_program_[2];
vector<float> color_time_program_[2], alpha_time_program_[2];
void updatePWMs();
void updatePWMs(int stripID);
};
#endif