Hi folks, just trying to get the hang of C for Arduino. I want to change this sketch so that the LED blinks every 1.5 seconds but only for 100 milliseconds.
I thought the following modification would work but it isn't changing the rate for some reason?
long interval = 1000; // interval at which to blink (milliseconds)
void setup() {
// set the digital pin as output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// here is where you'd put code that needs to be running all the time.
// check to see if it's time to blink the LED; that is, if the difference
// between the current time and last time you blinked the LED is bigger than
// the interval at which you want to blink the LED.
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW) {
ledState = HIGH;
long interval = 100;
} else {
ledState = LOW;
long interval = 1500;
}
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}
Since you have the long data type specifier in front of the interval there, that is a local variable so is only visible inside of the if block. It is a totally different variable that the one declared above setup() and used in the millis() timer.
Thank you for that! I got confused with the fact that interval is, as far as I was concerned at the time, declared outside of the "if" statement. I am still not sure how the two are connected but disconnected lol... I'll read your suggestion though thanks.
I am accomplished at assembler and have loved the challenges programming pics has provided, but realise how much easier things are in the arduino environment.
However, I am struggling wrapping my head around what to me is quite alien, and not very obvious!! Assembler is what it is, but C seems quite abstract to me at this time!
They aren't. The global one has the same name but is a different location than the local one. Changing the value of the local one does nothing to the global one.
It is a good idea to use a naming convention to keep from defining a local variable with the same name as a global. I like to use a capital letter as the first letter of a global and a lowercase letter as the first letter of a local.