const int buttonPin = 18; // Button pin
const int ledPin = 5; // LED pin
const int potPin = 34; // Potentiometer pin
const int ldrPin = 35; // LDR pin
bool ledState = false;
void setup() {
pinMode(buttonPin, INPUT_PULLDOWN);
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
void loop() {
static bool lastButtonState = HIGH;
bool buttonState = digitalRead(buttonPin);
// Toggle LED state when button is pressed
if (buttonState == HIGH && lastButtonState == LOW) {
ledState = !ledState;
delay(200); // Debounce delay
}
lastButtonState = buttonState;
// Read potentiometer for brightness control
int potValue = analogRead(potPin);
int brightness = map(potValue, 0, 4095, 0, 255);
// Read LDR for automatic night mode
int ldrValue = analogRead(ldrPin);
int ldrbrightness = map(ldrValue, 0, 4095, 0, 255);
bool nightMode = (ldrValue < 1500); // Threshold for darkness
// Control LED behavior
if (ledState) {
analogWrite(ledPin, 255); // Full brightness in darkness
}
else {
analogWrite(ledPin, 0);
}
if (ledState && !nightMode && !brightness) {
analogWrite(ledPin, ledState ? ldrbrightness : 0);
}
else if (ledState && nightMode && brightness) {
analogWrite(ledPin, ledState ? brightness : 0);
}
else {
analogWrite(ledPin, 0);
}
// for potentiometer
// Display values on Serial Monitor
Serial.print("Button: "); Serial.print(ledState ? "ON" : "OFF");
Serial.print(" | Potentiometer: "); Serial.print(potValue);
Serial.print(" | Brightness: "); Serial.print(brightness);
Serial.print(" | LDR: "); Serial.println(ldrbrightness);
delay(100);
}