Hello everyone.
I find it interesting that defining variables and constants can be a learning curve with Arduino.
Here are 3 examples to pulse 4 LEDs sequentially.
(More than one way to skin a cat, yes?)
Is #define the same as const int in the Arduino world?
Example 1:
#define LED1 2 // R
#define LED2 3 // Y
#define LED3 4 // G
#define LED4 5 // W
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
digitalWrite(LED1, HIGH); // turn on LED1
delay(0.5); // wait for 2ms
digitalWrite(LED1, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED2, HIGH); // turn on LED2
delay(0.5); // wait for 2ms
digitalWrite(LED2, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED3, HIGH); // turn on LED3
delay(0.5); // wait for 2ms
digitalWrite(LED3, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED4, HIGH); // turn on LED4
delay(0.5); // wait for 2ms
digitalWrite(LED4, LOW); // turn off LED1
delay(100); // wait for 2ms
}
Example 2:
const int LED1 = 2; // R
const int LED2 = 3; // Y
const int LED3 = 4; // G
const int LED4 = 5; // W
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
digitalWrite(LED1, HIGH); // turn on LED1
delay(100); // wait for 2ms
digitalWrite(LED1, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED2, HIGH); // turn on LED2
delay(100); // wait for 2ms
digitalWrite(LED2, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED3, HIGH); // turn on LED3
delay(100); // wait for 2ms
digitalWrite(LED3, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED4, HIGH); // turn on LED4
delay(100); // wait for 2ms
digitalWrite(LED4, LOW); // turn off LED1
delay(100); // wait for 2ms
}
Example 3:
int LED1 = 2; // R
int LED2 = 3; // Y
int LED3 = 4; // G
int LED4 = 5; // W
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
digitalWrite(LED1, HIGH); // turn on LED1
delay(100); // wait for 2ms
digitalWrite(LED1, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED2, HIGH); // turn on LED2
delay(100); // wait for 2ms
digitalWrite(LED2, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED3, HIGH); // turn on LED3
delay(100); // wait for 2ms
digitalWrite(LED3, LOW); // turn off LED1
delay(100); // wait for 2ms
digitalWrite(LED4, HIGH); // turn on LED4
delay(100); // wait for 2ms
digitalWrite(LED4, LOW); // turn off LED1
delay(100); // wait for 2ms
}
Since the exact same thing occurs with 3 different ways of written Arduino code, it raises questions IMHO.
(I wonder what kind of "special" backdoors may be in the Atmega microprocessors!)