Author Topic: Sequential Taillight using Arduino Pro Mini (Thread Change from 555 Delay Timer)  (Read 51202 times)

0 Members and 1 Guest are viewing this topic.

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #50 on: January 08, 2016, 03:20:25 am »
that's exactly what I need, but with the ability to control the speed of the lights.
Well, another button could do that as others have suggested, by stepping through some preset values, or a pot could do it really easily on the fly, but might not meet the "durability" requirement of the installation. If I were installing such a thing I'd put it inside a container that could be tightly sealed but still openable, with feedthroughs for the wiring, and use a trimpot to set the sequence delay.
Quote

I must have something wired wrong in my simulation.
Probably you already found it: the pulldown resistors on the pushbuttons maybe ?
Quote
I see you have a diode going to the gnd pin of the Arduino,I'm assuming it is for reverse polarity protection?
That's right, I'm constantly hooking up power supplies backwards and I just don't want to take the chance of frying anything. I can't remember offhand if the ProMini has a built-in reverse voltage protection diode. The diode is a 1n5817 Schottky.
Quote
I also see a cap, I'm assuming is a 0.01uF, connecting the GND and RESET pin.
No, it's connecting "Raw" (voltage in to the ProMini) and GND.  Local decoupling, just a habit, not necessary and certainly not affecting the functioning of the circuit.
Quote

I also see another Cap, Assuming it is 100uF, across the power supply GND +5v?

Also more power supply decoupling, just a habit of mine, safely ignored for most purposes.
Quote
I will try that, maybe that is what is wrong with mine.
Unlikely to be affecting you especially if you are simulating rather than working with real hardware.
Quote
Oh, and I see resistors on the Tactile Switches. 1k?
10K, pulldowns to keep the input pins from floating when the pushbuttons are not pressed.
The easiest person to fool is yourself. -- Richard Feynman
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #51 on: January 08, 2016, 03:26:22 am »
millis() is the same as delay()
Both 'block' the processor from doing anything else until the delay period has elapsed...

You need to look at 'state machine' and 'timers' to do it properly, but the low-rent approach seems to be keeping everyone happy so far.  :(
Don't ask a question if you aren't willing to listen to the answer.
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #52 on: January 08, 2016, 03:34:25 am »
ya. so far I have found delay, millis, and asynchronous,( more difficult). Having trouble getting the millis to work properly. The delay seems to be working just fine however.  But I do see your point. The Arduino can't do anything, until it finishes it's sequences.

However, in this case, I think the delay may work just fine. If the left turn signal is on and brake is pressed, the left finishes its cycle of course, the right starts it's cycle, and when both finish their initial cycle, the brakes stay on steady. That is fine.


I think I might like this later, using this arduino over the 555 timers. The reason...It would take up a lot of space for my car if I used 555 timers/relays like I was originally going to do. My car has like 8-9 LED's per turn signal.  With this set-up, It looks like there's enough pins to do it. I would have to assign the analog pins to do it it, but the micro has enough.

Now, I think what I need to do now, is either use a two push buttons for up and down, or a potentiometer and feed those into the arduino to control the frequency (int delay (???)) of pins D3,D4,D5,D10,D11,D12.

I just need to figure out the coding for that.
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #53 on: January 08, 2016, 03:38:26 am »
no schematic yet. The simulator is from 123d

Right now, I'm trying to figure out how to change all those delays to millis()

That's what you were talking about, right MC?

Not sure this link works yet...
https://123d.circuits.io/circuits/1439224-sequential-taillights/edit

millis() returns the value in milliseconds since the power was applied to the Arduino, or since last reset. (up to a point, before it rolls over.) I don't know why you'd want to use it in this application.

For the pushbuttons you don't need the 2k resistors from the positive rail. It will probably work but really you just need to connect directly to the pushbuttons from the 5V pin on the Arduino (this assures that you are using the Arduino's own 5v regulator to pull the input pins high rather than the outside raw power source. Safer, IMHO.)
The 10k pulldowns from the Arduino side of the switches, to GND, look correct.

In my video I put in the third button, with diodes, to simultaneously "simulate" pushing both left and right buttons together. But of course if this button is pushed it overrides both left and right buttons, so I just used it to demonstrate "Emergency Flasher" mode.
The easiest person to fool is yourself. -- Richard Feynman
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #54 on: January 08, 2016, 03:41:41 am »
the pushbuttons don't really matter, but the pulldowns do I believe. The pushbuttons represent the incoming signal from the trucks flasher. It is merely on the breadboard to  simulate that so I can see LED's flashing and watch code happening.
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #55 on: January 08, 2016, 03:43:59 am »
millis() is the same as delay()
Both 'block' the processor from doing anything else until the delay period has elapsed...

