Pick-Me Lamps

by leoadams in Circuits > Arduino

1900 Views, 22 Favorites, 0 Comments

Pick-Me Lamps

titel image.jpg
Pick-Me Lamp // Useless Machine

You always wanted to have two cute portable Lamps that will give you a nice cozy light, wherever you bring them?

But here comes the twist. As soon as you turn one lamp on, the other lamp will constantly fight for your attention by trying to outshine its opponent. They will not let you have a single second without their annoying blinking and fighting. You turn one off and move it away? Oops... guess it does not care and will just turn itself back on again and drive right back to you to challenge its twin!

Below you will find the full instructions on how to build the lamps, all necessary 3D models and the complete code!

Have fun and enjoy our fun little project!

This project was developed by Yuma Shimizu, Priyansh Jain, Amrutha TV and Leo Adams as part of the Computational Design and Digital Fabrication Seminar in the Integrative Technologies & Architectural Design Research (ITECH) M.Sc. Program

Supplies

Supplies 3.jpg

Here are all the supplies you need for each Lamp!

Lamp Body

The complete Body and mounting structure was printed on a 3D Printer.

You will find all 3D files you need for printing these listed parts below!

1x Lower Mounting Plate

1x Upper Mounting Plate

2x Custom Battery Case (3xAA/5xAA)

1x Outer Case Ring

1x Set of Monuting Pins to attach Outer Case Ring to Upper Mounting Plate

1x Lampshade

1x LED Mount Cylinder

Electronics

1x Arduino Nano

1x Breadboard (400 Pin)

1x L298N DC Motor Driver

2x N20 DC Motor (6V / 60rpm) get them with matching wheels! (ca 44x19mm) and brackets!

8x AA Batteries (8 x 1.5V)

1x LED RGB Strip (5V / 144 LEDs)

3x Light Dependent Resistors (LDR GL5528)

1x Push Button

3x 200Ω Resistors

1x 1kΩ Resistor

