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 APA102b Ping SLCD
Revision 2:5a9388a7ac62, committed 2015-04-06
- Comitter:
- rosienej
- Date:
- Mon Apr 06 13:57:50 2015 +0000
- Parent:
- 1:2d02f55d47c5
- Child:
- 3:2788a714b18e
- Commit message:
- Demo of a different LED display geometery
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Mar 14 20:45:48 2015 +0000
+++ b/main.cpp Mon Apr 06 13:57:50 2015 +0000
@@ -71,6 +71,50 @@
unsigned int Pixel;
unsigned int Pixels[N];
+ float hue,sat,ints;
+
+ const int NumberOfRays = 19;
+
+
+ float RayHues[19] = // hues are 0 to 360, http://en.wikipedia.org/wiki/HSL_and_HSV
+ {0.0,19.0,38.0,57.0,76.0,95.0,114.0,
+ 133.0,152.0,171.0,190.0,209.0,228.0,
+ 247.0,266.0,285.0,304.0,323.0,342.0};
+
+ float RaySats[19] = // hues are 0 to 360, http://en.wikipedia.org/wiki/HSL_and_HSV
+ {0.8,0.8,0.8,0.8,0.8,0.8,0.8,
+ 0.8,0.8,0.8,0.8,0.8,0.8,0.8,
+ 0.8,0.8,0.8,0.8,0.8};
+
+ float RayInts[19] = // hues are 0 to 360, http://en.wikipedia.org/wiki/HSL_and_HSV
+ {0.8,0.8,0.8,0.8,0.8,0.8,0.8,
+ 0.8,0.8,0.8,0.8,0.8,0.8,0.8,
+ 0.8,0.8,0.8,0.8,0.8};
+
+ int RayLengths[19] = {3, 4, 5, 4, 2, 5, 4, 2, 4,5,3,4,3,2,2,3,2,4,5};
+
+ int Rays[19][5] = {
+ {1 ,20,39, 0, 0}, //3
+ {2 ,21,40,53, 0}, //4
+ {3 ,22,41,54,64}, //5
+ {4 ,23,42,55, 0}, //4
+ {5 ,24, 0, 0, 0}, //2
+ {6 ,25,43,56,65}, //5
+ {7 ,26,44,57, 0}, //4
+ {8 ,27, 0, 0, 0}, //2
+ {9 ,28,45,58, 0}, //4
+ {10,29,46,59,66}, //5
+ {11,30,47, 0, 0}, //3
+ {12,31,48,60, 0}, //4
+ {13,32,49, 0, 0}, //3
+ {14,33, 0, 0, 0}, //2
+ {15,34, 0, 0, 0}, //2
+ {16,35,50, 0, 0}, //3
+ {17,36, 0, 0, 0}, //2
+ {18,37,51,61,0}, //4
+ {19,38,52,62,63}}; //5
+
+
int colors=0x000000;
LEDs.SetBuffer(Pixels,1,N, N,0, false,false);
@@ -80,18 +124,25 @@
range = ping.Read_cm();
- for(int i=0;i<N;i++)
+ for(int i=0;i<NumberOfRays;i++)
{
- hsi2rgb(1.0*(i+colors), 0.8, 0.8,rgb);
- r = rgb[0];
- g = rgb[1];
- b = rgb[2];
-
- Pixel=LEDs.IRGB(7,r,g,b);
- Pixels[i]=Pixel;
-
+ for(int j=0;j<RayLengths[i];j++)
+ {
+ for(int k=0;k<j;k++)
+ {
+ hue = RayHues[i];
+ sat = RaySats[i];
+ ints = RayInts[i];
+ hsi2rgb(hue, sat, ints,rgb);
+ r = rgb[0];
+ g = rgb[1];
+ b = rgb[2];
+
+ Pixel=LEDs.IRGB(7,r,g,b);
+ Pixels[Rays[i][k]-1]=Pixel; // arrays in C++ start at zero. Need to subtract 1.
+ }
}
-
+ }
LEDs.Repaint();
colors+=range/10;
}