jueves, octubre 06, 2011

Mood Lamp

Para la creación de esta lampara se utilizaron cuatro leds RGB cátodo común por medio de una resistencia de 100 ohms, la descripción de los pines es como la indica el programa, a continuación:


#include <16f84A.h>

#fuses XT,NOWDT,NOPROTECT

#use delay(clock=20000000)



#define periodo 125 //125 * 80microS =~10mS

#define duty 125 //parte del periodo que encenderan las lamparas

#define Tiempo_int 30 //50 * 125 * 80microS =~500mS entre cambio y cambio de intensidad

int c1=0; //rojo

int c2=0; //azul

int c3=0; //verde

int i2; //variable control de ciclo de retardo en intensidades

int i; //variable que controla el ciclo del periodo del pwm

int d = 0; //control porta

int z = 0; //control portb

/////////////////////////////////////////////////////////////////////////
void tiempo()

{

delay_ms(4000);

}

//led1_portb_0

void ciclo_PWM_10mS(){

for (i=1;i
{
if (i<=c1) //control intensidad rojo
{
bit_set(z,0); //led1_portb_0
bit_set(z,3); //led2_portb_3
bit_set(z,6); //led3_portb_6
bit_set(d,0); //led4_porta_0
}
else
{
bit_clear(z,0); //led1_portb_0
bit_clear(z,3); //led2_portb_3
bit_clear(z,6); //led3_portb_6
bit_clear(d,0); //led4_porta_0
}
if (i<=c2) //control intensidad azul
{
bit_set(z,1); //led1_portb_1
bit_set(z,4); //led2_portb_4
bit_set(z,7); //led3_portb_7
bit_set(d,2); //led4_porta_2
}
else
{
bit_clear(z,1); //led1_portb_1
bit_clear(z,4); //led2_portb_4
bit_clear(z,7); //led3_portb_7
bit_clear(d,2); //led4_porta_2
}
if (i<=c3)
{
bit_set(z,2); //led1_portb_2
bit_set(z,5); //led2_portb_5
bit_set(d,1); //led3_porta_1
bit_set(d,3); //led4_porta_3
}
else
{
bit_clear(z,2); //led1_portb_2
bit_clear(z,5); //led2_portb_5
bit_clear(d,1); //led3_porta_1
bit_clear(d,3); //led4_porta_3
}
output_b(z);
output_a(d);
}
delay_us(40);
}
/////////////////////////////////////////////////////////////////////////////////
void tonos_mas(){
for (c1=1,c2=1,c3=0; c1
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_2_mas(){
for (c3=1,c1=1,c2=0; c3
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_3_mas(){
for (c3=1,c1=0,c2=1; c3
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_menos(){
for (c1=duty,c2=duty,c3=0; c1>1 ; c1--,c2--) //;control de tono magenta
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_2_menos(){
for (c1=duty,c2=0,c3=duty; c1>1 ; c1--,c3--) //;control de tono amarillo
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_3_menos(){
for (c3=duty,c1=0,c2=duty; c3>1; c3--,c2--) //;control de tono cyan
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void negro() //color negro
{
z=0;
d=0;
output_b(z);
output_a(d);
tiempo();
}
void blanco() //color blanco
{
z=d=255;
output_b(z);
output_a(d);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void rojo() //color rojo
{
output_b(0x49);
output_a(0x01);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void verde() //color verde
{
output_b(0x24);
output_a(0x0a);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void azul() //color azul
{
output_b(0x92);
output_a(0x04); tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void amarillo() //color amarillo
{
output_b(0x6d);
output_a(0x0b);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void cyan() //color cyan
{
output_b(0xb6);
output_a(0x0e);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void magenta() //color magenta
{
output_b(0xdb);
output_a(0x05);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
int main ()
{ //salida al puerto b=0
while (true)
{
// negro(); //(0, 0, 0) es negro
blanco(); //(255, 255, 255) es blanco
rojo(); //(255, 0, 0) es rojo
tonos_mas();
tonos_menos();
verde(); //(0, 255, 0) es verde
tonos_2_mas();
tonos_2_menos();
azul();
tonos_3_mas();
tonos_3_menos();
amarillo(); //(255, 255, 0) es amarillo
cyan(); //(0, 255, 255) es cyan
magenta(); //(255, 0, 255) es magenta
z=d=0;
output_b(z);
output_a(d);
}
return(0);
}

No hay comentarios.:

Google