Version:0.9 StartHTML:0000000105 EndHTML:0000127650 StartFragment:0000001499 EndFragment:0000127634
#define Version "10-01-2016"
//usage de strtok pour decortique rla commande led RGB
// utilisation de la POV pour afficher les couleurs de 8 leds RGB sans sortie (hardware) PWM !
// 4mS maxi par couleur 24mS / led 192 mS pour les 8 leds
// Attention PWM basé sur rapport des Duree Timer2 / Duree Timer4
// il est IMPERATIF que Timer4 soit toujours > Timer2
// dernier test à Timer1 max = 250*4*4*4/32=> 0.5mS @ 32Mhz
// Commande individuelle ou collective sur les 8 leds carte Easyled port B
#define Source "18F45K22_8leds_RGB_TMR2_500uS_160110.c"
// MCU: PIC18F45k22
// Dev.Board: MikroE Ready For PIC avec PIC18F45K22
// Docu:
#define Project "18F45K22_8leds_RGB_2016.mcppi"
//#define With_TMR1
#define Carte_8leds_RGB
#define Carte_EasyLeds
// #define DEBUGGING
// #define OSCILLATEUR_INTERNE
// #define TEST_FOSC
#define With_UART1
#define PROCESSOR 18F45k22
#define POWER_SUPPLY_5V
#ifdef OSCILLATEUR_INTERNE
#define FOSC 16.0 // MHz
#define BAUD 19200 // UART1
// P18F45K22_FOSCinterne_No_PLL.cfgsch
#else
#define FOSC 32.0 // MHz avec Q=16Mhz
#define BAUD 38400 // UART1
// P18F47J53_Q16MHz_48MHz_w_PLL.cfgsch
#endif
#include "built_in.h" // for Hi Lo ..etc
#define CLS 12
#define CR 13
#define LF 10
#define TAB 9
#define BACK 8
#define Separator 0x20 // space
/* EasyLed Board sur connecteur port B
sbit LED0 at LATB0_bit;
sbit LED1 at LATB1_bit;
sbit LED2 at LATB2_bit;
sbit LED3 at LATB3_bit;
sbit LED4 at LATB4_bit;
sbit LED5 at LATB5_bit;
sbit LED6 at LATB6_bit;
sbit LED7 at LATB7_bit;
*/
// ac:Board_8Led_RGB
// ac:Schem_8leds_RGB
// carte 8 lED RGB V2 KEYES KB45041 MiniInthebox
// selection couleur
/*
sbit SetColorR at LATC0_bit;
sbit SetColorV at LATC1_bit;
sbit SetColorB at LATC2_bit;
// selection de Led RGB
sbit RGB_Led0 at LATD0_bit;
sbit RGB_Led1 at LATD1_bit;
sbit RGB_Led2 at LATD2_bit;
sbit RGB_Led3 at LATD3_bit;
sbit RGB_Led4 at LATD4_bit;
sbit RGB_Led5 at LATD5_bit;
sbit RGB_Led6 at LATD6_bit;
sbit RGB_Led7 at LATD7_bit;
*/
#define EasyLeds LATB
#define Leds_RGB LATD
unsigned char CRam1[80];
char TEXTE[128];
char *txt;
/*
char IntValue[12];
char txt0[] = " Ready for PIC ";
char txt1[] = "18F45K22 proto ";
char txt2[] = "with bootloader ";
char txt3[] = "Test 8 leds RGB ";
char txt4[] = "Mesure ";
*/
const char Colors[][6]={"Rouge","Vert ","Bleu ","..?.."};
volatile unsigned int Flag_Timer0;
volatile unsigned int Cpt0;
volatile unsigned int Flag_Timer1;
volatile unsigned int Cpt1;
unsigned int i,j,k,l; // Loop variable
unsigned int M;
unsigned int EA0,EA1,EA2 ; // 3 mesures ANA => 3 consignes R,G,B
unsigned int Table_EA[8];
unsigned int Nbval;
int Flag_First_Run=0;
// pour test FOSC
unsigned long Freq;
float f1;
unsigned char Cde,Pos,Etat_PORTB; // traitement Rx UART pour 8 EasyLeds
unsigned char LedNum; // Easyleds card
//-- RGB card ---
unsigned char c,cc,cx;
static unsigned char RGB_Led[8][3]; // tableau des 8 leds avec chacune ses 3 valeurs de couleur R,G,B
unsigned char Cde_RGB_Leds[8]={0xFE,0xFD, 0xFB,0xF7,0xEF, 0xDF, 0xBF,0x7F};
unsigned char Cde_RGB_Colors[3]={6,5,3};
volatile char RGB_Led_Now;
volatile char Cpt_RGB_Leds; // 0 à 7
volatile char Cpt_Color, SetColor; // 0 à 2 nulmero de couleur 0=R, 1=G , 2=B
unsigned int ValColor;
unsigned char ColorR,ColorV,ColorB;
#define MAXLEN1 128
unsigned char buffer1[MAXLEN1];
unsigned int Index1=0;
unsigned int i1=0;
unsigned int UART1_DataReady=0;
unsigned char c1=0;
unsigned char *p1;
void strConstRamCpy(char *dest, const char *source);
void Init_Timer4(void);
void Init_Timer1(void);
void Init_Timer2(unsigned char x);
void UART1_Write_CText(const char *txt1);
void CRLF1(void);
void RAZ_UART1(void);
void Init_Hardware(void);
void Liste_Table(void);
void LOAD_Table_RGB(void);
void Interrupts() iv 0x0008 ics ICS_AUTO
{
//UART1
#ifdef With_UART1
if((RC1IF_bit==1) && (RC1IE_bit==1))
{
c1 = RCREG1;
//UART_Write('*');
if(OERR1_bit)
{
CREN1_bit = 0;
CREN1_bit = 1;
}
if(FERR1_bit)
{
c1 = RCREG1;
//c1 = 0;
}
if (c1==13)
{
UART1_DataReady=1;
buffer1[i1]=0;
Index1=i1;
i1=0;
c1=0;
}
else
{
buffer1[i1]=c1;
Index1=i1;
i1++;
}
if (i1 >=MAXLEN1)
{
UART1_DataReady=2;
RC1IE_bit=0 ; //interdit IT Reception UART
buffer1[i1]=0;
Index1=i1;
i1=0;
c1=0;
}
}
#endif
// ==== IT Timer2 =============
if((TMR2IE_bit==1) && (TMR2IF_bit==1)) // TM2 maxi 250 => 8mS
{
LATD=0xFF; // Leds RGB sur port D
TMR2ON_bit=0;
TMR2IF_bit=0;
}
// ==== IT Timer4 =============
if((TMR4IE_bit==1) && (TMR4IF_bit==1)) // TMR4 calé à 8,128mS
{
RGB_Led_Now =(1<< Cpt_RGB_Leds);
//LATB=RGB_Led_Now; // EasyLeds
LATD = Cde_RGB_Leds[Cpt_RGB_Leds];
cx= PORTC & 0xF8 ;
SetColor=Cde_RGB_Colors[Cpt_Color];
LATC= cx + SetColor;
cc= RGB_Led[Cpt_RGB_Leds][Cpt_Color];
Init_Timer2(cc); // doit toujours se terminer AVANT la nouvelle interrupt Timer4
Cpt_Color++;
if (Cpt_Color >2) // every 8x3=24 mS, on change de led
{
Cpt_Color=0 ;
Cpt_RGB_Leds++;
if (Cpt_RGB_Leds>7) Cpt_RGB_Leds=0;
}
TMR4IF_bit=0; // Raz Flag
}
/* #ifdef With_TMR0
// ==== IT Timer0 =============
if((TMR0IE_bit==1) && (TMR0IF_bit==1))
{
#ifdef DEBUGGING
TXREG1='*';
#endif
Cpt0++;
if(Cpt0>NB_IT_TMR0)
{
Flag_Timer0=1;
TMR0IE_bit=0; // interdit interrupt
Cpt0=0;
TMR0ON_bit=0; // stop timer
}
// 1000msec at 48MHz et prescaler=256
TMR0H= 0x48; // hi 18661;
TMR0L =0xE5 ; // Lo 18661;
TMR0IF_bit=0; // Raz Flag
}
#endif
*/
/* #ifdef With_TMR1
// ==== IT Timer1 =============
if((TMR1IE_bit==1) && (TMR1IF_bit==1))
{
// TMR1IE_bit=0; // interdit interrupt
//Cpt1++;
//if (Cpt1>2)
if (Cpt_Color>2)
{
// TXREG1='$'; // pour debugging sur UART1
// Cpt1=0;
Cpt_Color=0;
Cpt_RGB_Leds++;
if (Cpt_RGB_Leds>7) Cpt_RGB_Leds=0;
}
Flag_Timer1=1;
// TMR1ON_bit=0; // stop timer
// 25mS at 48MHz 28036 => 6D84 prescaler =8
// TMR1H= 0x6D; // hi 28036;
// TMR1L =0x84 ; // Lo 28036;
// 24 mS at 16 Mhz
TMR1H= 0xA2; // hi 41535;
TMR1L =0x3F ; // Lo 41535;
TMR1IF_bit=0; // Raz Flag
}
#endif
*/
}
void Init_Timer2(unsigned char x)
{
T2CON=0;
//prescaler select=1x => 1/4
T2CKPS1_bit=0;
T2CKPS0_bit=1;
//prescaler select=11 => 1/16
//T2CKPS1_bit=1;
//T2CKPS0_bit=1;
// postscaleer =1/1 select=0000
// T2OUTPS3_bit=0;
// T2OUTPS2_bit=0;
// T2OUTPS1_bit=0;
// T2OUTPS0_bit=0;
// postscaleer =1/16 select=1111 8mS 250*16*4*4/8=> 8,0 mS @ 8Mhz
//T2OUTPS3_bit=1;
// T2OUTPS2_bit=1;
T2OUTPS1_bit=1;
T2OUTPS0_bit=1;
// postscaleer =1/8 select=0111 4mS 250*8*4*4/8=> 8,0 mS @ 8Mhz
//T2OUTPS3_bit=0;
// postscaleer =1/4 select=0111 250*4*4*4/32=> 0.5mS @ 32Mhz (ou 2mS at 8Mhz)
T2OUTPS3_bit=1;
T2OUTPS1_bit=0;
TMR2=0;
PR2= x ; // 250* postscaler * Prescaler * 4 / FOSC= 250*16*4*4/8=> 8,0 mS @ 8Mhz
TMR2IF_bit=0; // Reset Timer1 Flag
TMR2IE_bit=1; //disable interrupt TMR4
TMR2ON_bit=1;
}
void Init_Timer4()
{
T4CON=0;
// postscaleer =1/8 select=0111
// T4OUTPS3_bit=0;
// T4OUTPS2_bit=1;
// T4OUTPS1_bit=1;
// T4OUTPS0_bit=1;
// postscaleer =1/16 select=1111 8,128 mS 254*16*4*4/8=> 8,128 mS @ 8MHz
// T4OUTPS3_bit=1;
// postscaleer =1/8 select=0111 4,064 mS 254*8*4*4/8=> 4,064 mS @ 8MHz
//T4OUTPS3_bit=0;
//T4OUTPS2_bit=1;
// postscaleer =1/4 select=0011 2,032 mS 254*4*4*4/8=> 2,032 mS @ 8MHz
T4OUTPS3_bit=0;
T4OUTPS2_bit=0;
T4OUTPS1_bit=1;
T4OUTPS0_bit=1;
//prescaler select=1x => 1/16
// T4CKPS1_bit=1;
// T4CKPS0_bit=1;
//prescaler select=01 => 1/4
T4CKPS1_bit=0;
T4CKPS0_bit=1;
TMR4=0;
PR4= 254 ; // 254*16*4*4/8=> 8,128 mS @ 8MHz
TMR4IF_bit=0; // Reset Timer1 Flag
TMR4IE_bit=1; // Disable interrupt TMR4
TMR4ON_bit=1;
//IPR5.TMR4IP=1;
}
void Init_Timer1(void)
{
// T1CON.RD16=1 ; // Mode 16 bits
// T1RUN_bit=0 ; // Device clock is NOT derived from Timer1 oscillator
T1CKPS1_bit=1; // prescaler =1/8
T1CKPS0_bit=1;
T1OSCEN_bit=0; // Secondary Oscillator Disabled
T1CON.SYNC=0; // Synchro extern clock input with Fosc (ignore)
T1CON.TMR1CS1=0; // clock source= Fosc/4
T1CON.TMR1CS0=0;
T1CON.TMR1ON=0; // Stop timer1
// 25mS at 48MHz 28036 => 6D84 prescaler =8
// TMR1H= 0x6D; // hi 28036;
// TMR1L =0x84 ; // Lo 28036;
// 128mS at 16MHz 1535 05FF prescaler =8
// TMR1H= 0x05; // hi 1535;
// TMR1L =0xFF ; // Lo 1535;
// 24mS at 16MHz 41535 A23F prescaler =4
TMR1H= 0xA2; // hi 41535;
TMR1L =0x3F ; // Lo 41535;
//----
IPR1.TMR1IP=1; // set high priority for Timer1
RCON.IPEN = 1; // Enable Low & High interrupt priority model.
TMR1IF_bit=0; // raz flag interrupt
INTCON.PEIE = 0; // enable interupt Peripheriques
T1CON.TMR1ON=0; // desactive Timer1
PIE1.TMR1IE=0; // Disable Interrupt Timer1
GIE_bit = 0; // Desactive global interrupt
}
// --- Copie le texte depuis ROM vers RAM
void strConstRamCpy(char *dest, const char *source)
{
while(*source) *(dest++) = *(source++) ;
*dest = 0 ; // terminateur
}
void UART1_Write_CText(const char *txt1)
{
while (*txt1)
UART1_Write(*(txt1++));
}
void CRLF1()
{
UART1_Write(CR);
UART1_Write(LF);
}
void RAZ_UART1()
{
RC1IE_bit=0 ;
for (i1=0;i1<MAXLEN1;i1++) buffer1[i1]=0;
i1=0;
Index1=0;
c1=RCREG1;
c1=0;
UART1_DataReady=0;
RC1IE_bit=1 ;
}
void Init_Hardware()
{
PMD0=0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
PORTB = 0;
TRISB=0x00; // All Output for 8 leds
ANSELB=0;
LATB=0;
PORTA = 0xFF;
TRISA=0b11100111 ; // RA3,RA4 as output RA1,2,5=input RA0 =Analog
ANSELA=0x01; // RA0 as analog
ANSELC=0;
PORTC = 0xFF; // set PORTC all inoputs RC6 will be output for UART1
TRISC=0b10111000 ;
ANSELE=0;
TRISE=0;
PORTE=0xFF;
PORTD = 0; // pour LCD
TRISD=0;
LATD=0xFF;
ANSELD = 0; // Configure AN pins as digital I/O
HLVDCON.HLVDEN=0;
}
/*
void PrintHandler(char c) {
UART1_Write(c);
}
*/
void Liste_Table()
{ int i;
for (i=0;i<8;i++)
{
UART1_Write_CText("Lednum=");UART1_Write(i+48);
UART1_Write_CText(" Rouge=");ByteToStr(RGB_Led[i][0],CRam1); UART1_Write_Text(CRam1);
UART1_Write_CText(" Vert =");ByteToStr(RGB_Led[i][1],CRam1); UART1_Write_Text(CRam1);
UART1_Write_CText(" Bleu =");ByteToStr(RGB_Led[i][2],CRam1); UART1_Write_Text(CRam1);
CRLF1();
}
}
void LOAD_Table_RGB()
{
int i, Flag;
unsigned char cx;
UART1_Write_CText("Charge EEPROM PIC -> Table \r\n");
// if(GIE_bit==1) Flag=1;
// TMR4ON_bit=0;
// GIE_bit=0;
cx=0;
for (i=0;i<8;i++)
{
RGB_Led[i][0]=EEPROM_Read(cx);
RGB_Led[i][1]=EEPROM_Read(cx+1);
RGB_Led[i][2]=EEPROM_Read(cx+2);
cx=cx+3;
}
// check
Liste_Table() ;
// if(Flag==1)
// {
// TMR4ON_bit=0;
// GIE_bit=0;
// }
}
void main()
{
#ifdef OSCILLATEUR_INTERNE
// 16MHz
OSCCON.IRCF2=1;
OSCCON.IRCF1=1;
OSCCON.IRCF0=1;
/*
//8Mhz
OSCCON.IRCF2=1;
OSCCON.IRCF1=1;
OSCCON.IRCF0=0;
// 4Mhz
OSCCON.IRCF2=1;
OSCCON.IRCF1=0;
OSCCON.IRCF0=1;
*/
OSCCON.SCS1=1; // internal oscillator block
OSCCON.SCS0=0;
#ifndef DEBUGGING
//while(OSCCON.HFIOFS==0);
#endif
#endif
Init_Hardware();
txt=&TEXTE[0];
Cpt_Color=0;
LATC0_bit= 1; // choix de couleur R,G,ou B
LATC1_bit= 1;
LATC2_bit= 1;
LATD=0xFF; // choix de led 0 à 7
// Initalize USART1 (19200,8,N,1)
UART1_Init(38400);
while (UART1_Tx_Idle() == 1) UART1_Write(13); // vide le buffer
UART1_Write(CLS); // efface l'ecran
Delay_ms(500); // necessaire pour effacer l'ecran
CRLF1();
UART1_Write_CText("Mikroc Pro 6.620\r\n ");
UART1_Write_CText("version :"Version"\r\n");
UART1_Write_CText("Source :"Source"\r\n");
UART1_Write_CText("18F45K22 Ready for PIC\r\n ");
//UART1_Write_CText("LCD COG2x16 mode 4 bits sur PORTD \r\n");
UART1_Write_CText("UART1 via USB -> COM23 HTerminal\r\n ");
UART1_Write_CText("Cdes Clavier pour Couleur 8 Leds RGB \r\n\r\n");
#ifdef TEST_FOSC
Freq = Clock_kHz();
UART1_Write_CText(" Fosc =");
LongWordToStr(Freq, txt) ;
UART1_Write_Text(txt);
UART1_Write_CText(" KHz\r\n");
UART1_Write_CText(" Check delay de 5000mS entre # et @\r\n");
UART1_Write('#'); CRLF1();
Delay_ms(5000);
UART1_Write('@'); CRLF1();
#endif
UART1_Write_CText("init UART1 38400,8,N,1\r\n "); // at 32MHz
// optional, edition du tableau
LOAD_Table_RGB();
Init_Timer4(); // 8 ms rearmable
cc=250;
Cpt_Color=0;
Cpt_RGB_Leds=0;
LATB=0;
LATD=0xFF;
// gestion des interruptions
RCSTA1.SPEN = 1;
RCSTA1.RCEN=1;
RCSTA1.ADDEN=0;
RAZ_UART1(); //RAZ buffer1 et arme RX1 Interrupt
PEIE_bit = 1; // Enable peripheral interrupts
GIE_bit = 1; // Enable global Interrupts
// Main loop
do
{
if(UART1_DataReady==1)
{
GIE_bit=0; // on teste tout cela au calme, sans etre perturbé par les IT Timer4 ou Timer2
TMR4ON_bit=0;
UART1_Write_CText("Reception de : \r\n");
UART1_Write_Text(buffer1); CRLF1();
p1=0;
p1=strstr(buffer1,"LED"); // cde possible LED 0 à 7 =0 ou =1
if ( (p1>0) && (*(p1+4)=='=')) // buffer1 contient bien cette portion de texte
{
// on test le caractere apres le =
if ( (*(p1+3)>='0') && (*(p1+3)<'8') && ( (*(p1+5)=='0') || (*(p1+5)=='1') ))
{
Pos=*(p1+3)-'0';
Cde=*(p1+5)-'0';
// ancien Etat
Etat_PORTB=LATB;
UART1_Write(TAB);
strConstRamCpy(CRam1,"Pos= Cde= PortB= ");
*(CRam1+ 4)= Pos+48;
*(CRam1+10)= Cde+48;
if (Cde==0) LATB = Etat_PORTB & ~(1<<Pos); // (0xFF-(2^Pos)
if (Cde==1) LATB = Etat_PORTB | (1<<Pos) ; // (2^Pos);
// nouvel etat
Etat_PORTB=LATB;
ByteToHex(Etat_PORTB ,CRam1+18);
UART1_Write_Text(CRam1);
}
}
// autres test de commandes
p1=strstr(buffer1,"LEDs_OFF"); // cde possible LED 0 à 7 =0 ou =1
if (p1>0)
{ LATB=0;
Etat_PORTB=0;
}
p1=strstr(buffer1,"LEDs_ON"); // cde possible LED 0 à 7 =0 ou =1
if (p1>0)
{ LATB=0xFF;
Etat_PORTB=0xFF;
}
// *** Cdes Leds RGB
p1=strstr(buffer1,"RGB");
if (p1>0)
{
p1=strtok(p1,","); // 1er appel pour detection virgule
UART1_Write_Text(p1);CRLF1();
c=*(p1+3);
UART1_Write_CText("Led # ");UART1_Write(c);
c=c-48; // numero de Led 0 à 7
CRLF1();
i=0;
do
{
p1=strtok(0, ","); // detection des separateurs (virgule) suivants
if (p1!=0)
{
//UART1_Write_Text(p1);
UART1_Write_CText(" Parametre #");
UART1_Write(i+48); UART1_Write(TAB);
j=1;
for(k=0;k<strlen(p1);k++)
{
if (isdigit(*(p1+k))==0)
{
j=0; break;
}
}
if (j==1) // c'est bien un nombre !
{
ValColor=atoi(p1);
if (ValColor>253) ValColor=253;
if (ValColor<1) ValColor=1;
if ((c>=0) && (c<8))
{
RGB_Led[c][i]=ValColor;
WordToStr(ValColor,CRam1);
UART1_Write_CText(" ValColor ");UART1_Write_CText(Colors[i]);
UART1_Write(TAB); UART1_Write_Text(CRam1);
CRLF1();
Delay_ms(100);
}
}
} // IF
i++;
if(i>4) break;
}
while (p1!=0) ;
p1=0;
} // RGB
p1=strstr(buffer1,"HELP");
if ((p1>0) || (*(buffer1)=='?'))
{
UART1_Write_CText("Cde LED portB avec x=num led de 0 à 7, etat 1 ou 0 ex: LED1=1 ou LED1=0 \r\n");
UART1_Write_CText("Cde Globale LEDs PortB avec : LEDs_ON ou LEDs_OFF \r\n");
UART1_Write_CText("Cde Reglage LEDs RGB : RGBx,RRR,VVV,BBB<CR> \r\n");
UART1_Write_CText("ex: RGB1,128,35,12 soit Reglage LED1 R=128 V=35 B=12\r\n");
UART1_Write_CText("SAVE_TABLE : Sauvegarde Tableau 8 leds -> PIC EEPROM \r\n");
UART1_Write_CText("LIST_TABLE : Liste contenu TABLE de reglage RGB des 8 leds\r\n");
UART1_Write_CText("LOAD_TABLE : Charge PIC EEPROM -> TABLE 8 leds\r\n");
UART1_Write_CText("SAVE_TABLE : Sauve TABLE 8 leds RGB -> PIC EEPROM\r\n");
}
// todo
p1=strstr(buffer1,"SAVE_TABLE");
if (p1>0)
{
UART1_Write_CText("Sauvegarde Tableau -> PIC EEPROM \r\n");
cx=0;
for (i=0;i<8;i++)
{
EEPROM_Write(cx,RGB_Led[i][0]); Delay_ms(25);
EEPROM_Write(cx+1,RGB_Led[i][1]); Delay_ms(25);
EEPROM_Write(cx+2,RGB_Led[i][2]); Delay_ms(25);
cx=cx+3;
}
Liste_Table() ;
}
p1=strstr(buffer1,"LIST_TABLE");
if (p1>0)
{
Liste_Table();
}
p1=strstr(buffer1,"LOAD_TABLE");
if (p1>0)
{
UART1_Write_CText("Charge PIC EEPROM -> Table \r\n");
LOAD_Table_RGB();
}
// autre test de comamnde
// ...
CRLF1();
RAZ_UART1(); // on nettoie tout
GIE_bit=1;
TMR4ON_bit=1;
}
}
while(1);
}
/*
Mikroc Pro 6.620
version :10-01-2016
Source :18F45K22_8leds_RGB_TMR2_500uS_160109.c
18F45K22 Ready for PIC
UART1 via USB -> COM23 HTerminal
Cdes Clavier pour Couleur 8 Leds RGB
init UART1 38400,8,N,1
Charge EEPROM PIC -> Table
Lednum=0 Rouge=250 Vert = 1 Bleu = 1
Lednum=1 Rouge= 1 Vert =250 Bleu = 1
Lednum=2 Rouge= 1 Vert = 1 Bleu =250
Lednum=3 Rouge=250 Vert = 1 Bleu =250
Lednum=4 Rouge= 1 Vert =250 Bleu =250
Lednum=5 Rouge=250 Vert =250 Bleu = 1
Lednum=6 Rouge= 12 Vert =100 Bleu =200
Lednum=7 Rouge=250 Vert =128 Bleu = 1
Reception de :
HELP
Cde LED portB avec x=num led de 0 à 7, etat 1 ou 0 ex: LED1=1 ou LED1=0
Cde Globale LEDs PortB avec : LEDs_ON ou LEDs_OFF
Cde Reglage LEDs RGB : RGBx,RRR,VVV,BBB<CR>
ex: RGB1,128,35,12 soit Reglage LED1 R=128 V=35 B=12
SAVE_TABLE : Sauvegarde Tableau 8 leds -> PIC EEPROM
LIST_TABLE : Liste contenu TABLE de reglage RGB des 8 leds
LOAD_TABLE : Charge PIC EEPROM -> TABLE 8 leds
SAVE_TABLE : Sauve TABLE 8 leds RGB -> PIC EEPROM
Reception de :
RGB0,12,130,12
RGB0
Led # 0
Parametre #0 ValColor Rouge 12
Parametre #1 ValColor Vert 130
Parametre #2 ValColor Bleu 12
Reception de :
LIST_TABLE
Reception de :
LISTE_TABLE
Lednum=0 Rouge= 12 Vert =130 Bleu = 12
Lednum=1 Rouge= 1 Vert =250 Bleu = 1
Lednum=2 Rouge= 1 Vert = 1 Bleu =250
Lednum=3 Rouge=250 Vert = 1 Bleu =250
Lednum=4 Rouge= 1 Vert =250 Bleu =250
Lednum=5 Rouge=250 Vert =250 Bleu = 1
Lednum=6 Rouge= 12 Vert =100 Bleu =200
Lednum=7 Rouge=250 Vert =128 Bleu = 1
Reception de :
RGB1,0,0,0
RGB1
Led # 1
Parametre #0 ValColor Rouge 1
Parametre #1 ValColor Vert 1
Parametre #2 ValColor Bleu 1
Reception de :
RGB1,128,255,1
RGB1
Led # 1
Parametre #0 ValColor Rouge 128
Parametre #1 ValColor Vert 253
Parametre #2 ValColor Bleu 1
Reception de :
RGB1,0,255,0
RGB1
Led # 1
Parametre #0 ValColor Rouge 1
Parametre #1 ValColor Vert 253
Parametre #2 ValColor Bleu 1
Reception de :
RGB3,40,255,0
RGB3
Led # 3
Parametre #0 ValColor Rouge 40
Parametre #1 ValColor Vert 253
Parametre #2 ValColor Bleu 1
Reception de :
RGB7,255,40,255
RGB7
Led # 7
Parametre #0 ValColor Rouge 253
Parametre #1 ValColor Vert 40
Parametre #2 ValColor Bleu 253
Reception de :
SAVE_TABLE
Sauvegarde Tableau -> PIC EEPROM
Lednum=0 Rouge=253 Vert = 1 Bleu = 1
Lednum=1 Rouge= 1 Vert =253 Bleu = 1
Lednum=2 Rouge= 1 Vert = 1 Bleu =250
Lednum=3 Rouge= 40 Vert =253 Bleu = 1
Lednum=4 Rouge= 1 Vert =250 Bleu =250
Lednum=5 Rouge=250 Vert =250 Bleu = 1
Lednum=6 Rouge= 12 Vert =100 Bleu =200
Lednum=7 Rouge=253 Vert = 40 Bleu =253
------------------------------
cc=97. Cpt_Color=00. Setcolor=03. Cde_RGB_Leds=06. EasyLeds=40. LATD=BF.
cc=1F. Cpt_Color=00. Setcolor=03. Cde_RGB_Leds=02. EasyLeds=02. LATD=FF.
cc=97. Cpt_Color=02. Setcolor=05. Cde_RGB_Leds=05. EasyLeds=20. LATD=FF.
cc=1F. Cpt_Color=02. Setcolor=05. Cde_RGB_Leds=01. EasyLeds=02. LATD=FF.
cc=97. Cpt_Color=01. Setcolor=06. Cde_RGB_Leds=05. EasyLeds=20. LATD=FF.
cc=01. Cpt_Color=00. Setcolor=03. Cde_RGB_Leds=01. EasyLeds=02. LATD=FD.
cc=79. Cpt_Color=00. Setcolor=03. Cde_RGB_Leds=05. EasyLeds=10. LATD=EF.
cc=01. Cpt_Color=02. Setcolor=05. Cde_RGB_Leds=00. EasyLeds=01. LATD=FF.
cc=79. Cpt_Color=02. Setcolor=05. Cde_RGB_Leds=04. EasyLeds=10. LATD=EF.
cc=01. Cpt_Color=01. Setcolor=06. Cde_RGB_Leds=00. EasyLeds=01. LATD=FF.
*/