You need to look at 'state machine' and 'timers' to do it properly, but the low-rent approach seems to be keeping everyone happy so far.  :(

No, millis() is NOT the same as delay(). Delay takes a value and pauses for the length of time in ms that is specified by the value. Millis() _returns_ a value that is the number of milliseconds since the program started running. Millis() does not block anything, it just returns a value.
https://www.arduino.cc/en/Reference/Millis

The whole idea of the delay(20) statements in my code is to block the processor from trying to read and write to digital pins too quickly, which is a known source of error in Arduino program processing. Comment out the delay(20) statements and watch what happens in the code.

Try to explain FSMs to a novice programmer and watch his eyes glaze over. My code may not be the "right" way that a Real Programmer would do it... she'd probably use interrupts, etc. but it is easy to understand and it works.

The easiest person to fool is yourself. -- Richard Feynman
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #56 on: January 08, 2016, 03:47:13 am »
the pushbuttons don't really matter, but the pulldowns do I believe. The pushbuttons represent the incoming signal from the trucks flasher. It is merely on the breadboard to  simulate that so I can see LED's flashing and watch code happening.

That's right. The input pins must be High or Low, or problems will arise. The pulldowns assure that when the pins are not High, they are Low. The pushbuttons are there to make the input pins go High.

But please, use the 5V pin on the Arduino instead of the main power supply to provide the 5V for the pushbutton High state, and you don't need the 2k resistors.
The easiest person to fool is yourself. -- Richard Feynman
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #57 on: January 08, 2016, 03:50:54 am »
yes, I read that on the millis. I was trying to understand what SL4P meant by blocking, and google returned a search on millis for that.  But yes, I'm not using it.

Everyone programs differently, and from what I've learned the past 36 hours or so, is that there are different ways of programming these things. Some better then others, some get the same results, some get different results.

No need to flame or argue here. I appreciate everyones help in this large learning curve for me. I accept any input.  :)

So, Now my search begins on how to control the 'int delay (???)' in the code, without having to type it in. I'm trying to understand this interfacing with a Pot/Trimmer. I have not yet explored the switch idea yet, but at this stage, a pot may be cheaper. But, an up/down switch would be cooler looking. But then again, this thing is going to be buried up below the truck and will never get seen again once it is installed.

So far, when I put in 'int delay arduino with Potentiometer' in google, i'm not finding much help i can understand from a beginners view.
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #58 on: January 08, 2016, 03:54:51 am »
ya, sorry, I was meaning the end result of maintaining delay by subtracting millis to keep track of time... my poor expression.
I agree that for a newbie to use delay is convenient, but it's like painting yourself into a corner, because eventually, you'll need to develop non blocking async code, and everything you've done in the past becomes irrelevant.
Let's be friends!

P.s.  FALCON69, are you keeping the truck flasher unit in the circuit? as this will create all sorts of issues as far as control and timing.   you're better to let the controller take over all indicator timing and control. Just provide a voltage state for brakes, left, right, reverse and what other lights you need... e.g dim for tail lights, bright for indicator / flash

Remember you could also use dual colour R/G LEDs for tail/turn... all controlled by the micro.  red for stop/tail, and 'yellow' for turn...
Don't ask a question if you aren't willing to listen to the answer.
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #59 on: January 08, 2016, 03:57:43 am »
to use a pot with arduino, read about analogread()
Because a pot is mechanical, it is far more prone to dirt, temperature and other variations than a digital selection.
Don't ask a question if you aren't willing to listen to the answer.
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #60 on: January 08, 2016, 03:57:54 am »
ya. so far I have found delay, millis, and asynchronous,( more difficult). Having trouble getting the millis to work properly. The delay seems to be working just fine however.  But I do see your point. The Arduino can't do anything, until it finishes it's sequences.

However, in this case, I think the delay may work just fine. If the left turn signal is on and brake is pressed, the left finishes its cycle of course, the right starts it's cycle, and when both finish their initial cycle, the brakes stay on steady. That is fine.


I think I might like this later, using this arduino over the 555 timers. The reason...It would take up a lot of space for my car if I used 555 timers/relays like I was originally going to do. My car has like 8-9 LED's per turn signal.  With this set-up, It looks like there's enough pins to do it. I would have to assign the analog pins to do it it, but the micro has enough.

