essai de commande RGB

Dependencies:   mbed-src

Fork of PwmOut_HelloWorld_WIZwiki-W7500 by WIZnet

main.cpp

Committer:
Fo170
Date:
2016-05-15
Revision:
4:8f19603751cc
Parent:
3:c97f8e12e04c

File content as of revision 4:8f19603751cc:

#include "mbed.h"
#if defined(TARGET_WIZwiki_W7500)
Serial pc(USBTX, USBRX); // tx, rx
/* W7500
LED1 = LED_RED   = LEDR = PC_8
LED2 = LED_GREEN = LEDG = PC_9
LED3 = LED_BLUE  = LEDB = PC_5
LED4 = LED_BLUE
*/
DigitalOut red(LED_RED);
DigitalOut green(LED_GREEN);
DigitalOut blue(LED_BLUE);
#endif

#define LED_ON   0
#define LED_OFF  1

#define _WHITE_   0xFFFFFF //9
#define _PURPLE_  0xFF00FF //7
#define _BLUE_    0x0000FF //6
#define _CYAN_    0x00FFFF //55
#define _GREEN_   0x00FF00 //5
#define _YELLOW_  0xFFFF00 //4
#define _ORANGE_  0x10FF00 //3
#define _RED_     0xFF0000 //2
#define _BLACK_   0x000000 //0

Ticker RGB_led_ticker;

int j_color = 0;
int r_value = 0;
int g_value = 0;
int b_value = 0;

void RGB_led() 
{
    ++j_color;
    if(j_color >= 256) j_color = 0;
    
    if(r_value <= j_color) red = LED_ON;
    else red = LED_OFF;
    
    if(g_value <= j_color) green = LED_ON;
    else green = LED_OFF;
    
    if(b_value <= j_color) blue = LED_ON;
    else blue = LED_OFF;
}

void RGB_COLOR(int r, int g, int b)
{
 r_value = 255 - r;
 g_value = 255 - g;
 b_value = 255 - b;
 /*
 if(r_value<0)   r = 0;
 if(r_value>255) r = 255;
 
 if(g_value<0)   g = 0;
 if(g_value>255) g = 255;
 
 if(b_value<0)   b = 0;
 if(b_value>255) b = 255;
 */
}

void init_rgb_color(void)
{
  RGB_led_ticker.attach(&RGB_led, 0.01);  
}

void COLOR(int c)
{
 switch(c)
 {
  case _WHITE_:
  //red = LED_ON, green = LED_ON, blue = LED_ON;
  RGB_COLOR(255, 255, 255);
  break;
  
  case _PURPLE_:
  //red = LED_ON, green = LED_OFF, blue = LED_ON;
  RGB_COLOR(255, 0, 255);
  break;
  
  case _BLUE_:
  //red = LED_OFF, green = LED_OFF, blue = LED_ON;
  RGB_COLOR(0, 0, 255);
  break;
  
  case _CYAN_:
  //red = LED_OFF, green = LED_ON, blue = LED_ON;
  RGB_COLOR(0, 255, 255);
  break;
  
  case _GREEN_:
  //red = LED_OFF, green = LED_ON, blue = LED_OFF;
  RGB_COLOR(0, 255, 0);
  break;
  
  case _YELLOW_:
  //red = LED_ON, green = LED_ON, blue = LED_OFF;
  RGB_COLOR(255, 255, 0);
  break;
  /*
  case _ORANGE_:
  RGB_COLOR(80, 80, 0);
  break;
  */
  case _RED_:
  //red = LED_ON, green = LED_OFF, blue = LED_OFF;
  RGB_COLOR(255, 0, 0);
  break;
  
  case _BLACK_:
  default:
  //red = LED_OFF, green = LED_OFF, blue = LED_OFF; 
  RGB_COLOR(0, 0, 0);  
 }   
}

int i;

int main() 
{
    // Serial port configuration (valeurs par defaut) : 9600 baud, 8-bit data, no parity, stop bit
 pc.baud(9600);
 pc.format(8, SerialBase::None, 1);
 
    pc.printf("\n\rHello World!\n\r");
    init_rgb_color();
    /*
    while(1000) 
    {
        for (i=1; i<7; i++)
        {
            red = i & 1;
            blue = i & 2;
            green = i & 4;
            wait(0.2);
        }
    }
    */
  COLOR(_BLACK_);
  pc.printf("\n\r_BLACK_\n\r");
 wait(5.0);
  COLOR(_RED_);
  pc.printf("\n\r_RED_\n\r");
 wait(5.0);
  /*COLOR(_ORANGE_);
  pc.printf("\n\r_ORANGE_\n\r");*/
 wait(5.0);
  COLOR(_YELLOW_);
  pc.printf("\n\r_YELLOW_\n\r");
 wait(5.0);
  COLOR(_GREEN_);
  pc.printf("\n\r_GREEN_\n\r");
 wait(5.0);
  COLOR(_CYAN_);
  pc.printf("\n\r_CYAN_\n\r");
 wait(5.0);
  COLOR(_BLUE_);
  pc.printf("\n\r_BLUE_\n\r");
 wait(5.0);
  COLOR(_PURPLE_);
  pc.printf("\n\rH_PURPLE_\n\r");
 wait(5.0);
  COLOR(_WHITE_);
  pc.printf("\n\r_WHITE_\n\r");
 wait(5.0);
}