2013年1月14日 星期一

期末作品 Final


系統名稱:  <piano>

如何製作:

  1、用黑白膠帶纏住由冰棍製成的黑鍵與白鍵
  2、連接電路板、七個電阻、一個喇叭。
  3、製作由processing點選開始的畫面、進入鋼琴的畫面。
  4、撰寫arduino的程式碼。
  5、搜尋processing與arduino相互連接的程式。

圖片:
一開始執行的畫面
點選"Enter to play"後的畫面
按第一個按鈕,發出Do的聲音
按第二個按鈕,發出Re的聲音
按第三個按鈕,發出Me的聲音
按第四個按鈕,發出Fa的聲音
按第五個按鈕,發出So的聲音
小鋼琴圖片-1
小鋼琴圖片-2
小鋼琴圖片-3
電路板接線圖

程式碼

processing程式碼


import processing.serial.*;
Serial myPort;

PImage bg1,Do,Re,Mi,Fa,So,La,Si;

void setup() {
  size(800, 600);
  bg1 = loadImage("piano.jpg");  //載入圖檔
  Do = loadImage("piano-Do1.jpg");
  Re = loadImage("piano-Re1.jpg");
  Mi = loadImage("piano-Mi1.jpg");
  Fa = loadImage("piano-Fa1.jpg");
  So = loadImage("piano-So1.jpg");
  La = loadImage("piano-La1.jpg");
  Si = loadImage("piano-Si1.jpg");
  myPort = new Serial(this, "COM15", 9600);
}

void draw() {
  image(bg1, 0, 0, 800, 600);
  image(Do, 86, 82, 89, 333);
  image(Re, 169, 80, 89, 333);
  image(Mi, 253, 81, 89, 333);;
  image(Fa, 338.5, 84, 89, 333);
  image(So, 425, 81, 89, 333);;
  image(La, 509, 82, 89, 333);
  image(Si, 593, 82, 89, 333);
}


arduino程式碼


const int inPin1 = 1;
const int inPin2 = 2;
const int inPin3 = 3;
const int inPin4 = 4;
const int inPin5 = 5;
const int inPin6 = 6;
const int inPin7 = 7;

int val1 = 0, val2 = 0, val3 = 0, val4 = 0, val5 = 0, val6 = 0, val7 = 0;

void setup() {
   Serial.begin(9600);

   pinMode(inPin1, INPUT);
   pinMode(inPin2, INPUT);
   pinMode(inPin3, INPUT);
   pinMode(inPin4, INPUT);
   pinMode(inPin5, INPUT);
   pinMode(inPin6, INPUT);
   pinMode(inPin7, INPUT);
}

void loop() {
   val1 = digitalRead(inPin1);
   val2 = digitalRead(inPin2);
   val3 = digitalRead(inPin3);
   val4 = digitalRead(inPin4);
   val5 = digitalRead(inPin5);
   val6 = digitalRead(inPin6);
   val7 = digitalRead(inPin7);

      if(val1==HIGH){
         tone(8,524,8);
      }
      if(val2==HIGH){
         tone(8,588,8);
      }
      if(val3==HIGH){
         tone(8,660,8);
      }
      if(val4==HIGH){
         tone(8,698,8);
      }
      if(val5==HIGH){
         tone(8,784,8);
      }
       if(val6==HIGH){
         tone(8,880,8);
      }
       if(val7==HIGH){
         tone(8,988,8);
      }
}





心得介紹:
  我們在家執行時,程式碼是可以執行的;但在學校卻不能執行,經過老師的指導才知道原來
  是程式碼的問題,我們把之前在家裡寫得很完整的有些程式碼註解掉了,導致程式在執行
  時,狀況一堆 。
  原本我們的構想是想在這次的期末作品中,利用二維陣列寫出錄音的功能,可以記錄時間、
  音樂,讓玩家可以儲存自己在彈奏的旋律,並加入播放的功能,聲音是由電腦發出剛剛輸入
  的聲音。希望之後可以完成這兩項功能。

影片:




組員分工:

  陳孟琳:主要負責processing、arduino的程式碼。

  紀詠心:主要負責電路連接。

沒有留言:

張貼留言