Now, I think what I need to do now, is either use a two push buttons for up and down, or a potentiometer and feed those into the arduino to control the frequency (int delay (???)) of pins D3,D4,D5,D10,D11,D12.

I just need to figure out the coding for that.

You are having trouble with millis() because someone told you wrong information about what it does, probably.

To implement a potentiometer to control the delay in the flash sequence, you connect a pot (doesn't matter what value but use something over 10k) from +5V (the Arduino pin not the power supply) to GND, and the wiper to an analog input pin,, say A0. In setup() include the statement

pinMode (A0, INPUT);

and then in each of the "for" loops before the first delay(delayOn) statement, read that pin, and map the raw value to some delay value, like this:

delayOn = map (analogRead(A0),0,1023,0,500);

This will change the delayOn value to something between 0 and 500 milliseconds, according to the pot setting (which is going to be from 0 to 1023 at the A0 pin).
« Last Edit: January 08, 2016, 04:01:06 am by alsetalokin4017 »
The easiest person to fool is yourself. -- Richard Feynman
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #61 on: January 08, 2016, 04:00:46 am »
Yes MC,

I have to. I am not running new wires back from the truck.

The truck goes from Power > Flasher Relay > Turn Switch/Hazard Switch > Brake > Rear Taillights and Trailer Hitch.

Because of this, tapping into the turn signal switch, or the brake switch, will do nothing. If I eliminate the flasher and then tap into the turn signal switch, then the trucks trailer lights won't function, or function improperly.

So, I can run a steady voltage back via an LDO regulator or something to get 5v, but for the brake and turn signal, it has to be with that existing wire already in the back of the truck.
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #62 on: January 08, 2016, 04:05:09 am »
ok, keep in mind that you will have to account the 'aliasing' between the duty cycles of the truck flasher, and the micro flash rate -- that the 'next' micro flash sequence will only begin upon the next truck flash event...  so your slow/medium/fast flash rate will still be dependent on the truck flasher to 'start' each new sequence.

you may need to consider 'loading' the truck flasher so that it runs at the correct flash rate - as the thermal flashers will run slow if no 'bulbs' are connected....  this is well documented on their web.
« Last Edit: January 08, 2016, 04:07:14 am by SL4P »
Don't ask a question if you aren't willing to listen to the answer.
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #63 on: January 08, 2016, 04:17:00 am »
i don't think there are thermal flashers.

When I was under it, trying to hook up the other...we had one side disconnected and the left side still flashed normally, or so it seemed.

I think his is just a standard mechanical flasher.

Alse...

I can't get that working. Do I need to do all that analogread/serial baude rate stuff as well in the first part of the coding?

I replaced all the "delay (delayON)" with "delayOn = map (analogRead(A5),0,1023,0,500);"
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #64 on: January 08, 2016, 04:23:48 am »
Since you are going this way,
up the top, put int delayOn to 'declare' the variable

Using delay(delayOn) is fine, but you need to update the delayOn value from the pot  frequently
So in the main loop, put your delayOn = map(...) statement
Don't ask a question if you aren't willing to listen to the answer.
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #65 on: January 08, 2016, 04:26:49 am »
i don't think there are thermal flashers.

When I was under it, trying to hook up the other...we had one side disconnected and the left side still flashed normally, or so it seemed.

I think his is just a standard mechanical flasher.

Alse...

I can't get that working. Do I need to do all that analogread/serial baude rate stuff as well in the first part of the coding?

No.
Quote

I replaced all the "delay (delayON)" with "delayOn = map (analogRead(A5),0,1023,0,500);"
No, don't touch the "delay(delayON) statements! They delay for the number of ms that is in "delayON" variable.
The line "delayOn = map(analogRead(A5), 0, 1023, 0, 500);" loads a number into the delayOn variable, so that the delay() statement has something to eat.



I'd run a single "hot" wire back to the Arduino location (or maybe a twisted pair or zipcord, to assure a good ground) , and include a 7809 regulator and a couple of capacitors to make a local filtered and regulated 9v power supply for the Arduino itself. Then I'd use the brake/ts wires (which will be carrying +12 to +14 V when "on" ) to switch a couple of mosfets to switch 5V from the Arduino's own regulated +5 output pin to the two "button" input pins.  This way you only need to run a single extra wire (or pair) to provide the power to the Arduino itself.
The easiest person to fool is yourself. -- Richard Feynman
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #66 on: January 08, 2016, 04:29:12 am »
Since you are going this way,
up the top, put int delayOn to 'declare' the variable

Using delay(delayOn) is fine, but you need to update the delayOn value from the pot  frequently
So in the main loop, put your delayOn = map(...) statement

The delayOn variable is already initialized in my code, as you can see in the link to his simulation.

As I said in my post, the "delayOn =  map() " statement should be in _each_ "for" loop, before the first "delay(delayOn);" statement in the for loops.

(Sorry, I meant the "if" statement segments, not "for" loops. I forgot how I had coded it!)
« Last Edit: January 08, 2016, 04:35:31 am by alsetalokin4017 »
The easiest person to fool is yourself. -- Richard Feynman
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #67 on: January 08, 2016, 04:30:24 am »
okay, so where it say 'int delayOn = 175" change that to just "int delayOn" ? or to "int delayOn = ()"

oh, don't replace the delayOn in each loop, merely post the new code above each FIRST one in the loop?
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #68 on: January 08, 2016, 04:30:50 am »
I'd run a single "hot" wire back to the Arduino location (or maybe a twisted pair or zipcord, to assure a good ground) , and include a 7809 regulator and a couple of capacitors to make a local filtered and regulated 9v power supply for the Arduino itself. Then I'd use the brake/ts wires (which will be carrying +12 to +14 V when "on" ) to switch a couple of mosfets to switch 5V from the Arduino's own regulated +5 output pin to the two "button" input pins.  This way you only need to run a single extra wire (or pair) to provide the power to the Arduino itself.
About now would be a good time to draw up a proper schematic of how it's going to be installed and wired - then you can plan and code to fit the actual as-built model of the system.
Don't ask a question if you aren't willing to listen to the answer.
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #69 on: January 08, 2016, 04:36:39 am »
Code: [Select]
/*--------------------------------------------------------------------------------------//
   3-Light Sequential Brake/Turn Signal Actuation
//--------------------------------------------------------------------------------------*/

int delayOn;  // declare delay time variable

void setup() {

   ::: as before       
}

void loop() {

  delayOn = map(analogRead(A5), 0, 1023, 0, 500);

   :::  everything else as before
}
Don't ask a question if you aren't willing to listen to the answer.
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #70 on: January 08, 2016, 04:38:01 am »
yes, I will work on that now. this simulation program really sucks for it's schematic portion. I'll have to open up dip trace and draw it out.

I got the pot work, Thank you. 

However, in simulation, it looks like the LED's quickly fade out as they turn off. Anyway to stop that from happening? Not sure if it will be seen in the real world, or is it just simulation?
 

Offline alsetalokin4017

  • Super Contributor
  • ***
  • Posts: 2055
  • Country: us
Re: 555 Delay Timer.
« Reply #71 on: January 08, 2016, 04:40:20 am »
okay, so where it say 'int delayOn = 175" change that to just "int delayOn" ? or to "int delayOn = ()"
No, leave it alone. The variable is declared as an "int" or integer and is set initially to 333, or as you have it, 175. Leave this alone!

Quote

oh, don't replace the delayOn in each loop, merely post the new code above each FIRST one in the loop?
That's right. I mistakenly said "for" loops, but it is actually in the "if" statement functions. Sorry about the confusion.

You could also try just the one statement _after_ the "while" loop at the top of the sketch, but I would do it in each "if" statement personally. If you do it at the very top of the loop(), nothing will happen until the "while" statement sees one of the input pins go High.
The easiest person to fool is yourself. -- Richard Feynman
 

Offline SL4P

  • Super Contributor
  • ***
  • Posts: 2318
  • Country: au
  • There's more value if you figure it out yourself!
Re: 555 Delay Timer.
« Reply #72 on: January 08, 2016, 04:40:48 am »
Can you post your latest code as it has changed...
We'll take a look and see if there are any tips we can add. (probably clarification of variables etc)
Don't ask a question if you aren't willing to listen to the answer.
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #73 on: January 08, 2016, 04:43:46 am »
Code: [Select]
/*--------------------------------------------------------------------------------------//
           3-Light Sequential Brake/Turn Signal Actuation
           (Both Left and Right sides)
//--------------------------------------------------------------------------------------*/

const int LeftInnerLED = 10;
const int LeftCenterLED = 11;
const int LeftOuterLED = 12;
const int RightInnerLED = 5;
const int RightCenterLED = 4;
const int RightOuterLED = 3;
const int LeftTurnSwitch = 8;
const int RightTurnSwitch = 7;

int delayOn;  // declare delay time variable from Potentiometer

boolean Rstate=0, Lstate=0;

void setup() {
  pinMode (RightInnerLED, OUTPUT);   // Right: connect LEDs, relay drivers or mosfet Gates here
  pinMode (RightCenterLED, OUTPUT);
  pinMode (RightOuterLED, OUTPUT);

  pinMode (LeftInnerLED, OUTPUT);    // Left: connect LEDs, relay drivers or mosfet Gates here
  pinMode (LeftCenterLED, OUTPUT);
  pinMode (LeftOuterLED, OUTPUT);
 
  pinMode (A5, INPUT);
 
  //  connect Brake/Turn signal here (through divider or regulator to give ~4-5V when ON)
  pinMode (RightTurnSwitch, INPUT); // Right ts/b
  pinMode (LeftTurnSwitch, INPUT); // Left ts/b       
}

void loop() {
 
  delayOn = map(analogRead(A5),0,1023,0,500); {
  }
 
  while (digitalRead(RightTurnSwitch)==LOW && digitalRead(LeftTurnSwitch)==LOW) {
    // do nothing, wait for signal to go HIGH
    delay(20);     // short pause to allow read/writes to proceed without interference
  }
  if (!Rstate) {   // If lights are already on, skip turning them on again
    delay(20);    // short pause to allow read/writes to proceed without interference
    // when Right signal goes High, actuate R outputs in sequence
    if (digitalRead(RightTurnSwitch)==HIGH && digitalRead(LeftTurnSwitch)==LOW) {
      Rstate=1;
      digitalWrite(RightInnerLED, HIGH);
      delay(delayOn);
      digitalWrite(RightCenterLED, HIGH);
      delay(delayOn);
      digitalWrite(RightOuterLED, HIGH);
      delay(delayOn);
    }
  }
  if (!Lstate) {   // If lights are already on, skip turning them on again
    delay(20);    // short pause to allow read/writes to proceed without interference
    // when Left signal goes High, actuate L outputs in sequence
    if (digitalRead(RightTurnSwitch)==LOW && digitalRead(LeftTurnSwitch)==HIGH) {
      Lstate=1;
      digitalWrite(LeftInnerLED, HIGH);
      delay(delayOn);
      digitalWrite(LeftCenterLED, HIGH);
      delay(delayOn);
      digitalWrite(LeftOuterLED, HIGH);
      delay(delayOn);
    }
  }
  if ((!Rstate) || (!Lstate)) {    // If lights are already on, skip turning them on again
    // when Brake (both) signal goes High, actuate R and L outputs in sequence
    if (digitalRead(RightTurnSwitch)==HIGH && digitalRead(LeftTurnSwitch)==HIGH) {
      Rstate=1;
      Lstate=1;
      digitalWrite(LeftInnerLED, HIGH);
      digitalWrite(RightInnerLED, HIGH);
      delay(delayOn);
      digitalWrite(LeftCenterLED, HIGH);
      digitalWrite(RightCenterLED, HIGH);
      delay(delayOn);
      digitalWrite(LeftOuterLED, HIGH);
      digitalWrite(RightOuterLED, HIGH);
      delay(delayOn);
    }
  }
  delay(20);  // short pause to allow read/writes to proceed without interference

  // when signal goes LOW turn off all outputs
  if (digitalRead(RightTurnSwitch)==LOW) {
    digitalWrite(LeftInnerLED, LOW);
    digitalWrite(LeftCenterLED, LOW);
    digitalWrite(LeftOuterLED, LOW);
    Rstate=0;
  }
  if (digitalRead(LeftTurnSwitch)==LOW) {
    digitalWrite(RightInnerLED, LOW);
    digitalWrite(RightCenterLED, LOW);
    digitalWrite(RightOuterLED, LOW);
    Lstate=0;
  }
  }
« Last Edit: January 08, 2016, 04:47:25 am by Falcon69 »
 

Offline Falcon69Topic starter

  • Super Contributor
  • ***
  • Posts: 1482
  • Country: us
Re: 555 Delay Timer.
« Reply #74 on: January 08, 2016, 04:46:10 am »
what about make the 1st LED fade once the 3rd LED is lit? then 2nd led fade when the 4th (not there of course, just imaginary) hits, and so on.  Like a chaser LED
« Last Edit: January 08, 2016, 04:55:43 am by Falcon69 »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf