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 C12832_lcd LCD_fonts NeoStrip
Revision 3:d8620e883b77, committed 2021-04-20
- Comitter:
- jasonberry
- Date:
- Tue Apr 20 13:11:03 2021 +0000
- Parent:
- 2:a04589b1a088
- Commit message:
- cleaned up j
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Tue Apr 20 11:02:36 2021 +0000
+++ b/main.cpp Tue Apr 20 13:11:03 2021 +0000
@@ -14,60 +14,62 @@
#define N 12 //number of leds
-
-
#define PATTERNS 3
-Serial pc(USBTX, USBRX);
-//int hueToRGB(float h);
-//void pattern0();
-//void pattern1();
-//void pattern2();
-
-// array of function pointers to the various patterns
-//void (*patterns[])(void) = {&pattern0, &pattern1, &pattern2};
-
+Serial pc(USBTX, USBRX);
NeoStrip strip(p25, N); // DIN PIN with number of LEDs
NeoStrip led1(p25, 0);
-C12832_LCD LCD("LCD");
-//NeoStrip leds[] = {(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)};
+
+////////////////////////////////////
+//////note colours value below//////
+////////////////////////////////////
+
+float bright = 0.20; // 20% is plenty for indoor use
+int red = 0xFF0000;
+int orange = 0xFF8000;
+int yellow = 0xFFFF00;
+int green = 0x00FF44;
+int blue = 0x00BFFF;
+int indigo = 0x0F0082;
+int violet = 0x8000B4;
+int white = 0xFFFFFF;
+int i = 0;
+int hueToRGB(float h);
-//DigitalIn b1(p20); // brightness up
-//DigitalIn b2(p19); // brightness down
-//DigitalIn b3(p22); // next pattern
+
+//C12832_LCD LCD("LCD");
+//C12832_LCD lcd(p5, p7, p6, p8, p11); //jtb
+
+//variable that hold 1ms timer count, this can used in main to time stuff
+int play_led_1ms_timer = 0;
+
+//set up a ticker funtion
+//////////////////////////////////////////////////////////////////////////
+
+Ticker play_led_1ms_ticker;
-// timer used for debugging
-Timer timer;
+//this funtion runs every ms and increments lay_led_1ms_timer by 1
+void play_led_1ms(void)
+{
+play_led_1ms_timer = play_led_1ms_timer+1;
+
+//stop overflow
+if(play_led_1ms_timer> 1000000)
+ {
+ play_led_1ms_timer = 0;
+ }
+}
int main()
{
-// b1.mode(PullDown);
-// b2.mode(PullDown);
-// b3.mode(PullDown);
-
- //int pattern = 0;
-
- //bool b3o = b3; // old copy of button 3 to poll for changes
- //int p = 0;
-
- ////////////////////////////////////
- //////note colours value below//////
- ////////////////////////////////////
-
- float bright = 0.05; // 20% is plenty for indoor use
- int red = 0xFF0000;
- int orange = 0xFF8000;
- int yellow = 0xFFFF00;
- int green = 0x00FF44;
- int blue = 0x00BFFF;
- int indigo = 0x0F0082;
- int violet = 0x8000B4;
- int white = 0xFFFFFF;
- int i = 0;
- int hueToRGB(float h);
+ // set up a function to play every 1.5 sec
+ play_led_1ms_ticker.attach(&play_led_1ms, 0.001);
+
+/////////////////////////////////////////////////////////////////////////////
- strip.setBrightness(bright); // set default brightness
-
+ strip.setBrightness(bright); // set default brightness
+ strip.clear();
+ strip.write();
pc.printf("1 - Bootup\n\r");
pc.printf("2 - Bootdown\n\r");
@@ -76,416 +78,206 @@
pc.printf("5 - Sad\n\r");
while(true)
+ {
+ if (pc.readable())
+ {
+ switch(pc.getc())
+ {
+ case '1'://bootup sequence
+
+ //LCD.cls();
+ strip.clear();
+ strip.write();
+ wait_ms(200);
- {if (pc.readable()) {
- switch(pc.getc()) {
- case '1'://bootup sequence
-//strip.setPixels(0, N, test_img);
- LCD.cls();
- {
- strip.clear();
- strip.write();
- wait_ms(200);
- strip.setPixel(0,red);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(1,orange);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(2,yellow);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(3,green);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(4,blue);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(5,indigo);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(6,violet);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(7,indigo);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(8,blue);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(9,green);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(10,yellow);
- strip.write();
- wait_ms(200);
-
- strip.setPixel(11,orange);
- strip.write();
- wait_ms(200);
-}
-
+ strip.setPixel(0,red);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(1,orange);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(2,yellow);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(3,green);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(4,blue);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(5,indigo);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(6,violet);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(7,indigo);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(8,blue);
+ strip.write();
+ wait_ms(200);
-
- break;
- case '2'://bootdown sequence
-
- LCD.cls();
-
- strip.setPixel(11,orange);
- strip.write();
- wait_ms(1);
+ strip.setPixel(9,green);
+ strip.write();
+ wait_ms(200);
+
+ strip.setPixel(10,yellow);
+ strip.write();
+ wait_ms(200);
-
-
- strip.setPixel(10,yellow);
- strip.write();
- wait_ms(1);
-
-
- strip.setPixel(9,green);
- strip.write();
- wait_ms(1);
+ strip.setPixel(11,orange);
+ strip.write();
+ wait_ms(200);
+
+ break;
+
+ case '2'://bootdown sequence
+
+ //LCD.cls();
-
- strip.setPixel(8,blue);
- strip.write();
- wait_ms(1);
+ strip.setPixel(11,orange);
+ strip.write();
+ wait_ms(1);
-
- strip.setPixel(7,indigo);
- strip.write();
- wait_ms(1);
+ strip.setPixel(10,yellow);
+ strip.write();
+ wait_ms(1);
- strip.setPixel(6,violet);
- strip.write();
- wait_ms(1);
+ strip.setPixel(9,green);
+ strip.write();
+ wait_ms(1);
- strip.setPixel(5,indigo);
- strip.write();
- wait_ms(1);
+ strip.setPixel(8,blue);
+ strip.write();
+ wait_ms(1);
- strip.setPixel(4,blue);
- strip.write();
- wait_ms(1);
+ strip.setPixel(7,indigo);
+ strip.write();
+ wait_ms(1);
- strip.setPixel(3,green);
- strip.write();
- wait_ms(1);
-
- strip.setPixel(2,yellow);
- strip.write();
- wait_ms(1);
+ strip.setPixel(6,violet);
+ strip.write();
+ wait_ms(1);
- strip.setPixel(1,orange);
- strip.write();
- wait_ms(1);
+ strip.setPixel(5,indigo);
+ strip.write();
+ wait_ms(1);
- strip.setPixel(0,red);
- strip.write();
- wait_ms(1);
+ strip.setPixel(4,blue);
+ strip.write();
+ wait_ms(1);
-{
- for (int i = 11; i >= 0; i--)
- {strip.setPixel(i,0,0,0);
- strip.write();
- wait_ms(500);
- }
-}
-
-
-
-
+ strip.setPixel(3,green);
+ strip.write();
+ wait_ms(1);
- break;
- case '3'://clear
- LCD.cls();
- strip.clear();
- strip.write();
-
- break;
- case '4':
+ strip.setPixel(2,yellow);
+ strip.write();
+ wait_ms(1);
- LCD.claim(stdout);
- LCD.locate(10,0);
- LCD.set_font((unsigned char*) Arial_9);
- printf("Happy Bot");
- LCD.copy_to_lcd();
- LCD.set_font((unsigned char*) Small_7);
-
+ strip.setPixel(1,orange);
+ strip.write();
+ wait_ms(1);
-while(true)
-{
-{
- for (int i = 0; i < N; i++)
- {
- strip.setPixel(i,white);
- strip.write();
- wait_ms(15);
- }
+ strip.setPixel(0,red);
+ strip.write();
+ wait_ms(1);
+
+ for (int i = 11; i >= 0; i--)
+ {
+ strip.setPixel(i,0,0,0);
+ strip.write();
+ wait_ms(500);
+ }
+
+ break;
+
+ case '3'://clear
+ //LCD.cls();
+ strip.clear();
+ strip.write();
+
+ break;
+
+ case '4':
-//if(white)
-{
- for (int i = 0; i < N; i++)
- {
- strip.setPixel(i,yellow);
- strip.write();
- wait_ms(50);
- }
-//else(yellow)
-{
- for (int i =0; i < N; i++)
- {
- strip.setPixel(i,orange);
- strip.write();
- wait_ms(50);
- }
+ //LCD.claim(stdout);
+ //LCD.locate(10,0);
+ //LCD.set_font((unsigned char*) Arial_9);
+ //printf("Happy Bot");
+ //LCD.copy_to_lcd();
+ //LCD.set_font((unsigned char*) Small_7);
-}
-//return 1;
-
-
-
-
-//for (int i = 0; i < 4; i++)
-//strip.clear();
-//wait_ms(100);
-
+ //reset timer value to 0
+ //////////////////////////////////////
+ play_led_1ms_timer= 0;
+
+ //repeat do while for 2000 ms see line 247 for while part
+ // this code will repeat untill play_led_1ms_timer > 2000
+ do
+ {
+ for (int i = 0; i < N; i++)
+ {
+ strip.setPixel(i,white);
+ strip.write();
+ wait_ms(30);
+ }
- break;
-
- case '5':
-{
- for (int i = 0; i < 12; i++)
- strip.setPixel(i,blue);
- strip.write();
- wait_ms(1);
- }
-
-{
- for (int i = 0; i<0.2; i+0.01)
- strip.setBrightness(bright+i);
- wait_ms(20);
- }
-
-
-
-
-
+ for (int i = 0; i < N; i++)
+ {
+ strip.setPixel(i,yellow);
+ strip.write();
+ wait_ms(30);
+ }
+
+ for (int i =0; i < N; i++)
+ {
+ strip.setPixel(i,orange);
+ strip.write();
+ wait_ms(30);
+ }
+ }
+ while(play_led_1ms_timer < 2000); //timer value you want here i.e 2000 2s, 3500 3.5s etc
+
+ strip.clear();
+ strip.write();
+
+ break;
- break;
-
-
- // case '5':
-
-{
- static float dh = 360.0 / N;
- static float x = 0;
-
- for (int i = 0; i < N; i++)
- strip.setPixel(i, hueToRGB((dh * i) - x));
-
- x += 1;
- if (x > 360)
- x = 0;
-}
-
-// break;
-//led1 = 1;
-//wait(0.5);
-//strip.write();
-//led1 = !1;
-//wait(0.5);
-//strip.write();
-
-
- // PwmOut strip();
- // strip.setPixel.write(0,red,brightness));
-
-
-
-
- // wait_ms(30);
- // brightness = brightness + fadeAmount;
-
- //if((int)brightness == 1.0)
- // brightness = 0;
- //{
-
-
-
-
-//}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ case '5':
- /*while (true)
- {
- timer.reset(); // use a timer to measure loop execution time for debugging purposes
- timer.start(); // for this application, the main loop takes approximately 3ms to run
-
- // button 1 increases brightness
- if(0) //(b1 && bright < 1)
- {
- bright += 0.01;
- if (bright > 1)
- bright = 1;
- strip.setBrightness(bright);
- }
-
- // button 2 decreases brightness
- if (0)//(b2 && bright > 0)
- {
- bright -= 0.01;
- if (bright < 0)
- bright = 0;
- strip.setBrightness(bright);
- }
-
- // button 3 changes the pattern, only do stuff when its state has changed
- if (0)//(b3 != b3o)
- {
- if (b3 && ++pattern == PATTERNS)
- pattern = 0;
- b3o = b3;
- }
-
- // run the pattern update function which sets the strip's pixels
- patterns[pattern]();
- strip.write();
-
- timer.stop();
- // print loop time if b3 is pressed
- if (b3)
- printf("Loop Time: %dus\n", timer.read_us());
-
- wait_ms(10);
- }
-}*/
-
-// pattern0 displays a static image
-/*void pattern0()
-{
- strip.setPixels(0, N, gt_img);
-}
-
-// display a shifting rainbow, all colors have maximum
-// saturation and value, with evenly spaced hue
-void pattern1()
-{
- static float dh = 360.0 / N;
- static float x = 0;
-
- for (int i = 0; i < N; i++)
- strip.setPixel(i, hueToRGB((dh * i) - x));
-
- x += 1;
- if (x > 360)
- x = 0;
-}
-
-// display a shifting gradient between red and blue
-void pattern2()
-{
- // offset for each pixel to allow the pattern to move
- static float x = 0;
-
- float r, b, y;
-
- for (int i = 0; i < N; i++)
- {
- // y is a scaled position between 0 (red) and 1.0 (blue)
- y = 1.0 * i / (N - 1) + x;
- if (y > 1)
- y -= 1;
-
- // if on the left half, red is decreasing and blue is increasng
- if (y < 0.5)
- {
- b = 2 * y;
- r = 1 - b;
- }
-
- // else red is increasing and blue is decreasing
- else
- {
- r = 2 * (y - 0.5);
- b = 1 - r;
- }
-
- // scale to integers and set the pixel
- strip.setPixel(i, (uint8_t)(r * 255), 0, (uint8_t)(b * 200));
- }
-
- x += 0.003;
- if (x > 1)
- x = 0;
-}
-
-// Converts HSV to RGB with the given hue, assuming
-// maximum saturation and value
-int hueToRGB(float h)
-{
- // lots of floating point magic from the internet and scratching my head
- float r, g, b;
- if (h > 360)
- h -= 360;
- if (h < 0)
- h += 360;
- int i = (int)(h / 60.0);
- float f = (h / 60.0) - i;
- float q = 1 - f;
-
- switch (i % 6)
- {
- case 0: r = 1; g = f; b = 0; break;
- case 1: r = q; g = 1; b = 0; break;
- case 2: r = 0; g = 1; b = f; break;
- case 3: r = 0; g = q; b = 1; break;
- case 4: r = f; g = 0; b = 1; break;
- case 5: r = 1; g = 0; b = q; break;
- default: r = 0; g = 0; b = 0; break;
- }
-
- // scale to integers and return the packed value
- uint8_t R = (uint8_t)(r * 255);
- uint8_t G = (uint8_t)(g * 255);
- uint8_t B = (uint8_t)(b * 255);
-
- return (R << 16) | (G << 8) | B;
-}
-*/}}
-}}}}}
+ for (float j = 0; j < 0.3; j=j+0.01) //float jack float i :-) , i = i+0.01
+ {
+ //pc.printf("%f ",j); debug
+ strip.setBrightness(j);
+
+ //need to write to pixcel to change brightness
+ for (int i = 0; i < 12; i++)
+ {
+ strip.setPixel(i,blue);
+ strip.write();
+ wait_ms(1);
+ }
+ wait_ms(200);
+ }
+
+ strip.clear();
+ strip.write();
+
+ break;
+ }//End of switch
+
+ }//end of if readable
+
+ }//end of while(1)
+
+}//end of main()