Update loop to 60fps. Update some arduino devices to 115200. Refactor shiftlights code for performance.
This commit is contained in:
parent
f31947dc69
commit
2fb0383091
|
|
@ -6,20 +6,21 @@
|
|||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char color_1_red;
|
||||
unsigned char color_1_green;
|
||||
unsigned char color_1_blue;
|
||||
unsigned char color_2_red;
|
||||
unsigned char color_2_green;
|
||||
unsigned char color_2_blue;
|
||||
unsigned char color_3_red;
|
||||
unsigned char color_3_green;
|
||||
unsigned char color_3_blue;
|
||||
unsigned char space_1;
|
||||
unsigned char space_2;
|
||||
unsigned char space_3;
|
||||
uint32_t maxrpm;
|
||||
uint32_t rpm;
|
||||
uint32_t litleds;
|
||||
//unsigned char color_1_red;
|
||||
//unsigned char color_1_green;
|
||||
//unsigned char color_1_blue;
|
||||
//unsigned char color_2_red;
|
||||
//unsigned char color_2_green;
|
||||
//unsigned char color_2_blue;
|
||||
//unsigned char color_3_red;
|
||||
//unsigned char color_3_green;
|
||||
//unsigned char color_3_blue;
|
||||
//unsigned char space_1;
|
||||
//unsigned char space_2;
|
||||
//unsigned char space_3;
|
||||
//uint32_t maxrpm;
|
||||
//uint32_t rpm;
|
||||
}
|
||||
ShiftLightsData;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,15 +7,15 @@
|
|||
#define NUM_LEDS 6
|
||||
#define BRIGHTNESS 40
|
||||
|
||||
#define COLOR1A 0
|
||||
#define COLOR1R 0
|
||||
#define COLOR1G 255
|
||||
#define COLOR1B 0
|
||||
#define COLOR1C 255
|
||||
#define COLOR2A 0
|
||||
#define COLOR2B 255
|
||||
#define COLOR2C 0
|
||||
#define COLOR3A 255
|
||||
#define COLOR2R 255
|
||||
#define COLOR2G 255
|
||||
#define COLOR2B 0
|
||||
#define COLOR3R 255
|
||||
#define COLOR3G 0
|
||||
#define COLOR3B 0
|
||||
#define COLOR3C 0
|
||||
|
||||
CRGB leds[NUM_LEDS];
|
||||
ShiftLightsData sd;
|
||||
|
|
@ -39,62 +39,69 @@ void setup()
|
|||
}
|
||||
FastLED.clear();
|
||||
|
||||
sd.rpm = 0;
|
||||
sd.maxrpm = 6500;
|
||||
sd.litleds = 0;
|
||||
//sd.rpm = 0;
|
||||
//sd.maxrpm = 6500;
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
int l = 0;
|
||||
int lit = sd.litleds;
|
||||
char buff[SIMDATA_SIZE];
|
||||
|
||||
if (Serial.available() >= SIMDATA_SIZE)
|
||||
{
|
||||
Serial.readBytes(buff, SIMDATA_SIZE);
|
||||
memcpy(&sd, &buff, SIMDATA_SIZE);
|
||||
rpm = sd.rpm;
|
||||
maxrpm = sd.maxrpm;
|
||||
lit = sd.litleds;
|
||||
}
|
||||
//if (Serial.available() >= SIMDATA_SIZE)
|
||||
//{
|
||||
// Serial.readBytes(buff, SIMDATA_SIZE);
|
||||
// memcpy(&sd, &buff, SIMDATA_SIZE);
|
||||
// rpm = sd.rpm;
|
||||
// maxrpm = sd.maxrpm;
|
||||
//}
|
||||
|
||||
while (l < numlights)
|
||||
{
|
||||
lights[l] = 0;
|
||||
l++;
|
||||
}
|
||||
l = -1;
|
||||
int rpmlights = 0;
|
||||
while (rpm > rpmlights)
|
||||
{
|
||||
if (l>=0)
|
||||
{
|
||||
lights[l] = 1;
|
||||
}
|
||||
l++;
|
||||
rpmlights = rpmlights + (((maxrpm-250)/numlights));
|
||||
}
|
||||
//while (l < numlights)
|
||||
//{
|
||||
// lights[l] = 0;
|
||||
// l++;
|
||||
//}
|
||||
//l = -1;
|
||||
//int rpmlights = 0;
|
||||
//while (rpm > rpmlights)
|
||||
//{
|
||||
// if (l>=0)
|
||||
// {
|
||||
// lights[l] = 1;
|
||||
// }
|
||||
// l++;
|
||||
// rpmlights = rpmlights + (((maxrpm-250)/numlights));
|
||||
//}
|
||||
|
||||
l = 0;
|
||||
FastLED.clear();
|
||||
while (l < numlights)
|
||||
while (l < lit)
|
||||
{
|
||||
|
||||
if (l >= numlights / 2)
|
||||
{
|
||||
leds[l] = CRGB ( COLOR1A, COLOR1B, COLOR1C);
|
||||
leds[l] = CRGB ( COLOR2R, COLOR2G, COLOR2B);
|
||||
}
|
||||
if (l < numlights / 2)
|
||||
{
|
||||
leds[l] = CRGB ( COLOR2A, COLOR2B, COLOR2C);
|
||||
leds[l] = CRGB ( COLOR1R, COLOR1G, COLOR1B);
|
||||
}
|
||||
if (l == numlights - 1)
|
||||
{
|
||||
leds[l] = CRGB ( COLOR3A, COLOR3B, COLOR3C);
|
||||
leds[l] = CRGB ( COLOR3R, COLOR3G, COLOR3B);
|
||||
}
|
||||
if (lights[l] <= 0)
|
||||
{
|
||||
leds[l] = CRGB ( 0, 0, 0);
|
||||
}
|
||||
FastLED.show();
|
||||
//if (lights[l] <= 0)
|
||||
//{
|
||||
// leds[l] = CRGB ( 0, 0, 0);
|
||||
//}
|
||||
l++;
|
||||
}
|
||||
FastLED.show();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ int effect3 = 0;
|
|||
int effect4 = 0;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.begin(115200);
|
||||
if (!AFMS.begin()) {
|
||||
Serial.println("Could not find Motor Shield. Check wiring.");
|
||||
while (1);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ SimWindData sd;
|
|||
int velocity = 0;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.begin(115200);
|
||||
if (!AFMS.begin()) {
|
||||
Serial.println("Could not find Motor Shield. Check wiring.");
|
||||
while (1);
|
||||
|
|
|
|||
|
|
@ -28,9 +28,28 @@ int arduino_shiftlights_update(SimDevice* this, SimData* simdata)
|
|||
int result = 1;
|
||||
|
||||
|
||||
serialdevice->u.shiftlightsdata.maxrpm = simdata->maxrpm;
|
||||
serialdevice->u.shiftlightsdata.rpm = simdata->rpms;
|
||||
slogt("Updating arduino device rpms to %i", serialdevice->u.shiftlightsdata.rpm);
|
||||
int num_avail_leds = 6;
|
||||
int rpm = simdata->rpms;
|
||||
int maxrpm = simdata->maxrpm;
|
||||
int litleds = 0;
|
||||
if(rpm > 0 && maxrpm > 0)
|
||||
{
|
||||
int rpmmargin = ceil(.05*maxrpm);
|
||||
int rpminterval = (maxrpm-rpmmargin) / (num_avail_leds);
|
||||
|
||||
|
||||
for (int l = 1; l <= (num_avail_leds); l++)
|
||||
{
|
||||
if(rpm >= (rpminterval * l))
|
||||
{
|
||||
litleds = l;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
serialdevice->u.shiftlightsdata.litleds = litleds;
|
||||
//serialdevice->u.shiftlightsdata.rpm = simdata->rpms;
|
||||
slogt("Updating arduino device lights to %i", serialdevice->u.shiftlightsdata.litleds);
|
||||
// we can add configs to set all the colors
|
||||
// i can move the size to the initialization since it should not change
|
||||
size_t size = sizeof(ShiftLightsData);
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ void datacheckcallback(uv_timer_t* handle)
|
|||
simdata->tyrediameter[1] = -1;
|
||||
simdata->tyrediameter[2] = -1;
|
||||
simdata->tyrediameter[3] = -1;
|
||||
uv_timer_start(&datamaptimer, shmdatamapcallback, 2000, 125);
|
||||
uv_timer_start(&datamaptimer, shmdatamapcallback, 2000, 16);
|
||||
uv_timer_stop(handle);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue