Hi dear, i need help, i am new Arduino ide.
I want to make 4 led blink for esp32.
All led will work same time. Not lime by line. All led blink start after esp32 switch on. How to write code?
I write code but that code work one after another. But i need simultaneously.
Please help me..
Could you explain further what you mean with "not line by line" and also post the code that does not work?
const int PIN4 = 4 ;
const int PIN5 = 5 ;
const int PIN13 = 13 ;
const int PIN14 = 14;
const int PIN15 = 15;
const int PIN18 = 18;
const int PIN21 =21 ;
const int PIN22 = 22 ;
const int PIN33 = 33 ;
void setup() {
pinMode(PIN4, OUTPUT);
pinMode(PIN5, OUTPUT);
pinMode(PIN13, OUTPUT);
pinMode(PIN14, OUTPUT);
pinMode(PIN15, OUTPUT);
pinMode(PIN18, OUTPUT);
pinMode(PIN21, OUTPUT);
pinMode(PIN22, OUTPUT);
pinMode(PIN33, OUTPUT);
}
void loop() {
//pin4
digitalWrite(PIN4, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second, 2 min
digitalWrite(PIN4, LOW); // turn LED off (0V)
delay(1800000); // wait for a second , 30 min
// pin5
digitalWrite(PIN5, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN5, LOW); // turn LED off (0V)
delay(600000); // 10min
// pin13
digitalWrite(PIN13, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1 min
digitalWrite(PIN13, LOW); // turn LED off (0V)
delay(1200000); // wait for a second , 20 min
// pin14
digitalWrite(PIN14, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 30 min
digitalWrite(PIN14, LOW); // turn LED off (0V)
delay(1800000); // 1 min
// pin15
digitalWrite(PIN15, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second, 10 min
digitalWrite(PIN15, LOW); // turn LED off (0V)
delay(600000); // 1 min
// pin18
digitalWrite(PIN18, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 15 min
digitalWrite(PIN18, LOW); // turn LED off (0V)
delay(900000); // 1 min
// pin21
digitalWrite(PIN21, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second 2 min
digitalWrite(PIN21, LOW); // turn LED off (0V)
delay(1200000); // 20 min
// pin22
digitalWrite(PIN22, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN22, LOW); // turn LED off (0V)
delay(900000); // 15 min
// pin33
digitalWrite(PIN33, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1min
digitalWrite(PIN33, LOW); // turn LED off (0V)
delay(300000); // 5 mn
}
I want to all led work simultaneously. But this code running one after another.
Better place your sketch inside "code" tags:
![]()
const int PIN4 = 4 ;
const int PIN5 = 5 ;
const int PIN13 = 13 ;
const int PIN14 = 14;
const int PIN15 = 15;
const int PIN18 = 18;
const int PIN21 =21 ;
const int PIN22 = 22 ;
const int PIN33 = 33 ;
void setup() {
pinMode(PIN4, OUTPUT);
pinMode(PIN5, OUTPUT);
pinMode(PIN13, OUTPUT);
pinMode(PIN14, OUTPUT);
pinMode(PIN15, OUTPUT);
pinMode(PIN18, OUTPUT);
pinMode(PIN21, OUTPUT);
pinMode(PIN22, OUTPUT);
pinMode(PIN33, OUTPUT);
}
void loop() {
//pin4
digitalWrite(PIN4, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second, 2 min
digitalWrite(PIN4, LOW); // turn LED off (0V)
delay(1800000); // wait for a second , 30 min
// pin5
digitalWrite(PIN5, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN5, LOW); // turn LED off (0V)
delay(600000); // 10min
// pin13
digitalWrite(PIN13, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1 min
digitalWrite(PIN13, LOW); // turn LED off (0V)
delay(1200000); // wait for a second , 20 min
// pin14
digitalWrite(PIN14, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 30 min
digitalWrite(PIN14, LOW); // turn LED off (0V)
delay(1800000); // 1 min
// pin15
digitalWrite(PIN15, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second, 10 min
digitalWrite(PIN15, LOW); // turn LED off (0V)
delay(600000); // 1 min
// pin18
digitalWrite(PIN18, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 15 min
digitalWrite(PIN18, LOW); // turn LED off (0V)
delay(900000); // 1 min
// pin21
digitalWrite(PIN21, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second 2 min
digitalWrite(PIN21, LOW); // turn LED off (0V)
delay(1200000); // 20 min
// pin22
digitalWrite(PIN22, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN22, LOW); // turn LED off (0V)
delay(900000); // 15 min
// pin33
digitalWrite(PIN33, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1min
digitalWrite(PIN33, LOW); // turn LED off (0V)
delay(300000); // 5 mn
}
Maybe if you got rid of all the delays.
And used more descriptive pin names
Hello gmneamul
Consider
- not tested - compiled -
constexpr uint8_t LedPins[] {4, 5, 13, 14, 15, 18, 21, 22, 33};
constexpr uint32_t BlinkTime {1000};
void setup()
{
for (auto &LedPin : LedPins) pinMode(LedPin, OUTPUT);
}
void loop()
{
for (auto &LedPin : LedPins) digitalWrite(LedPin, digitalRead(LedPin) ? LOW : HIGH);
delay(BlinkTime);
}
Have a nice day and enjoy coding in C++.
here's another way..
struct LED {
byte Pin;
bool On;
unsigned long OnTime;
unsigned long OffTime;
unsigned long lastMillis;
};
LED LEDS[9] = {{4, false, 1000, 1000, 0}, {5, false, 5000, 5000, 0}, {13, false, 1000, 2000, 0}
, {14, false, 1000, 1000, 0}, {15, false, 2000, 2000, 0}, {18, false, 500, 500, 0}
, {21, false, 5000, 5000, 0}, {22, false, 300, 300, 0}, {33, false, 100, 100, 0}
};
void setup() {
//set leds pins to outputs
for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++)
{
pinMode(LEDS[i].Pin, OUTPUT);
}
}
void loop() {
for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++) {
if (LEDS[i].On) {
//led is on
if (millis() - LEDS[i].lastMillis >= LEDS[i].OnTime) {
LEDS[i].lastMillis = millis();
digitalWrite(LEDS[i].Pin, LOW);
LEDS[i].On = false;
}
} else {
//led is off
if (millis() - LEDS[i].lastMillis >= LEDS[i].OffTime) {
LEDS[i].lastMillis = millis();
digitalWrite(LEDS[i].Pin, HIGH);
LEDS[i].On = true;
}
}
}
}
change the on times and off times for what you desire..
good luck.. ~q
just in case
const byte Leds [] = { 10, 11, 12, 13 };
void loop () {
for (unsigned n = 0; n < sizeof(Leds); n++)
digitalWrite (Leds [n], ! digitalRead (Leds [n]));
delay (250);
}
void setup () {
for (unsigned n = 0; n < sizeof(Leds); n++)
pinMode (Leds [n], OUTPUT);
}
thank you so much for helping me. and my problem is solved.
need another help, i want to when will esp board start then all led will high, but this code when led start then all led stay off.
like this..
struct LED {
byte Pin;
bool On;
unsigned long OnTime;
unsigned long OffTime;
unsigned long lastMillis;
};
LED LEDS[9] = {{4, true, 1000, 1000, 0}, {5, true, 5000, 5000, 0}, {13, true, 1000, 2000, 0}
, {14, true, 1000, 1000, 0}, {15, true, 2000, 2000, 0}, {18, true, 500, 500, 0}
, {21, true, 5000, 5000, 0}, {22, true, 300, 300, 0}, {33, true, 100, 100, 0}
};
void setup() {
//set leds pins to outputs
for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++)
{
pinMode(LEDS[i].Pin, OUTPUT);
digitalWrite(LEDS[i].Pin, HIGH);
}
}
void loop() {
for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++) {
if (LEDS[i].On) {
//led is on
if (millis() - LEDS[i].lastMillis >= LEDS[i].OnTime) {
LEDS[i].lastMillis = millis();
digitalWrite(LEDS[i].Pin, LOW);
LEDS[i].On = false;
}
} else {
//led is off
if (millis() - LEDS[i].lastMillis >= LEDS[i].OffTime) {
LEDS[i].lastMillis = millis();
digitalWrite(LEDS[i].Pin, HIGH);
LEDS[i].On = true;
}
}
}
}
have fun.. ~q
thanks a lot.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.