Lots of Jumper Cables (male/male and male/female - we just got a whole set of 120 cables

8x Battery Springs (recommended / not necessary)

Tools

6x M2.5 Bolts x Nuts (25mm)

4x M2.5 Bolts x Nuts (15mm)

4x M2.5 Bolts x Nuts (20mm or 25mm)

1x matching Allen Key

1x Tweezers (to hold the nuts)

1x Cutterknife

3D Printer and Filament

Tape!

You need eveything 2 times, so you can build both lamps!

Overview & Understand the Logic

flowchart diagram_アートボード 1 のコピー.png

Here, we briefly walk you through the logic.

Keep in mind that all the behaviours of the lamps are controlled only with light sensors; a light controlling a light.

Two Different States and Initial Setup_Stage 0-1

As you can see in the flowchart, there are two lamps set in different states: Lamp A and Lamp B. By default, both the lamps are set as Lamp A, so you need to press the button on one of the lamps to switch it to Lamp B, to have both states.

At Stage 1, Lamp A starts with lights=off and motor=off, while Lamp B lights a warm white colour.

Motion and Light Detection_Stage 2-3

As we mentioned in the beginning, motion is controlled by the values received from the light sensors(LDR) which are strategically placed around the lamp. Therefore, as soon as LampA finds another light source which is LampB, receiving LDR values, LampA moves towards LampB with a constant red light. LampA stops at a certain distance from LampB when its LDR values reach a threshold.

Light War and Light DetectionStage3-4

As LampA gets closer, LampB starts blinking because its LDR values also reach its threshold. When LampA stops, both LampA and B start blinking in red, starting a fight.

Loop_Stage5-1

The transition from stage ⑤ to ① is triggered by the user who gets annoyed by blinking lights and moves lamp A away from lamp B. Every time they stop and fight, their visit is recorded, so visit count indicates how many times they have met and been through the loop of ① to ⑤. Their behaviour changes according to visit count. As the count increases, the fight gets more and more aggressive, by increasing the blinking speed and changing the lighting colours.

Verification and State Switch_Stage5

at Stage ⑤, if visit count == 3 , state switch happens. Lamp A becomes Lamp B, and LampB becomes LampA, and the loop continues with switched roles.

After switching, visit count goes back to 0, to keep the loop again.

Assembly & Circuit

circuit_step_8_LED.png

Here you can already familiarize yourself with the assembly logic and the circuit.

Battery Packs

circuit_step_2_batterypack.png
IMG_9414.jpg
IMG_9415.jpg

You’ll need:

  1. Two 3D-printed battery cases
  2. Four jumper cables (preferably 2 red, 2 black)
  3. A cutter knife
  4. 8 AA batteries
  5. Battery springs (optional)

Steps:

  1. Cut one end of each jumper cable so you have one male end and one open end.
  2. Insert the batteries into the 3D-printed case. Use springs between the batteries to maintain contact and pressure — especially for the first and last battery where the open jumper cables are attached. so you can loop the open ends around them (If you don’t have springs, solder the batteries together instead.)
  3. Wrap tape around the case to hold the batteries securely in place.

Installing Battery Packs

IMG_9411.jpg
IMG_9410.jpg

You’ll need:

  1. Upper & Lower Mounting Plates
  2. 6x M2.5 Bolts x Nuts (25mm)
  3. Assembled Battery Packs

Steps:

  1. Place the battery packs between the two mounting plates.
  2. Connect the plates via the bolts (Apply enough pressure to hold the battery packs in place.

Installing Motors

IMG_9409.jpg
IMG_9408.jpg

You’ll need:

  1. 2x N20 DC Motor (with brackets!)
  2. 4x M2.5 Bolts x Nuts (15mm)
  3. 4x Jumper Cables (open end)

Steps:

  1. Connect jumper cables to the positive and negative terminals of each motor (this will be difficult to do once mounted.)
  2. Fix the motors using the brackets and secure them to the upper mounting plate using the bolts.
  3. Route the motor cables through the upper mounting plate to to the front, where the L298N motor driver will be installed.

Setup & Install Breadboard

circuit_step_5_breadboard.png
IMG_9406.jpg
IMG_9405.jpg
IMG_9404.jpg

You’ll need:

  1. 1x Arduiono Nano
  2. 1x Breadboard
  3. 6x Jumper Cable (male/female)
  4. 8x small sized Jumper Cables (male/male)
  5. 4x medium sized Jumper Cables (male/male)
  6. 3x 200Ω Resistors

Steps:

  1. Mount the Arduino on the breadboard.
  2. Connect Arduino:
  3. Arduino 5V Pin (Line 12) → positive rail on Breadborad
  4. Arduino GND Pin (Line 14) → negative rail on Breadboard
  5. Connect the two negative rails to each other.
  6. Connect LDR:
  7. Arduino A0 Pin (Line 4) → Line 18
  8. Positive rail → Line 18
  9. Jumper Cable → Line 18
  10. Jumper Cable → Line 19
  11. Resistor → Line 19 & 21
  12. Negative rail → Line 21
  13. Repeat the connections for the other two LDRs (LDRs only shown in circuit diagram for reference, where to plug the cables. Dont install them yet.)

Setup & Install Motordriver

circuit_step_6_motordriver.png
IMG_9402.jpg
IMG_9403.jpg

You’ll need:

  1. 1x L298N Motordriver
  2. 8x Jumper Cable

Steps:

  1. Connect:
  2. Motor Wires to L298N (OUT1-OUT4) as shown in Diagram
  3. L298N to Arduino (D2,D3,D4,D5,D9,D10) as shown in Diagram
  4. 7.5V Battery Positive → L298N 12V
  5. 7.5V Battery Negative → Negative Rail on Breadboard
  6. L298N GND → Negative Rail on Breadboard
  7. L298N 5V → Positive Rail on Breadboard (the one, the Arduino 5V is connected to)
  8. Mount the L298N on the upper mounting plate

Setup & Install Case

circuit_step_case.png
IMG_9398.jpg
IMG_9401.jpg
WhatsApp Image 2025-06-09 at 21.17.37.jpeg
WhatsApp Image 2025-06-09 at 21.17.37 (1).jpeg

You’ll need:

  1. 3x LDR
  2. 1x Push Button
  3. 1x Outer Case Ring
  4. 1x Set of Mounting Pins
  5. 4x M2.5 Bolts x Nuts (20mm or 25mm)

Steps:

  1. Insert each LDR into the ring’s predefined holes from the outside.
  2. Bend the legs of the LDRs button inside the ring and tape them in place.
  3. Insert the push button into the square cutout at the back of the ring.
  4. Position the case ring on the upper mounting plate with the button facing the back (behind the breadboard).
  5. Secure the outer case ring in place, using mounting pins and the bolts as shown in the picture.
  6. Connect the LDRs to the already installed Jumper Cables (Left on Line19/20, Middle on Line 22/23, Right on Line 26/27)
  7. Connect:
  8. Button → Line 26 & Line 27
  9. Arduino D7 (Line 6) → Line 26
  10. Line 26 → Positive Rail
  11. Line 27 → Negative Rail

Install LED

circuit_step_8_LED.png
IMG_9394.jpg
IMG_9397.jpg

You’ll need:

  1. 1x LED Strip
  2. Mount Cylinder
  3. 2 Jumper Cables, matching the colors of your LED Cables (male/male)
  4. 1kΩ Resistor

Steps:

  1. Connect:
  2. LED GND → Breadboard negative rail
  3. LED DATA → Breadboard Line 21
  4. Resistor → Line 21 & 20
  5. Arduino D6 Pin → Line 20
  6. 4.5 Battery Negative → Breadboard negative rail
  7. 4.5 Battery Positive → LED Positive
  8. Stick the LED strip onto the mount cylinder and mount it on your robot.

Install Code

Install the provided Code onto your Arduino.

Adjust Code

You can test the lamps individually with a flashlight. Initially the Lamp starts in State A. If you press the button for 2 seconds, State B is initiated.

Use a flashlight on the lamp to test if the behaviour is working as intended.

To get it running, you might need to adjust the light threshold values in the code, depending on how lit up your test environment is. Usually the darker the environment is, the better.

Have Fun

Now just get ready to send them down a spiral of an endless fight over your attention, trying to prove that they shine better than their opponent, while not giving you a single second of the nice lighting you actually want. Have fun!