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;

    }
  }

}

Thursday, October 1, 2015

rock paper led game

Led rock paper scissors game. I had to use a hardware reset because it worked and I couldn't figure out how to reset the states without having a mess saved in my variables. 



void setup() {
  Serial1.begin(9600);
  pinMode(3, LOW);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(9, LOW);
  pinMode(10, LOW);
  pinMode(11, LOW);
  Serial1.println('z');
}

int gamestate = 0;
char play = ' ';
int led ;
int x = 0;
char user;
char op;
int player;
char oh;
int i = 0;


void loop() {

  int buttonState = digitalRead(22);
  int value = analogRead(A7);

  if (Serial1.available() > 0 ) {
    op = Serial1.read();
  }




  if (gamestate == 0 && player == 0) {
    int knob = value * (255 / 1024.0);
    int player = 0;
    led = 0;
    int buttonState = digitalRead(22);
    Serial1.println("z");
    if (buttonState == HIGH) {
      gamestate = 2;
      player = knob;
      oh = 'o';
      if (player <= 85) {
        play = 'r';
      }
      if (player > 85 && player <= 170) {
        play = 'b';
      }
      if (player > 170 && player <= 255) {
        play = 'g';
      }
    }
  }

  if (gamestate == 2) {
    led = 2;
    i = 1;
    Serial1.println(oh);
    if ( led == 2) {
      pinMode(5, LOW);
      pinMode(6, HIGH);
      pinMode(7, HIGH);
    }

    if (op == 'o' && oh == 'o') {
      gamestate = 3;
      Serial1.println(play);
      op = Serial1.read();
      op = Serial1.read();

      if (play == 'r') {
        pinMode(9, HIGH);
        pinMode(10, LOW);
        pinMode(11, LOW);
        Serial1.println(play);
      }
      if (play == 'b') {
        pinMode(9, LOW);
        pinMode(10, LOW);
        pinMode(11, HIGH);
        Serial1.println(play);
      }
      if (play == 'g') {
        pinMode(9, LOW);
        pinMode(10, HIGH);
        pinMode(11, LOW);
        Serial1.println(play);
      }
    }
  }

  if (op == 'r') {
    if (play == 'g') {
      led = 6;
    }
  }
  if (op == 'g') {
    if (play == 'b') {
      led = 6;
    }
  }
  if (op == 'b') {
    if (play == 'r') {
      led = 6;
    }
  }
  if (play == 'r') {
    if (op == 'g') {
      led = 7;
    }
  }
  if (play == 'g') {
    if (op == 'b') {
      led = 7;
    }
  }
  if (play == 'b') {
    if (op == 'r') {
      led = 7;
    }
  }
  if (play == op) {
    led = 8;
  }


  if (led == 7 ) {
    Serial1.println(play);
    Serial1.println(play);
    Serial1.println(play);

    if (play == 'r') {
      pinMode(9, HIGH);
      pinMode(10, LOW);
      pinMode(11, LOW);
    }
    if (play == 'b') {
      pinMode(9, LOW);
      pinMode(10, LOW);
      pinMode(11, HIGH);
    }
    if (play == 'g') {
      pinMode(9, LOW);
      pinMode(10, HIGH);
      pinMode(11, LOW);
    }
  }
  if (led == 8) {
    Serial1.println(play);
    Serial1.println(play);
    Serial1.println(play);
    if (play == 'r') {
      pinMode(9, HIGH);
      pinMode(10, LOW);
      pinMode(11, LOW);
    }
    if (play == 'b') {
      pinMode(9, LOW);
      pinMode(10, LOW);
      pinMode(11, HIGH);
    }
    if (play == 'g') {
      pinMode(9, LOW);
      pinMode(10, HIGH);
      pinMode(11, LOW);
    }
  }

  if (led == 6) {
    Serial1.println(play);
    Serial1.println(play);
    Serial1.println(play);
    if (play == 'r') {
      pinMode(9, HIGH);
      pinMode(10, LOW);
      pinMode(11, LOW);
    }
    if (play == 'b') {
      pinMode(9, LOW);
      pinMode(10, LOW);
      pinMode(11, HIGH);
    }
    if (play == 'g') {
      pinMode(9, LOW);
      pinMode(10, HIGH);
      pinMode(11, LOW);
    }
  }



  // yellow

  if ( led == 0) {
    pinMode(5, HIGH);
    pinMode(6, HIGH);
    pinMode(7, LOW);
  }


  // magenta led

  if ( led == 1) {
    pinMode(5, HIGH);
    pinMode(6, LOW);
    pinMode(7, HIGH);
  }
  // cyan led

  if ( led == 2) {
    pinMode(5, LOW);
    pinMode(6, HIGH);
    pinMode(7, HIGH);
  }

  // flash BLUE
  if ( led == 8 ) {
    x = 0;
    Serial1.println(play);
    Serial1.println(play);
    Serial1.println(play);
    if ( x < 4) {
      pinMode(5, LOW);
      pinMode(6, LOW);
      pinMode(7, HIGH);
      Serial1.println(play);
      Serial1.println(play);
      Serial1.println(play);
      delay(1000);
      pinMode(5, LOW);
      pinMode(6, LOW);
      pinMode(7, LOW);
      Serial1.println(play);
      Serial1.println(play);
      Serial1.println(play);
      delay(1000);
      x++;
    }
    op = 'z';
  }

  // flash WHITE lose

  if (led == 6) {
    Serial1.println(play);
    Serial1.println(play);
    Serial1.println(play);
    x = 0;
    while ( x < 4) {
      pinMode(5, HIGH);
      pinMode(6, HIGH);
      pinMode(7, HIGH);
      Serial1.println(play);
      Serial1.println(play);
      Serial1.println(play);
      delay(1000);
      pinMode(5, LOW);
      pinMode(6, LOW);
      pinMode(7, LOW);
      delay(1000);
      Serial1.println(play);
      Serial1.println(play);
      Serial1.println(play);
      x++;
    }
    op = 'z';
  }

  // flash colors win

  if (led == 7) {
    x = 0;
    Serial1.println(play);
    Serial1.println(play);
    Serial1.println(play);
    while ( x < 3) {
      pinMode(5, LOW);
      pinMode(6, HIGH);
      pinMode(7, HIGH);
      Serial1.println(play);
      Serial1.println(play);
      Serial1.println(play);
      delay(1000);
      pinMode(5, HIGH);
      pinMode(6, LOW);
      pinMode(7, HIGH);
      Serial1.println(play);
      Serial1.println(play);
      Serial1.println(play);
      delay(1000);
      pinMode(5, HIGH);
      pinMode(6, HIGH);
      pinMode(7, LOW);
      delay(1000);
      x++;
    }
    op = 'z';
  }



  // reset
  if (op == 'z' && gamestate == 3) {
    x = 0;
    while (x < 3) {
      pinMode(5, LOW);
      pinMode(6, HIGH);
      pinMode(7, LOW);
      delay(400);
      pinMode(5, LOW);
      pinMode(6, LOW);
      pinMode(7, LOW);
      delay(400);
      x++;
      pinMode(3, HIGH);
    }
  }

}