LDT – Light Dependent Theremin

When I was thinking about what to make for this week’s assignment I was came across a clip from The Big Bang Theory where Sheldon was playing the Theremin.

I theremin is the musical instrument that makes sound based on how electromagnetic fields produced by two antennae are altered by the hand movements between the two.

To mimic this I initially tried to use a Ultrasonic sensor to alter the sound. While this worked it only altered the sound based on the distance of the object[hand] from the sensor, the sound was altered based on only one direction.

I then used a LDR to do the same thing. This allowed me to change the sound by moving a light source around the LDR. This allowed me control the sounds by movement of the light source both horizontally and vertically.

I also added a button that multiplies the value of the photoresistor by 2 when pushed once and then the function gets disabled when pushed again. This yields a siren like effect when the button is repeatedly pushed.

int ldrPin = A0;
int playButton = 7;

bool multiplyFrequency = false;
int prevButtonState = LOW;

void setup() {
  pinMode(ldrPin, INPUT);
  pinMode(playButton, INPUT);

void loop() {
  //  int ultSonData = getUltraSonicData();
  int ldrData = getLDRData();
  //  int transformed = transformData(related);
  if (multiplyFrequency) {
    tone(4, ldrData * 1.5);
  } else {
    tone(4, ldrData);


float getLDRData() {
  return floor(analogRead(ldrPin));

float changeState() {
  //  Serial.println(digitalRead(playButton));
  if (prevButtonState == LOW && digitalRead(playButton) == HIGH) {
    multiplyFrequency = !multiplyFrequency;
  prevButtonState = digitalRead(playButton);



Leave a Reply