cycling 4 LEDs at varrying speeds

thanks for your input. it's not like I don't understand it, I just don't know how it would apply to what I'm doing.

I'm not sure if everybody woke up on the wrong side of the bed or if my impression of everyone being on their high horse is just my problem, but a "something for nothing" lecture isn't what I expect when I asked for help.

I'm trying real hard to understand your guys way of thinking, it occurred to me a long time ago that there are many different types of people and they all have different ways of understanding things. I'm sure I'm not the first person to come along that has a hard time understanding what you guys are saying, I'm sure those with thousands of posts have seen this many times my question is, do you run them off with banter such is this? or do you offer assistance? I for one think that a community such is this would be willing to help.

myself, being an expert in other things and also being part of a web forum sort of like this I definitely don't answer questions with, "figure it out yourself we're just here to give you our opinion on how the site is supposed to be ran" attitude.

I'm trying real hard to have an upbeat attitude with the type of replies that I have gotten, but this cloak and dagger, "here's a piece of the puzzle see how it fits" doesn't really sit right with me.

this code is such a small aspect of my project that I was hoping that it wouldn't be this difficult for someone to help me.

Do I have to use const int ledPin = 13 to define the pin OR is there a way to define using pins 2, 3, ,4, and 5 as constants? I am using the code from the Arduino playground, Blink Without Delay which starts with the constant using pin 13.

Is there a way to string multiple pins in the blink without delay code? OR is there a different code altogether that needs to be used in order to get all 4 LEDs working together with a millis (rather than a delay)?

JeffCoalfax:
thanks for your input. it's not like I don't understand it, I just don't know how it would apply to what I'm doing.

Which is something that you learn to figure out by actually playing with the devices. If you can't figure it out, then you truly don't understand it enough; it's that simple.

I'm trying real hard to understand your guys way of thinking, it occurred to me a long time ago that there are many different types of people and they all have different ways of understanding things. I'm sure I'm not the first person to come along that has a hard time understanding what you guys are saying, I'm sure those with thousands of posts have seen this many times my question is, do you run them off with banter such is this? or do you offer assistance? I for one think that a community such is this would be willing to help.

The responses certainly haven't been warm and friendly, but calling it banter is a bit of a stretch.

There are many people who come here and can't understand it after an explanation and that's understandable. The problem arises when there is an apparent lack of effort, which is why you see posts about how quickly you respond with "looked at it, still don't understand it" type responses.

myself, being an expert in other things and also being part of a web forum sort of like this I definitely don't answer questions with, "figure it out yourself we're just here to give you our opinion on how the site is supposed to be ran" attitude.

I'm trying real hard to have an upbeat attitude with the type of replies that I have gotten, but this cloak and dagger, "here's a piece of the puzzle see how it fits" doesn't really sit right with me.

Also a stretch. I think I characterized it pretty clearly when I said that we're not here to help you complete your project, we're here to teach you how to do it yourself. The overall forum philosophy is that people asking for help is akin to the student/teacher paradigm. If you're not comfortable with that type of help, then ignore it and wait to see if anyone with the knowledge you're looking for feels the same way that you do.

this code is such a small aspect of my project that I was hoping that it wouldn't be this difficult for someone to help me.

The difficulty isn't in helping you, it's on agreeing with what we define "help" as.

JeffCoalfax:
Do I have to use const int ledPin = 13 to define the pin OR is there a way to define using pins 2, 3, ,4, and 5 as constants? I am using the code from the Arduino playground, Blink Without Delay which starts with the constant using pin 13.

13 is convenient because most Arduino's already give you an LED connected to pin 13 through a series resistor, meaning you can upload the code to the board without adding any hardware. You're welcome to use whichever pin you like; you aren't tethered to pin 13.

Is there a way to string multiple pins in the blink without delay code?

Depends on what you mean by "string multiple pins together" ?

Do you mean one after another? All at the same time? Binary counter? Random? The answer is yes to all, but the implementation is different.

Which is something that you learn to figure out by actually playing with the devices. If you can't figure it out, then you truly don't understand it enough; it's that simple.

You're right, I played with it and got the LED to blink at different intervals. Maybe you're trying to teach me 5th grade algebra when I need to learn 1st grade addition. What's simple to you is not simple to me. and I'm sure if roles were reversed I'd bend over backwards to help you.

The responses certainly haven't been warm and friendly, but calling it banter is a bit of a stretch.

I don't think that's a stretch at all. All I asked for was help but what I got in return was you guys trying to teach me how to read Greek.

here are many people who come here and can't understand it after an explanation and that's understandable.

Again, what is understandable to you if far from understandable to me.

is an apparent lack of effort, which is why you see posts about how quickly you respond with "looked at it, still don't understand it" type responses.

