#include <Bounce2.h>
#define LEDC_CHANNEL_1 1
#define LEDC_CHANNEL_2 2
#define LEDC_CHANNEL_3 3
#define LEDC_CHANNEL_4 4
#define LEDC_CHANNEL_5 5
#define LEDC_CHANNEL_6 6
#define LEDC_BASE_FREQ 5000
#define LEDC_RESOLUTION 8
String command;
int PWMValueHalf = 30;
int PWMValueFull = 255;
int PWMValueLow = 30;
int PWMValueOff = 0;
const int HeadL = 12;
const int HeadR = 14;
const int BrakeL = 26;
const int BrakeR = 27;
const int FogL = 33;
const int FogR = 32;
const int button1 = 16; //lights on /off
const int button2 = 17; //high beam / low beam
const int button3 = 22; // brake lights
const int button4 = 5; // fog lights
Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();
Bounce debouncer3 = Bounce();
Bounce debouncer4 = Bounce();
bool LoghtsOn = false;
bool HeadL_HeadR_Status = false;
bool BrakeL_BrakeR_Status = false;
bool FogL_FogR_Status = false;
void onOff(int pin) {
ledcWrite(LEDC_CHANNEL_1, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_2, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_3, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_4, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_5, LoghtsOn ? PWMValueOff : PWMValueOff);
ledcWrite(LEDC_CHANNEL_6, LoghtsOn ? PWMValueOff : PWMValueOff);
Serial.println("Lights: " + String(LoghtsOn ? "ON" : "OFF"));
}
void setup() {
Serial.begin(9600);
pinMode(HeadL, OUTPUT);
pinMode(HeadR, OUTPUT);
pinMode(BrakeL, OUTPUT);
pinMode(BrakeR, OUTPUT);
pinMode(FogL, OUTPUT);
pinMode(FogR, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
pinMode(button4, INPUT_PULLUP);
debouncer1.attach(button1);
debouncer1.interval(5);
debouncer2.attach(button2);
debouncer2.interval(5);
debouncer3.attach(button3);
debouncer3.interval(5);
debouncer4.attach(button4);
debouncer4.interval(5);
ledcSetup(LEDC_CHANNEL_1, LEDC_BASE_FREQ, LEDC_RESOLUTION);
ledcSetup(LEDC_CHANNEL_2, LEDC_BASE_FREQ, LEDC_RESOLUTION);
ledcSetup(LEDC_CHANNEL_3, LEDC_BASE_FREQ, LEDC_RESOLUTION);
ledcSetup(LEDC_CHANNEL_4, LEDC_BASE_FREQ, LEDC_RESOLUTION);
ledcSetup(LEDC_CHANNEL_5, LEDC_BASE_FREQ, LEDC_RESOLUTION);
ledcSetup(LEDC_CHANNEL_6, LEDC_BASE_FREQ, LEDC_RESOLUTION);
ledcAttachPin(HeadL, LEDC_CHANNEL_1);
ledcAttachPin(HeadR, LEDC_CHANNEL_2);
ledcAttachPin(BrakeL, LEDC_CHANNEL_3);
ledcAttachPin(BrakeR, LEDC_CHANNEL_4);
ledcAttachPin(FogL, LEDC_CHANNEL_5);
ledcAttachPin(FogR, LEDC_CHANNEL_6);
}
void loop() {
debouncer1.update();
debouncer2.update();
debouncer3.update();
debouncer4.update();
//==================Lights On/Off===========================
if (debouncer1.fell()) {
onOff();
LoghtsOn = !LoghtsOn;
}
if (Serial.available()) {
command = Serial.readStringUntil('\n');
command.trim();
if (command.equals("B1")) {
LoghtsOn = !LoghtsOn;
ledcWrite(LEDC_CHANNEL_1, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_2, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_3, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_4, LoghtsOn ? PWMValueHalf : PWMValueOff);
ledcWrite(LEDC_CHANNEL_5, LoghtsOn ? PWMValueOff : PWMValueOff);
ledcWrite(LEDC_CHANNEL_6, LoghtsOn ? PWMValueOff : PWMValueOff);
Serial.println("Lights: " + String(LoghtsOn ? "ON" : "OFF"));
}
//==================Lights On/Off===========================
}
}