Unique Arduino Lamp Retirement Gift (Member Project)

Creativity is great, but even better is having the skill to express that creativity in a useful and fun way.

This unique Arduino lamp was created by James, a member of the Programming Electronics Academy as a retirement gift for a fellow employ of a power plant.

Unique Arduino Lamp :: Featured Student Project

This project was submitted by one of our members.  You can see more of our member's projects here.

Not a member yet?  Sign up here.

James Writes:

“I was recently approached by a co-worker to create a unique retirement gift.  They had some obsolete electronic modules, the idea was to make it function as a desk lamp.

The electronic module had 4 push buttons marked ” up, down, manual and auto”.  A potentiometer and meter.  I decided that when in the manual mode the up and down would simply turn the light on and off.

While in the auto mode, the lamp would turn on and off  by using a  photo-resistor and display its value via the meter and be trimmed by the potentiometer.

A pulsating blue glow below some plexiglass tubes would simulate a nuclear pile.”

James was kind enough to provide all the code and schematic for his project.

You have done an excellent job putting together a comprehensive course that is easy to understand and follow. It has helped me progress very quickly in my understanding how Arduino works.

James Greever

Arduino Lamp Code:

/* This program is to use a 4 button controller with POT and meter, to control a desk lamp.
 If AUTO is depressed, the CPU will look at a photosensor to determine light level and automatically lite
 the lamp. Its sensativity is determined by the POT and displayed on the meter.
 If MANUAL is depressed, the user must select the UP (ON) or DOWN (OFF) button to turn the lamp on or off.
 */

// 4 push buttons
int autoSw = 11; // white wire    
int manSw = 12; // yellow wire
int manOnSw = 9; // green wire
int manOffSw = 10; // blue wire
// led lamps inside push buttons
int manlite = 7; 
int manOnlite = 6;
int manOfflite = 5;
// auto has two sets of lights
int autolite1 =4;
int autolite2 =2;
// blue nuclear pile lite
int bluelite = 3;
int brightness =0;
int fadeAmount =5;
// light sensor, which can be adj with POT
int lightSensor = A1;
int lightVal = 0;
// relay that will control lamp
int lampRelay = 8;
int manual;


void setup(){
  pinMode(manSw, INPUT);
  pinMode(manOnSw, INPUT);
  pinMode(manOffSw, INPUT);
  pinMode(autoSw, INPUT);
  pinMode(lampRelay, OUTPUT);
  pinMode(manlite, OUTPUT);
  pinMode(manOnlite, OUTPUT);
  pinMode(manOfflite, OUTPUT);
  pinMode(autolite1, OUTPUT);
  pinMode(autolite2, OUTPUT);
  pinMode(bluelite, OUTPUT);
  digitalWrite(lampRelay, LOW);

}

void loop(){
  analogWrite(bluelite,brightness);
  brightness = brightness + fadeAmount;
  if (brightness == 0 || brightness == 255){
    fadeAmount = -fadeAmount;
  }
  // if the MAN switch was depressed and the UP/ON button then turn on lamp
  if (digitalRead (manSw) == HIGH){
    manual = 1;
  }
  if (manual == 1){
    Serial.println("turn lamp ON");
    digitalWrite (manlite, HIGH);
    digitalWrite (autolite1, LOW);
    digitalWrite (autolite2, LOW);
    MANUAL();
  } 

  // if the AUTO switch was depressed then run sub-routine AUTOMATIC
  else if (digitalRead (autoSw) == HIGH){
    manual = 0;
  }
  if (manual == 0){   
    Serial.println("autoSw");
    AUTOMATIC();
  }
  delay(30);
}


void AUTOMATIC(){
  // read the light sensor value and install in variable "lightVal"
  lightVal = analogRead(lightSensor);
  Serial.println(lightVal);
  delay (100);
  // now check to see if that value is < 500 and if yes, turn the lamp on
  if (lightVal < 360){     digitalWrite(lampRelay, HIGH);   }   // else if the value is > 500, then turn the lamp off
  else if (lightVal > 400){
    digitalWrite(lampRelay, LOW);
  }

}

void MANUAL(){
  if (digitalRead (autoSw) == HIGH){
    manual = 0;
  }
  if (manual == 0){
    digitalWrite (manOnlite, LOW);
    digitalWrite (manOfflite, LOW);
    digitalWrite (manlite, LOW);
    digitalWrite(autolite1, HIGH);
    digitalWrite(autolite2, HIGH);
    AUTOMATIC();
  }
  if (digitalRead (manOnSw) == HIGH & manual == 1){
    digitalWrite (manOnlite, HIGH);
    digitalWrite (manOfflite, LOW);
    digitalWrite (autolite1, LOW);
    digitalWrite (autolite2, LOW);
    digitalWrite (lampRelay, HIGH);
  }
  else if (digitalRead (manOffSw) == HIGH & manual == 1){
    digitalWrite (manOfflite, HIGH);
    digitalWrite (autolite1, LOW);
    digitalWrite (autolite2, LOW);
    digitalWrite (manOnlite, LOW);
    digitalWrite (lampRelay, LOW);
  } 
}    

 Arduino Lamp Schematic:

Click here to Download

installing Arduino libraries

Installing Arduino Libraries | Beginners Guide

IoT sewage project

Pumping poo! An IoT sewage project

ESP32 webOTA updates

How to update ESP32 firmware using web OTA [Guide + Code]

error message Brackets Thumbnail V1

expected declaration before ‘}’ token [SOLVED]

Compilation SOLVED | 1

Compilation error: expected ‘;’ before [SOLVED]

Learn how to structure your code

Leave a Comment