Coming to ITP, the physical computing classes had been highlighted as one of the star pieces of the program. The course midterm had also been highly talked about because of the consistent Halloween theme (since the class' midterm always falls close to Halloween). Jules, Michael, and I decided to work together to come up with a project.
In the initial stage we were brainstorming some ideas we've had for a halloween themed project, these are a few of the thoughts we've had in mind:
We moved on with the last idea. we decided to build the device like a small stage of a halloween festival not sure if we should decorate it like a halloween lawn or a pile of hay with haloween items decorating it. We agreed to move on with the technical side and start testing the pressure sensors. We soldered the load cells so we can connect it to the arduino, and later discovered that they work best when attached halfway to an object having half of the surface exposed and free to bend. After testing the sensors can read pressure value properly we went on to build the mockup for the stage so we can start testing the interaction of the instrument with different items.
Test code for the load cell sensors:
#include <7semi_HX711.h>
// HX711 pin configuration
const int dataPin1 = 2; // Sensor 1 DOUT
const int clockPin1 = 3; // Sensor 1 SCK
const int dataPin2 = 4; // Sensor 2 DOUT
const int clockPin2 = 5; // Sensor 2 SCK
const int dataPin3 = 6; // Sensor 2 DOUT
const int clockPin3 = 7; // Sensor 2 SCK
const int dataPin4 = 8; // Sensor 2 DOUT
const int clockPin4 = 9; // Sensor 2 SCK
float scale = 230.00; // Calibration factor (raw units per gram)
HX711_7semi sensor1(dataPin1, clockPin1);
HX711_7semi sensor2(dataPin2, clockPin2);
HX711_7semi sensor3(dataPin3, clockPin3);
HX711_7semi sensor4(dataPin4, clockPin4);
void setup() {
Serial.begin(9600);
while (!Serial); // Wait for Serial on boards like Nano 33 IoT
sensor1.begin();
sensor2.begin();
sensor3.begin();
sensor4.begin();
sensor1.setScale(scale);
sensor1.tare();
sensor2.setScale(scale);
sensor2.tare();
sensor3.setScale(scale);
sensor3.tare();
sensor4.setScale(scale);
sensor4.tare();
Serial.println("Tare done. Starting weight measurement...");
}
void loop() {
float weight1 = sensor1.getWeight(); // Get weight from sensor 1
float weight2 = sensor2.getWeight(); // Get weight from sensor 2
float weight3 = sensor3.getWeight(); // Get weight from sensor 2
float weight4 = sensor4.getWeight(); // Get weight from sensor 2
Serial.print("Weight 1: ");
Serial.print(weight1, 2);
Serial.print(" g\tWeight 2: ");
Serial.print(weight2, 2);
Serial.print(" g\tWeight 3: ");
Serial.print(weight3, 2);
Serial.print(" g\tWeight 4: ");
Serial.print(weight4, 2);
Serial.println(" g");
// delay(100); // Optional delay to reduce output rate
}
For the music part we tried using the Mozzi library but didn't have a lot of sucsses with that. As an alternative we created some manipulations on regular tones so they would last longer. so the noteDuration is longer, it has a vibrato to make a more halloween-ish sound and detuneRange to give the sound a wobbly effect. the detune constantly bends the pitch of the the tone played. Here is the test on FSR's. each sensor is genereting a different octave in order to expend the available tones users can provoke.
The result was a sound of a halloween themed old computer game that we liked and it felt like it fits the concept of a children instrument. Testing the sounds on the mockup:
One of the reasons we chose using small items to provoke the sensor was that the load cells are really sensitive and were concerned they might break. Later on we realized we can secure the load cells and we are less limited about pressure inflicted on them. We decided to change the interface so the user will use the hands to activate the sensors. We started designing the wooden stage/box and taking hand measures for the fabrication part.
Then we started designing sticker to for the hands to make it more appealing:
Which later evolved to this after a cleaner design in Photoshop and textures with AI:
And this is the simulation for the final decoration:
Next step was setting up the enclosure and securing the load cell and screwing the amps to the sides of the box: