LED sequences for bot

Dependencies:   mbed C12832_lcd LCD_fonts NeoStrip

main.cpp

Committer:
slackerjacker
Date:
2021-05-20
Revision:
0:56f7b47bf357

File content as of revision 0:56f7b47bf357:

#include "mbed.h"
#include "NeoStrip.h"
#include "gt.h"
#include "C12832_lcd.h"
#include "Arial_9.h"
#include "Small_7.h"
 
 
#define N 17  //number of leds
#define PATTERNS 3
 
Serial pc(USBTX, USBRX);
NeoStrip strip(p25, N); // DIN PIN with number of LEDs
NeoStrip led1(p25, 0); 
 
////////////////////////////////////
//////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 z = 0xFFFFFF;
int hueToRGB(float h);

int array[]={0xFF0000,0xFF8000,0xFFFF00,0x00FF44,0x00BFFF,0x0F0082,0x8000B4};
    
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;
 
//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()
{
  // 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.clear();
   strip.write();   
 
    pc.printf("1 - Bootup\n\r");
    pc.printf("2 - Bootdown\n\r");
    pc.printf("3 - Clear\n\r");
    pc.printf("4 - Happy\n\r");
    pc.printf("5 - Sad\n\r");
    pc.printf("6 - Idle\n\r");    
    pc.printf("7 - Understood\n\r"); 
    while(true)
    {
    if (pc.readable()) 
        {
        switch(pc.getc()) 
              {
              case '1'://bootup sequence
                   
                    play_led_1ms_timer= 0; 
                do
                    {
                    LCD.cls();
                    LCD.claim(stdout);     
                    LCD.locate(10,0);
                    LCD.set_font((unsigned char*) Arial_9);
                    printf("Bot bootup");
                    LCD.copy_to_lcd();
                    LCD.set_font((unsigned char*) Small_7);
                    strip.clear();
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(0,red);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(1,orange);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(2,yellow);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(3,green);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(4,blue);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(5,indigo);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(6,violet);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(7,indigo);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(8,blue);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(9,green);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(10,yellow);
                    strip.write();
                    wait_ms(100);
 
                    strip.setPixel(11,orange);
                    strip.write();
                    wait_ms(100);
                    
                    }
                    
                while(play_led_1ms_timer < 1900);
                    

                    
                    break;
                    
                case '2'://bootdown sequence
                        
                        play_led_1ms_timer= 0;
        
                do
                {                         
                    LCD.cls();
                    LCD.claim(stdout);     
                    LCD.locate(10,0);
                    LCD.set_font((unsigned char*) Arial_9);
                    printf("Shutting down");
                    LCD.copy_to_lcd();
                    LCD.set_font((unsigned char*) Small_7);
                    
 
                    strip.setPixel(11,orange);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(10,yellow);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(9,green);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(8,blue);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(7,indigo);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(6,violet);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(5,indigo);
                    strip.write();
                    wait_ms(1);
 
                    strip.setPixel(4,blue);
                    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(1,orange);
                    strip.write();
                    wait_ms(1);
 
                    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(200);
                        }
                }     
                  
                while(play_led_1ms_timer < 3000);  
                                  
                break;
            
                case '3'://clear
                    LCD.cls();
                    strip.clear();
                    strip.write();
    
                break;
                
                case '4': //happy
 

 
                    //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
                {
                    LCD.cls();
                    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);
                    
                   
                        for (int i = 0; i < N; i++)
                            {
                            strip.setPixel(i,white);
                            strip.write();
                            wait_ms(30);
                            }
 
                        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;
            
                    case '5':
                            play_led_1ms_timer= 0;
                    do
                    {
                    LCD.cls();
                    LCD.claim(stdout);     
                    LCD.locate(10,0);
                    LCD.set_font((unsigned char*) Arial_9);
                    printf("Sad Bot");
                    LCD.copy_to_lcd();
                    LCD.set_font((unsigned char*) Small_7);
                    
                        for (float j = 0; j < 0.25; 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(3);
                                }   
                            }
                    }
                        
                        while(play_led_1ms_timer < 2000); 
                                     
 
                    
                     break; 
                     
                    case '6':  
                            play_led_1ms_timer= 0;                    
                    do        
                    {
                    LCD.cls();
                    LCD.claim(stdout);     
                    LCD.locate(10,0);
                    LCD.set_font((unsigned char*) Arial_9);
                    printf("Idle bot");
                    LCD.copy_to_lcd();
                    LCD.set_font((unsigned char*) Small_7);
                    
                        for (int i=0;i<7;i++)
                            {
                            wait_ms(250);    
                            for (int Q = 0; Q<12; Q++) 
                                {   
                                strip.setPixel(Q,array[i]);
                                strip.write();
                                wait_ms(1);
                                }
                            }                                
                    }
                        while(play_led_1ms_timer < 3000);
                                     
                    



                    break;  

                    case '7':
                            play_led_1ms_timer= 0;
                    do
                    {
                    LCD.cls();    
                    LCD.claim(stdout);     
                    LCD.locate(10,0);
                    LCD.set_font((unsigned char*) Arial_9);
                    printf("Affirmative");
                    LCD.copy_to_lcd();
                    LCD.set_font((unsigned char*) Small_7);
                    
                        for (float j = 0; j < 0.25; j=j+0.01) //float jack float i :-) , i = i+0.01
                            {
                            //pc.printf("%f ",j); debug
                            strip.setBrightness(j);
                            
                            //need to write to pixel to change brightness
                            for (int i = 17; i > 0; i--)
                                {   
                                strip.setPixel(i,green);
                                strip.write();
                                wait_ms(3);
                                }   
                            }
                    }
                        
                        while(play_led_1ms_timer < 2000); 
                                     
 
                    
                     break;     
                }//End of switch
                
         }//end of if readable
         
    }//end of while(1)
    
}//end of main()