can someone rewrite the code for one LED strip, without hazzard lights, that the DRL is yellow instead of white and that the DRL is constantly working except when the turn signal is turned on.
[tt][color=#222222]#include <FastLED.h>
#define NUM_STRIPS 2 // number of led strips (in this example are front left and front right)
#define NUM_LEDS_PER_STRIP 20 // number of leds per each strip
CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];
uint8_t gHue = 0; // rotating "base color" used by many of the patterns
const int buttonPinL = 2; // turn left
const int buttonPinR = 3; // turn right
const int buttonPinEng = 4; // engine on to start day lights
const int buttonPinKnightRider = 5; // knight rider lights
int buttonStateL = 0;
int buttonStateR = 0;
int engineOn = 0;
int KnightRiderState = 0;
int stateL = 0;
int stateR = 0;
uint8_t gBrtL = 0;
uint8_t gBrtR = 0;
int maxBrt = 120; // maxim brightness day lights - from 0 to 255
int delayTurnLedAnim = 25; //delay of each led in turn light animation
int delayTurnLedOff = 250; //delay from animation to black (is used twice)
int delayLedToDayLight = 500; // delay from animation to day light on
int nrAnimAfterOff = 3; // number of animations for a single impulse
void setup() {
//Serial.begin(9600);
pinMode(buttonPinL, INPUT);
pinMode(buttonPinR, INPUT);
pinMode(buttonPinEng, INPUT);
pinMode(buttonPinKnightRider, INPUT);
FastLED.addLeds<NEOPIXEL, 8>(leds[0], NUM_LEDS_PER_STRIP); //led strip for front left
FastLED.addLeds<NEOPIXEL, 9>(leds[1], NUM_LEDS_PER_STRIP); //led strip for front right
attachInterrupt(digitalPinToInterrupt(buttonPinL),btnPressL,RISING); // we use interrupt for instant reaction of turn lights
attachInterrupt(digitalPinToInterrupt(buttonPinR),btnPressR,RISING); // we use interrupt for instant reaction of turn lights
fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black); // some led strips are all on at power on, so let's power them off at boot
fill_solid(leds[1], NUM_LEDS_PER_STRIP, CRGB::Black); // some led strips are all on at power on, so let's power them off at boot
FastLED.show();
}
void loop() {
// read the input state
buttonStateL = digitalRead(buttonPinL);
buttonStateR = digitalRead(buttonPinR);
KnightRiderState = digitalRead(buttonPinKnightRider);
EVERY_N_MILLISECONDS( 1 ){
engineOn = digitalRead(buttonPinEng);
}
//function for hazard lights
if(stateL != 0 && stateR != 0){
for(int dot = 0; dot < NUM_LEDS_PER_STRIP; dot++) {
leds[0][dot] = 0xff6a00; // color for left turn light
leds[1][dot] = 0xff6a00; // color for right turn light
FastLED.show();
delay(delayTurnLedAnim);
}
delay(delayTurnLedOff);
fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black);
fill_solid(leds[1], NUM_LEDS_PER_STRIP, CRGB::Black);
FastLED.show();
delay(delayTurnLedOff);
if(buttonStateL != HIGH || buttonStateR != HIGH){
if(buttonStateL == HIGH){
stateL = 1;
}else{
stateL = 0;
gBrtL = 0;
}
if(buttonStateR == HIGH){
stateR = 1;
}else{
stateR = 0;
gBrtR = 0;
}
if(buttonStateL != HIGH && buttonStateR != HIGH){
delay(delayLedToDayLight);
}
}
//function for left turn lights
}else if(stateL != 0){
if(KnightRiderState == HIGH && engineOn == LOW){
fill_solid(leds[1], NUM_LEDS_PER_STRIP, CRGB::Black);
}
for(int dot = 0; dot < NUM_LEDS_PER_STRIP; dot++) {
leds[0][dot] = 0xff6a00; // color for left turn light
FastLED.show();
delay(delayTurnLedAnim);
}
delay(delayTurnLedOff);
fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black);
FastLED.show();
delay(delayTurnLedOff);
stateL++;
if(stateL >= nrAnimAfterOff && buttonStateL != HIGH){
stateL = 0;
gBrtL = 0;
delay(delayLedToDayLight);
}
//function for right turn lights
}else if(stateR != 0){
if(KnightRiderState == HIGH && engineOn == LOW){
fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black);
}
for(int dot = 0; dot < NUM_LEDS_PER_STRIP; dot++) {
leds[1][dot] = 0xff6a00; // color for right turn light
FastLED.show();
delay(delayTurnLedAnim);
}
delay(delayTurnLedOff);
fill_solid(leds[1], NUM_LEDS_PER_STRIP, CRGB::Black);
FastLED.show();
delay(delayTurnLedOff);
stateR++;
if(stateR >= nrAnimAfterOff && buttonStateR != HIGH){
stateR = 0;
gBrtR = 0;
delay(delayLedToDayLight);
}
}else{
if(stateL == 0 && engineOn == HIGH){
if(gBrtL <= maxBrt){
EVERY_N_MILLISECONDS( 1 ) { gBrtL++; }
fill_solid( leds[0], NUM_LEDS_PER_STRIP, CHSV(0,0,gBrtL));
FastLED.show();
}
}else{
if(gBrtL > 0){
EVERY_N_MILLISECONDS( 1 ) { gBrtL--; }
fill_solid( leds[0], NUM_LEDS_PER_STRIP, CHSV(0,0,gBrtL));
FastLED.show();
}else{
if(KnightRiderState == HIGH){
gHue = 0;
//EVERY_N_MILLISECONDS( 20 ) { gHue++; }
fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, 20);
int pos = beatsin16( 30, 0, NUM_LEDS_PER_STRIP-1 );
leds[0][pos] += CHSV( gHue, 255, 192);
FastLED.show();
}
}
}
if(stateR == 0 && engineOn == HIGH){
if(gBrtR <= maxBrt){
EVERY_N_MILLISECONDS( 1 ) { gBrtR++; }
fill_solid( leds[1], NUM_LEDS_PER_STRIP, CHSV(0,0,gBrtR));
FastLED.show();
}
}else{
if(gBrtR > 0){
EVERY_N_MILLISECONDS( 1 ) { gBrtR--; }
fill_solid( leds[1], NUM_LEDS_PER_STRIP, CHSV(0,0,gBrtR));
FastLED.show();
}else{
if(KnightRiderState == HIGH){
gHue = 0;
//EVERY_N_MILLISECONDS( 20 ) { gHue++; }
fadeToBlackBy( leds[1], NUM_LEDS_PER_STRIP, 20);
int pos = beatsin16( 30, 0, NUM_LEDS_PER_STRIP-1 );
leds[1][pos] += CHSV( gHue, 255, 192);
FastLED.show();
}
}
}
}
}
void btnPressL(){
stateL = 1;
for(int nr = 0; nr < 1500; nr++) {
buttonStateR = digitalRead(buttonPinR);
if(buttonStateR == 1){
stateR = 1;
}
}
}
void btnPressR(){
stateR = 1;
for(int nr = 0; nr < 1500; nr++) {
buttonStateL = digitalRead(buttonPinL);
if(buttonStateL == 1){
stateL = 1;
}
}
}[/color]
[/tt]