Concept)
There were two conditions I wanted to meet when creating this instrument
– it should involve both hands
– it should be able to play different notes separately (i.e. the sound is not continuous)
It naturally made sense to have one of the hands be responsible of how long a note should be played, and the other hand to specify the note. I saw different videos for inspiration and saw instruments that use the distance to decide the note to be played.
Production)
Code)
int trig = 10;
int echo = 11;
int light = 5;
long duration;
long distance;
int buttonState;
void setup() {
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
pinMode(light, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = (duration / 2) * 0.0344;
/*
duration = time it took for ultrasonic pulse to travel to and back from the object
distance equation: conversion from duration to distance
because the duration includes the travel time to and back from the object,
divided by 2
multiplied by 0.0344: speed of sound in air (in room temperature
= 343 m/s ==> convert to cm
*/
int notes[7] = {261, 294, 329, 349, 392, 440, 494};
//C, D, E, F, G, A, B
buttonState = analogRead(A1);
int sound;
if (distance < 0 || distance > 50 || buttonState < 100) {
sound = -1;
} else if (distance <= 5) {
sound = 0;
} else if (distance <= 10) {
sound = 1;
} else if (distance <= 15) {
sound = 2;
} else if (distance <= 20) {
sound = 3;
} else if (distance <= 30) {
sound = 4;
} else if (distance <= 40) {
sound = 5;
} else {
sound = 6;
}
if (sound != -1) {
digitalWrite(light, HIGH);
Serial.println(sound);
tone(12, notes[sound]);
} else {
noTone(12);
digitalWrite(light, LOW);
}
}
I think the most interesting part of this code was figuring out how to convert the duration to distance, and the distance to different notes.
Future Improvements)
I think it’s be interesting if I can connect a force censor, for instance, to create the beat on the background. Then, it would have a simple instrument that consists of the base beat (like a drum) and the melody part through the hands.