I really think i'm LED Crazy....
1. 6 X 1W emitters...With 30 degree lenses
2. Mounted on alluminium Strip
3. Buillt in Current limit circuit
4. Switch to avtivate only 3 or all 6
5. Any 12 Vdc source.






#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <avr/wdt.h>
#define F_CPU 16000000
#include <util/delay.h>
#define bit_get(p,m) ((p) & (m))
#define bit_set(p,m) ((p) |= (m))
#define bit_clear(p,m) ((p) &= ~(m))
#define bit_flip(p,m) ((p) ^= (m))
#define bit_write(c,p,m) (c ? bit_set(p,m) : bit_clear(p,m))
#define BIT(x) (0x01 << (x))
#define LONGBIT(x) ((unsigned long)0x00000001 << (x))
#define DELAY_LOOP 100
#define DELAY_A 50
#define CHANGE_SPEED 5
void set_light(int nr)
{
// always put them all off first
PORTC = 0;
bit_set( PORTC, BIT(nr) );
}
int main(void)
{
// portc output
DDRC = 255;
PORTC = 0;
int c = 0;
int r = DELAY_LOOP;
int g = 0;
int b = 0;
int cnt = 0;
int mode = 0;
int tr = -1;
int tg = 1;
int tb = 0;
int change = 0;
while(1)
{
if ( mode == 0 )
{
tr = -1;
tg = 1;
tb = 0;
if (r < 1)
mode++;
}
if ( mode == 1 )
{
tr = 0;
tg = -1;
tb = 1;
if ( g < 1 )
mode++;
}
if ( mode == 2 )
{
tr = 1;
tg = 0;
tb = -1;
if ( b < 1 )
mode = 0;
}
set_light(0); //blue
for( c=0; c<b; c++ )
{
_delay_us(DELAY_A);
}
PORTC=0;
for( c=b; c<DELAY_LOOP; c++ )
{
_delay_us(DELAY_A);
}
set_light(2); //red
for( c=0; c<r; c++ )
{
_delay_us(DELAY_A);
}
PORTC=0;
for( c=r; c<DELAY_LOOP; c++ )
{
_delay_us(DELAY_A);
}
set_light(1); //green
for( c=0; c<g; c++ )
{
_delay_us(DELAY_A);
}
PORTC=0;
for( c=g; c<DELAY_LOOP; c++ )
{
_delay_us(DELAY_A);
}
PORTC=0;
// do changes
change++;
if ( change >= CHANGE_SPEED )
{
r += tr;
g += tg;
b += tb;
change = 0;
}
}
return 0;
}

Nishar wrote:Ok so i take it you're a genius....
I cant wait to check it out

Users browsing this forum: No registered users and 1 guest