Hello,
I am making an RC firefighter truck and I found this great code from a forum member RoelDriessen, which suits me great, but I would like to have fixed HIGH time for only two outputs.
Can someone help me with this?
This is the code, I would like to have led5kr and led6kr fixed HIGH output like 20 millis so it would be an effect like a strobo lights with random on feature.
Hope you guys can help me, thank you in advance.
/* Multiple independent blinking LED
This scetch was build with help of many forum members and contains 3 ways of blinking leds, for example used for Firetrucks in Netherlands, Germany etc
Led 1+2 are representing normal beacon who have an different interval so prevent a standard left right.
Led 3+4 are representing blinkers that simultaneously flash 3 times short and wait, this can be used for blinkers in the grill
Led 4+5 are representing blinkers that flash at a random speed and interval
*/
// Which pins are connected to which LED
const byte led1zw = 2;
const byte led2zw = 3 ;
const byte led3k = 4 ;
const byte led4k = 5;
const byte led5kr = 6 ;
const byte led6kr = 7;
// Time periods of blinks in milliseconds (1000 milliseconds to a second).
// Time variable and constants are always unsigned long
const unsigned long led1zwinterval = 300UL ;
const unsigned long led2zwinterval = 275UL ;
unsigned long previousMillis;
unsigned long previousMillisrandom;
unsigned long previousMillisrandom1;
unsigned long intervalblinkrandom = 200UL; // not a constant, it will be changed
unsigned long intervalblinkrandom1 = 200UL; // not a constant, it will be changed
unsigned long currentMillis = millis();
const long periods[] = {50, 50, 50, 50, 50, 50, 1000, 0};
byte index;
// Variable holding the timer value so far. One for each "Timer"
unsigned long led1zwtimer = 0 ;
unsigned long led2zwtimer = 0 ;
unsigned long led3ktimer = 0 ;
unsigned long led4_5ktimer = 0 ;
unsigned long led6krtimer = 0 ;
// Variable to know what the current LED state is
int led1zwState = LOW ;
int led2zwState = LOW ;
int led3kState = LOW ;
int led4kState = LOW ;
int led5krState = LOW ;
int led6krState = LOW ;
void setup() {
pinMode (led1zw, OUTPUT) ;
pinMode (led2zw, OUTPUT) ;
pinMode (led3k, OUTPUT) ;
pinMode (led4k, OUTPUT) ;
pinMode (led5kr, OUTPUT) ;
pinMode (led6kr, OUTPUT) ;
led1zwtimer = millis () ;
led2zwtimer = millis () ;
led3ktimer = millis () ;
led4_5ktimer = millis () ;
led6krtimer = millis () ;
}
void loop()
{
unsigned long currentMillis = millis();
if ( (millis () - led1zwtimer) >= led1zwinterval ) {
digitalWrite(led1zw, !digitalRead(led1zw));
led1zwtimer = millis () ;
}
if ( (millis () - led2zwtimer) >= led2zwinterval ) {
digitalWrite(led2zw, !digitalRead(led2zw));
led2zwtimer = millis () ;
}
if (millis() - led4_5ktimer >= periods[index])
{
digitalWrite(led3k, !digitalRead(led3k));
digitalWrite(led4k, !digitalRead(led4k));
index = ++index % 8;
led4_5ktimer = millis();
}
if ( currentMillis - previousMillisrandom >= intervalblinkrandom)
{
previousMillisrandom = currentMillis;
intervalblinkrandom = random( 25, 300);
digitalWrite( led5kr, digitalRead( led5kr) == HIGH ? LOW : HIGH);
}
if ( currentMillis - previousMillisrandom1 >= intervalblinkrandom1)
{
previousMillisrandom1 = currentMillis;
intervalblinkrandom1 = random( 50, 275);
digitalWrite( led6kr, digitalRead( led6kr) == HIGH ? LOW : HIGH);
}
}