Noise Makers
Description
UCF GAIM Physical Computing
Description
This week I built a simple MIDI instrument using three buttons and one potentiometer. The buttons trigger the notes, and the knob controls the pitch across two octaves.
Each button corresponds to a different note: C, D, and E. The potentiometer changes the MIDI note value over a 24-semitone range, which equals two octaves, since one octave consists of 12 consecutive semitones.
For each button, I mapped the knob to a specific MIDI range:
To play the notes I used a software called Reaper which is a DAW program that allows me to attach a synthesizer to my MIDI instrument and play piano notes.
A button placed on the breadboard and when pressed by either the Fortune Teller or the person having their fortune read, the preprogrammed Arduino code allows the fan on the DC Motor to spin for about 10 to 15 seconds. Attached to the fan are three coins. The Crying Eye, which represents failure. The Rose which represents money. And lastly, the wine cup which represents happiness. There is also a circular based at the bottom with three leaf-designed. Each leaf has a Roman numeral from 1 to 3. The person having their fortune read has to assign a wish or a prediction to each leaf. Depending on what coin lands where determines their future. Or, if the coins don’t align with the three leaves, then the fortune is inconclusive or if the person likes, they can wait for the coins to spin again and land on a proper leaf.
The art has been drawn by me in Adobe Illustrator. Then, laser cut into their specific shapes and glued together. A fan has had each coin, (that has been glued to a stick) taped to its individual wing. Then, the DC Motor is placed through a hole in the bottom base—the base being propped up by a Cuban coffee cup—and the fan attached. Allowing it to spin above the base.

//www.elegoo.com
//2016.12.12
/************************
Exercise the motor using
the L293D chip
************************/
#define ENABLE 5
#define DIRA 3
#define DIRB 4
int i;
void setup() {
//---set pin direction
pinMode(ENABLE,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
Serial.begin(9600);
}
void loop() {
// RUN MOTOR for 10 SECONDS TOTAL
digitalWrite(ENABLE, HIGH);
digitalWrite(DIRA, HIGH);
digitalWrite(DIRB, LOW);
delay(5000); // run 5 seconds
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, HIGH);
delay(5000); // run 5 seconds
// TOP MOTOR FOR 15 SECONDS
digitalWrite(ENABLE, LOW); // stop motor
Serial.println("Motor stopped");
delay(15000); // stay stopped 15 seconds
}
This work is called Cat Paw. The main intention of this was to create a cute motorized cat that moves its paw up and down. Referencing the beckoning cat, this project uses a motor along with a joystick to control the paw. Along with the cat is a fish that can easily get knocked down. The story is of a playful cat messing aggressively with a fish.
For this assignment, I created a project called Perseverance. The concept represents a young man training to become a samurai. His posture is firm and focused, and his only objective is the training post in front of him. Through continuous practice and repetition, he aims to master his skill. The deeper idea behind the project is that perseverance through discipline not only builds strength but also cultivates inner peace.
In the starting state, everything is static. The warrior stands still, symbolizing preparation and mental focus. When the button is pressed once, the servo moves the arm and produces a single swing of the blade. This represents the beginning of effort. If the button remains pressed, the warrior continues swinging repeatedly, expressing long-term dedication and consistent practice. When the button is released, the motion stops and the system resets.
The movement is achieved using a servo motor connected at the arm joint. The laser-cut components consist of three separate pieces: the body of the warrior, the arm with the sword, and the training post. The Arduino reads the button input and controls the servo to create the swinging motion.
This is meant to be a game where you use the potentiometer along with an analog joystick to control the values of an LED. You try to match these values to the first LED, which is randomly assigned at the start of the game. When you finish and get close enough to the color, the LEDs flash and restart, allowing the first LED to change color. If you get it wrong, a buzzer will sound, letting you know you haven't gotten it yet.
This project demonstrates an RGB LED controlled through a switch-based input system, where user interaction directly affects the color output of the light. The strength of which is determined by how far the user slides the potentiometer on the breadboard. The potentiometer functions as the primary and only way to provide user input. It sends signals that allows the light of the LED to appear blue when activated and increase it's brightness overall. The RGB LED switch emphasizes the relationship between hardware inputs, some minor software logic and visual output. Internally, the microcontroller reads the switch’s state and maps it to strength of the blue color in the LED. demonstrating basic input mapping and conditional logic. Displaying how user interaction can dynamically shape an electronic system’s behavior. This project serves as a practical example of physical computing design at a small scale.
const int bluePin = 9;
const int greenPin = 10;
const int redPin = 11;
const int thePin = A1;
int maxVal = 0;
int minVal = 1023;
void setup() {
// put your setup code here, to run once:
pinMode (bluePin, OUTPUT);
pinMode (greenPin, OUTPUT);
pinMode (redPin, OUTPUT);
pinMode (thePin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(analogRead(thePin));
int knobval = analogRead(thePin);
if (knobval > maxVal) maxVal = knobval;
if (knobval < minVal) minVal = knobval;
int mapval = map(knobval, minVal, maxVal, 0, 255);
analogWrite(redPin, mapval);
delay(10);
Serial.print(knobval);
Serial.print("\t");
Serial.print(minVal);
Serial.print("\t");
Serial.println(maxVal);
//for(int i=0; i<255 analogwrite="" bluepin="" code="" delay="" greenpin="" i="" redpin="">255>