I am using AVR as the micro controller and ATMEGA8 as the processor (inside the micrcontroller). The board that has micro controller has 4 LEDS. I am able to burn the program and light up the LEDS. But I am unable to achieve a particular thing.
L1 L2 L3 L4
These are 4 LEDS. In the first round each LED lights up after a gap of 3 seconds.The last LED (L4) keeps lighting after the first round.As the third round starts each LED lights at a gap of 3 seconds and L3 keeps lighting when L4 is also lighting and it goes on....till L1.
L1 L2 L3 L4
On
On On
On On On
On On On On
But I am unable to achieve this. Because as i set one LED ON other gets OFF. I even tried adding a small time gap as 10 milliseconds. How do I do this ? Here is what I have till now :
#include<avr/io.h>
#include<util/delay.h>
DDRB = 0xFF; // input
//PORTB = 0xFF;
// ob00011110 --> on all --> binary
int i=0;
while(i<1) {
PORTB = 0b00010000; // first led on
_delay_ms(3000);
PORTB = 0b00001000; // second led on
_delay_ms(3000);
PORTB = 0b00000100; // third on
_delay_ms(3000);
PORTB = 0b00000010; // fourth on
_delay_ms(3000);
i += 1;
}
PORTB = 0b00000010; // keep the 4th on and start all over again and reach til 3rd LED