Project Concept:
Drawing inspiration from everyday objects and interactions, this assignment presents a simple light switch and dimmer found in most houses around the world. I’m reimagining these familiar components in a playful and interactive way using Arduino and LEDs. The dynamics consists of a modern twist on traditional controls, where pressing a button toggles the red LED while turning a knob adjusts the brightness of the green LED.
Materials:
- Arduino Uno board
- Jumper wires
- Green LED
- Red LED
- Two 330 ohm resistors
- One 10k ohm resistor
- Push button
- Potentiometer
Implementation:
The circuit reflects the simplicity and functionality of a traditional light switch and dimmer. The push button acts as the on/off switch for the red LED, providing tactile feedback similar to pressing a light switch. Meanwhile, the potentiometer emulates the rotary dial of a dimmer, allowing users to adjust the brightness of the green LED by turning the knob.
Schematics:
Code:
const int SENSOR_PIN = A0; // Analog input pin for sensor controlling red LED brightness const int CONTROL_PIN = 2; // Digital input pin for control button to switch LED colors const int RED_LED = 5; // Digital output pin for LED (red) const int GREEN_LED = 6; // Digital output pin for LED (green) int redBrightness = 0; // Red LED brightness controlled by sensor bool buttonPressed = false; // Button state int colorIndex = 0; // Index of current color void setup() { pinMode(SENSOR_PIN, INPUT); pinMode(CONTROL_PIN, INPUT_PULLUP); pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); } void loop() { // Read sensor value to control brightness of red LED redBrightness = analogRead(SENSOR_PIN) / 4; // Divide by 4 to map 0-1023 to 0-255 // Set the brightness of the red LED analogWrite(RED_LED, redBrightness); // Check control button state if (digitalRead(CONTROL_PIN) == LOW) { if (!buttonPressed) { // Toggle color index colorIndex = (colorIndex + 1) % 2; buttonPressed = true; // Turn on green LED when button is pressed digitalWrite(GREEN_LED, HIGH); } } else { buttonPressed = false; // Turn off green LED when button is released digitalWrite(GREEN_LED, LOW); } }
Video Demonstration:
Reflection and Improvements:
Finally, I’m satisfied with the project outcome, as it bridges the gap between simplicity and innovation, reimagining everyday objects in a playful and interactive manner while showcasing the creative potential of Arduino-based projects. Some improvements are as follow:
- Experiment with different button and knob designs to enhance user experience and aesthetic appeal.
- Integrate additional sensors, such as light sensors or temperature sensors, to create more dynamic lighting effects and automation capabilities.