Wednesday, December 2, 2015

Assembly

Laying out parts on the floor in a disorganized fashion.


Wiring the power switch inline the 5 volt positive wire of the usb cable. 



Used a prototype board to wire all the servos to the arduino.


3d printing

3d Printing parts


Prototype 1, 90% too small


Prototype 2, too weak


I updated the model to make certain parts thicker and stronger after these two prototypes.




Friday, November 13, 2015


UPDATE :

Cut the wood and mounted kalimba to wood.

Bought knock off arduino uno which may or may not be enough to power this thing.



Monday, November 9, 2015

3d model



I modeled the plucker mechanism that needs to be 3d printed, i will be drilling some holes rather than printing with holes in the mesh because it may be easier but i dont know, i have to test this. 

Monday, November 2, 2015

My project is to make an automated instrument, the instrument I chose was a kalimba. 


Prototype plucker :






I am going to be using servos to play the instrument and have those controlled by the arduino. I am going to have a few songs built into the device and also have the ability for people to program their own songs.

The technical challenges are constructing the arms that allow the kalimba to be played.

The aesthetic challenges are hiding the electronic bits and making the linkages look pleasing. I may also add some lights that play along with the songs.

We have 4 weeks left as of this writing:


  • Week one 
    • Finish constructing box for servos and holder for kalimba 
  • Week Two
    • 3d print pluckers 
  • Week three
    • Code
  • Week four
    • Install lights and create user interface ( buttons )
    • Finish odds and ends







http://www.makercase.com


Arduino-atrope

For this project I made an Arduino powered zoetrope with user controls so it can be interactive. This could be scaled up into an installation piece where they the audience can control the rate of the zoetrope and learn about how the eye works with persistence of vision and pseudo frame rate.

The model I made made use of a motor powering the zoetrope and a servo controlling a meter to how fast it was spinning.

Some issues I was having was not enough torque or to much friction on the rotating cylinder.

I did manage to film it before my batteries died and it stopped working.

This shows the animation:



This shows the over function of the arduino-atrope.

Monday, October 5, 2015