LACK OF EFFORT? Maybe you missed it but I spent well over 24 hours reading and trying to understand HIGH, LOW, int, boolean, array, if's, delays, millis etc and to apply the same examples that everyone pasted. I'm not an idiot, I can search arduino and google just as well and anybody. my problem is that I don't understand your language.

also a stretch. I think I characterized it pretty clearly when I said that we're not here to help you complete your project,

Show me? You're not here to help, you're here to give me your interpretation of some unwritten rule that you're "here to help but you're not really here to help". (which makes no sense to me)

we're here to teach you how to do it yourself.

If this is teaching me how to do it myself, you lost me when you said you're helping, all you're doing is parading around like you're better than me for the simple fact that I have no clue how to write code nor do I understand it at its fundamental root.

The thing that gets me is that you and everyone else that has read this, know what and how to achieve what I'm asking. However, instead of helping, all you want to do is belittle my intelligence.

The brain power and time it took you to respond you could have channeled that into a positive that actually would have HELPED me. Instead you chose to continue with the, "you don't understand what this site is all about" banter.

Look, I got it. You don't want to help me, but there are others that are willing to so please if all you want to do is continue down this road, save yourself some time and don't respond at all.

13 is convenient because most Arduino's already give you an LED connected to pin 13 through a series resistor, meaning you can upload the code to the board without adding any hardware. You're welcome to use whichever pin you like; you aren't tethered to pin 13.

understood, I changed it to 2 but I need to understand how to get 3,4 and 5 in there as well. so that I can have them blink with this code. Everything that I try gives me an error.

Do you mean one after another? All at the same time? Binary counter? Random? The answer is yes to all, but the implementation is different

I mean, one after another

JeffCoalfax:
Look, I got it. You don't want to help me, but there are others that are willing to so please if all you want to do is continue down this road, save yourself some time and don't respond at all.

Fair enough, it looks like my type of help isn't what you're looking for and the way I post is apparently very aggravating to you, so I'll let you work it out (hopefully) with someone else.

Everything that I try gives me an error.

We can't see
a) what you have tried
b) what the errors were.

You're making it very hard to help you.

Blink without delay analogy:

A call to "delay ()" is like setting your alarm clock and going to sleep until it goes off - you can't get any work done, because you're busy sleeping.

Instead, think about the egg boiling analogy.
In fact, let's simplify it, and have a flashlight, which you have to flash, with an "on" time of 20 seconds (human, not microprocessor timescales here) and an "off" time of 30 seconds.

You have a wall-clock that has a seconds hand and a sheet of paper with a pencil.

Fairly quickly, you'll see that the actual action of switching the flashlight on or off takes virtually no time at all, and happens only every 20 or 30 seconds.
Most of the rest of the time, you're just looking at the clock, seeing if your 20 or 30 seconds are up, but the important thing is, you're not sleeping.

Now, in between times, you could be performing tasks that operate at different rates, like making a cup of tea, or boiling eggs to different levels of hardness, answering the phone, answering the front door...
The key is to break the sequence down into small lumps that won't interfere with the others.
Fill, kettle, plug kettle in, switch kettle on(is kettle boiling?), get cup(is kettle boiling?), get spoon(is kettle boiling?), get tea(is kettle boiling?), get milk (is kettle boiling?),...

Now, "loop()" provides you with a mechanism for repeatedly doing things, like looking at the "millis()" wallclock.

Wow! How did this thread escalate totally out of control? Halloween, I bet!

Beware of the zombies.

understood, I changed it to 2 but I need to understand how to get 3,4 and 5 in there as well. so that I can have them blink with this code. Everything that I try gives me an error.

What errror?

Maybe you're trying to teach me 5th grade algebra when I need to learn 1st grade addition. What's simple to you is not simple to me. and I'm sure if roles were reversed I'd bend over backwards to help you.

I think that where we are having difficulty is that we have no idea that you need help with 1st grade addition. So, we assume that its 5th grade algebra that you need help with, since that is what you are asking questions about.

If we answer the question(s) in ways that you don't understand, you bear some responsibility to let us know that. Berating people who are trying to help you isn't the best response.

If we know that your difficulty isn't with 5th grade algebra, but is more basic than that, we can back up and start with more basic answers.

If, on the other hand, we assume that, though the question was about 5th grade algebra, you don't even understand 1st grade addition, you'd be even more insulted, and rightly so.

Mr. Gammon,

now that looks like some information I can use. when I get to my laptop I will try to understand those codes that you have on your site. it seems like it's laid out in a way I can understand but when I start trying to apply it I will probably have lots if questions.

Thanks

PaulS:

Maybe you're trying to teach me 5th grade algebra when I need to learn 1st grade addition. What's simple to you is not simple to me. and I'm sure if roles were reversed I'd bend over backwards to help you.

I think that where we are having difficulty is that we have no idea that you need help with 1st grade addition. So, we assume that its 5th grade algebra that you need help with, since that is what you are asking questions about.

If we answer the question(s) in ways that you don't understand, you bear some responsibility to let us know that. Berating people who are trying to help you isn't the best response.

If we know that your difficulty isn't with 5th grade algebra, but is more basic than that, we can back up and start with more basic answers.

If, on the other hand, we assume that, though the question was about 5th grade algebra, you don't even understand 1st grade addition, you'd be even more insulted, and rightly so.

can you please help me now?

can you please help me now?

Sure. With what?

come on, really?

come on, really?

Yes, really.

I'm beginning to suspect that the problem is that you don't know how to formulate your requirements in a form that someone else could implement them. If I'm mistaken, then please define them. We can't really help you implement them without seeing them.

If I'm not, then do your best to state what you want to accomplish, and we'll help you come up with a set of requirements that can be implemented, and to implement them, too.

you don't know how to formulate your requirements in a form that someone else could implement them

You're probably right because I'm not sure what this means.

Tell me if I'm way off when I say, "I want to take this current code that cycles 4 LEDs at a rate that increases as each cycle is completed by what ever value that's inputted and have it increase speed not by cycle completion but by time. For example: it starts at 700 and every second that passes it reduces by a factor of 20, in 5 seconds, it will reduce to 600 and so on, until it reaches a target value which in this case is 20.

int timer = 700;           // The higher the number, the slower the timing.

void setup() {
  // use a for loop to initialize each pin as an output:
  for (int thisPin = 2; thisPin < 6; thisPin++)  {
    pinMode(thisPin, OUTPUT);      
  }
}

void loop() {
  // loop from the lowest pin to the highest:
  for (int thisPin = 2; thisPin < 6; thisPin++) {
    // turn the pin on:
    digitalWrite(thisPin, HIGH);  
    delay(timer);                  
    // lower the delay if timer >= 20       
    if (timer >= 20) {
      timer = timer - 1;
    }

    // turn the pin off:
    digitalWrite(thisPin, LOW);    
  }
}

Now I know you want me to intruduce millis() and remove delay()

So here's what I know about delay(), when it's read it stops all other function until the task is complete. And I know that Millis allows other functions to take place at the same the same time other tasks are being completed. Which will be perfect to allow a counter to run while the LEDs cycle.

Let me also throw out a disclamer that this isn't for any school project, nor is it a project that is going to financially benifit me. It is just me trying to have fun with the Arduino. and as you can tell at this point i'm not having much fun. but dispite the rhetoric I'm learning quite a bit.

Jeff

The 'blink without delay' example sketch demonstrates the technique which is fundamental to solving this problem.

Have you tried running that? If not, give it a go and play with the source code and make sure you understand how it works.

Making the blink frequency and duty cycle vary over time is as simple as using variables to control the blinking instead of constants, and changing those variables however you want. If you want the frequency to reduce over time, then put in code that runs at regular intervals and reduces the blink interval. (And refer back to the 'blink without delay' to see how to run code at regular intervals.)

If you want to apply this logic to multiple LEDs independently then you need to replicate the code and data used to blink an LED. This can be as simple as copy/paste and rename the variables to make everything unique, and there's nothing stopping you from giving that a go with two LEDs to prove the concept. However, a better way to do similar things to multiple outputs is to put your data in an array and have your code loop through the array doing the same thing for each entry. In this scheme, instead of having a constant or variable holding the pin number for the LED, you'd have an array of pin numbers; instead of having a variable holding the last 'blink' time for the LED you'd have an array of 'last blink times', one per LED; if the frequency is variable then you'd have an array holding the current blink interval for each LED. And so on with any other data you introduce to control your LEDs.

JeffCoalfax:
Tell me if I'm way off when I say, "I want to take this current code that cycles 4 LEDs at a rate that increases as each cycle is completed by what ever value that's inputted and have it increase speed not by cycle completion but by time. For example: it starts at 700 and every second that passes it reduces by a factor of 20, in 5 seconds, it will reduce to 600 and so on, until it reaches a target value which in this case is 20.

Can you clarify please?

4 LEDs. What do you mean by "cycle"? One and then the next, and so on? So only one is one at once? Or all flashing together? Or one on, then two on, then three on, and then four on?

... and have it increase speed not by cycle completion but by time ...

What does that mean?

... it starts at 700 ...

700 what? You mean 700 Hz? You wouldn't spot anything much over 25 Hz cycle.

... as each cycle is completed by what ever value that's inputted ...

Inputted how? Keyboard? Knob? Serial port?