// Define the pin numbers for the LEDs
int frontLightPin = 2;
int rightBlinkerPin = 3;
int leftBlinkerPin = 4;
int brakeLightPin = 5;
int frontFogLightPin = 10;
int rearFogLightPin = 11;
int drlLightPin = 12; // Daylight Running Lights (DRL) pin

// Define the pin numbers for the toggle switches
int frontLightSwitchPin = 6;
int rightBlinkerSwitchPin = 7;
int leftBlinkerSwitchPin = 8;
int brakeLightSwitchPin = 9;
int frontFogLightSwitchPin = A0; // A0 is used for the front fog light switch
int rearFogLightSwitchPin = A1; // A1 is used for the rear fog light switch
int brighterBrakeLightSwitchPin = A2; // A2 is used for the brighter brake light switch
int drlLightSwitchPin = A3; // A3 is used for the DRL toggle switch

bool frontLightOn = false;
bool rightBlinkerOn = false;
bool leftBlinkerOn = false;
bool brakeLightOn = false;
bool brighterBrakeLightOn = false;
bool frontFogLightOn = false;
bool rearFogLightOn = false;
bool drlLightOn = false; // DRL state
unsigned long previousMillis = 0;
const long interval = 350; // Blink interval in milliseconds

void setup() {
  // Initialize the LED pins as outputs
  pinMode(frontLightPin, OUTPUT);
  pinMode(rightBlinkerPin, OUTPUT);
  pinMode(leftBlinkerPin, OUTPUT);
  pinMode(brakeLightPin, OUTPUT);
  pinMode(frontFogLightPin, OUTPUT);
  pinMode(rearFogLightPin, OUTPUT);
  pinMode(drlLightPin, OUTPUT); // DRL pin as output

  // Initialize the switch pins as inputs with pull-up resistors
  pinMode(frontLightSwitchPin, INPUT_PULLUP);
  pinMode(rightBlinkerSwitchPin, INPUT_PULLUP);
  pinMode(leftBlinkerSwitchPin, INPUT_PULLUP);
  pinMode(brakeLightSwitchPin, INPUT_PULLUP);
  pinMode(frontFogLightSwitchPin, INPUT_PULLUP);
  pinMode(rearFogLightSwitchPin, INPUT_PULLUP);
  pinMode(brighterBrakeLightSwitchPin, INPUT_PULLUP);
  pinMode(drlLightSwitchPin, INPUT_PULLUP); // DRL switch as input
}

void loop() {
  // Read the state of the front light switch
  if (digitalRead(frontLightSwitchPin) == LOW) {
    frontLightOn = !frontLightOn;
    digitalWrite(frontLightPin, frontLightOn ? HIGH : LOW);
    delay(100);
  }

  // Read the state of the right blinker switch
  if (digitalRead(rightBlinkerSwitchPin) == LOW) {
    rightBlinkerOn = !rightBlinkerOn;
    digitalWrite(rightBlinkerPin, rightBlinkerOn ? HIGH : LOW);
    delay(100);
  }

  // Read the state of the left blinker switch
  if (digitalRead(leftBlinkerSwitchPin) == LOW) {
    leftBlinkerOn = !leftBlinkerOn;
    digitalWrite(leftBlinkerPin, leftBlinkerOn ? HIGH : LOW);
    delay(100);
  }

  // Read the state of the brake light switch
  if (digitalRead(brakeLightSwitchPin) == LOW) {
    brakeLightOn = !brakeLightOn;
    digitalWrite(brakeLightPin, brakeLightOn ? HIGH : LOW);
    delay(100);
  }

  // Read the state of the front fog light switch
  if (digitalRead(frontFogLightSwitchPin) == LOW) {
    frontFogLightOn = !frontFogLightOn;
    digitalWrite(frontFogLightPin, frontFogLightOn ? HIGH : LOW);
    delay(100);
  }

  // Read the state of the rear fog light switch
  if (digitalRead(rearFogLightSwitchPin) == LOW) {
    rearFogLightOn = !rearFogLightOn;
    digitalWrite(rearFogLightPin, rearFogLightOn ? HIGH : LOW);
    delay(100);
  }

  // Read the state of the brighter brake light switch
  if (digitalRead(brighterBrakeLightSwitchPin) == LOW) {
    brighterBrakeLightOn = true;
  }

  // Read the state of the DRL switch
  if (digitalRead(drlLightSwitchPin) == LOW) {
    drlLightOn = !drlLightOn;
    digitalWrite(drlLightPin, drlLightOn ? HIGH : LOW);
    delay(100);
  }

  // Control the brake light brightness
  if (brighterBrakeLightOn && brakeLightOn) {
    analogWrite(brakeLightPin, 200); // Adjust the brightness level as needed
  } else {
    digitalWrite(brakeLightPin, brakeLightOn ? HIGH : LOW);
  }

  // Implement blinkers
  unsigned long currentMillis = millis();
  if ((leftBlinkerOn || rightBlinkerOn) && (currentMillis - previousMillis >= interval)) {
    previousMillis = currentMillis;
    digitalWrite(leftBlinkerPin, leftBlinkerOn ? !digitalRead(leftBlinkerPin) : LOW);
    digitalWrite(rightBlinkerPin, rightBlinkerOn ? !digitalRead(rightBlinkerPin) : LOW);
  }
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
vcc1:VCC
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C
led9:A
led9:C
led10:A
led10:C
led11:A
led11:C
led12:A
led12:C
led13:A
led13:C
led14:A
led14:C
led15:A
led15:C
led16:A
led16:C
r8:1
r8:2
r9:1
r9:2
r10:1
r10:2
r11:1
r11:2
r12:1
r12:2
r13:1
r13:2
r14:1
r14:2
r15:1
r15:2
r16:1
r16:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r
btn5:1.l
btn5:2.l
btn5:1.r
btn5:2.r
btn6:1.l
btn6:2.l
btn6:1.r
btn6:2.r
btn7:1.l
btn7:2.l
btn7:1.r
btn7:2.r
btn8:1.l
btn8:2.l
btn8:1.r
btn8:2.r