Music Box`

Behold the most annoying sounds ever made. So users can input a series of characters up to 100, those have to be music notes. When they enter 0 the songs starts looping. They then have two controls to adjust the frequency and notes that are being played. There is a bar graph that displays the frequency rate and a display that shows which note is being played.

( Sorry for my video being upside down, I had to zip tie my phone to a tripod.)



int speakerPin = 2;
int n = 0;
int h;
char song[100];
int i = 0;
int j = 1;
int play = 0;
char x = 0;
int count;
float freq;
float tune;
char D;
char E;
char F;
char G;
char A;
char B;
char C;
int d1d = 31;
int d2d = 33;
int d3d = 35;
int d4d = 37;
int d5d = 39;
int d6d = 41;
int d7d = 43;
int d8d = 45;
int d9d = 47;
int d10d = 49;

#define A 22
#define B 9
#define C 50
#define D 3
#define E 34
#define F 5
#define G 6


void char_A()
{
  digitalWrite(D, HIGH);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
}

void char_non()
{
  digitalWrite(D, HIGH);
  digitalWrite(E, HIGH);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
}

void char_B()
{
  //Displays B
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(A, HIGH);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
}
void char_C()
{
  //Displays C

  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, HIGH);
  digitalWrite(G, LOW);
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
}
void char_D()
{
  //Displays D
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, HIGH);
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
}
void char_E()
{
  //Displays E
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
}
void char_F()
{
  //Displays F
  digitalWrite(D, HIGH);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
}
void char_G()
{
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, HIGH);
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);


}


void zero()
{
  //Displays 0
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(A, LOW);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
}

void char_OFF() {
  digitalWrite(d1d, LOW);
  digitalWrite(d2d, LOW);
  digitalWrite(d3d, LOW);
  digitalWrite(d4d, LOW);
  digitalWrite(d5d, LOW);
  digitalWrite(d6d, LOW);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_ONE() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, LOW);
  digitalWrite(d3d, LOW);
  digitalWrite(d4d, LOW);
  digitalWrite(d5d, LOW);
  digitalWrite(d6d, LOW);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_TWO() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, LOW);
  digitalWrite(d4d, LOW);
  digitalWrite(d5d, LOW);
  digitalWrite(d6d, LOW);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_THREE() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, LOW);
  digitalWrite(d5d, LOW);
  digitalWrite(d6d, LOW);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_FOUR() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, LOW);
  digitalWrite(d6d, LOW);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_FIVE() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, HIGH);
  digitalWrite(d6d, LOW);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_SIX() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, HIGH);
  digitalWrite(d6d, HIGH);
  digitalWrite(d7d, LOW);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_SEVEN() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, HIGH);
  digitalWrite(d6d, HIGH);
  digitalWrite(d7d, HIGH);
  digitalWrite(d8d, LOW);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_EIGHT() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, HIGH);
  digitalWrite(d6d, HIGH);
  digitalWrite(d7d, HIGH);
  digitalWrite(d8d, HIGH);
  digitalWrite(d9d, LOW);
  digitalWrite(d10d, LOW);
}
void char_NINE() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, HIGH);
  digitalWrite(d6d, HIGH);
  digitalWrite(d7d, HIGH);
  digitalWrite(d8d, HIGH);
  digitalWrite(d9d, HIGH);
  digitalWrite(d10d, LOW);
}
void char_TEN() {
  digitalWrite(d1d, HIGH);
  digitalWrite(d2d, HIGH);
  digitalWrite(d3d, HIGH);
  digitalWrite(d4d, HIGH);
  digitalWrite(d5d, HIGH);
  digitalWrite(d6d, HIGH);
  digitalWrite(d7d, HIGH);
  digitalWrite(d8d, HIGH);
  digitalWrite(d9d, HIGH);
  digitalWrite(d10d, HIGH);
}
void boot() {
  char_ONE();
  delay(30);
  char_TWO();
  delay(30);
  char_THREE();
  delay(30);
  char_FOUR();
  delay(30);
  char_FIVE();
  delay(30);
  char_SIX();
  delay(30);
  char_SEVEN();
  delay(30);
  char_EIGHT();
  delay(30);
  char_NINE();
  delay(30);
  char_TEN();
}







int frequency(char note) {
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' , ' '};
  int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523, 000};
  for (h = 0; h < 100; h++) {
    if (names[h] == note)
    {
      return (frequencies[h]);
    }
  }
}

void led() {
  if (song[j] == 'a') {
    char_A();
  }
  if (song[j] == 'b') {
    char_B();
  }
  if (song[j] == 'C') {
    char_C();
  }
  if (song[j] == 'c') {
    char_C();
  }
  if (song[j] == 'd') {
    char_D();
  }
  if (song[j] == 'e') {
    char_E();
  }
  if (song[j] == 'f') {
    char_F();
  }
  if (song[j] == 'g') {
    char_G();
  } if (song[j] == ' ') {
    char_non();
  }
}

void setup() {

  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(d1d, OUTPUT);
  pinMode(d2d, OUTPUT);
  pinMode(d3d, OUTPUT);
  pinMode(d4d, OUTPUT);
  pinMode(d5d, OUTPUT);
  pinMode(d6d, OUTPUT);
  pinMode(d7d, OUTPUT);
  pinMode(d8d, OUTPUT);
  pinMode(d9d, OUTPUT);
  pinMode(d10d, OUTPUT);
  pinMode(speakerPin, OUTPUT);
  Serial.begin(9600);
  Serial.println("type c, d, e, f, g, a, b, c, or the space bar to create music, type 0 to start song");
  boot();
}


void loop() {




  for (i = 0; play == 0 && i < 100; ) {
    while (Serial.available() > 0 ) {
      x = Serial.read();

      if ( x == 'a' || x == 'b' || x == 'c' || x == 'd' || x == 'g' || x == 'f' || x == 'e' || x == 'C' || x == ' ') {
        song[i] = x;
        i++;
        led();
      }
      if (x == '0') {
        play = 1;
        j = 0;
        count = i;
      }
    }
  }


  for ( j = 0; play == 1 && j < count; ) {

    while (Serial.available() > 0 ) {
      x = Serial.read();
    }
    if (x != '1') {

      float value = analogRead(A7);
      float freq = (value / 256) ;
      float tune = analogRead(A6);
      float tuned = tune / 512;
      float poop = ((value + tune) / 2) / 1024;
      Serial.println(song[j]);
      led();
      tone(speakerPin, (frequency(song[j])*tuned), (150 * freq));
      delay(140);
      if (poop == 0) {
        char_OFF();
      }
      if (poop <= .10) {
        char_ONE();
      }
      if (poop >= .10 && poop <= .2) {
        char_TWO();
      }
      if (poop >= .20 && poop <= .3) {
        char_THREE();
      }
      if (poop >= .30 && poop <= .4) {
        char_FOUR();
      }
      if (poop >= .40 && poop <= .5) {
        char_FIVE();
      }
      if (poop >= .50 && poop <= .6) {
        char_SIX();
      }
      if (poop >= .70 && poop <= .8) {
        char_SEVEN();
      }
      if (poop >= .80 && poop <= .9) {
        char_EIGHT();
      }
      if (poop >= .90 && poop <= .95) {
        char_NINE();
      }
      if (poop >= .95 && poop <= 1.1) {
        char_TEN();
      }


      j++;
    }
    if (x == '1') {
      play = 0;

    }
  }

}