2019年11月28日 星期四

Week_12

1. 按一次按鈕就唱小蜜蜂的一個音

 Code: 
// 定義聲音的音頻
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784

// 小蜜蜂的樂譜
int beeSong[] = {
    NOTE_G5, NOTE_E5, NOTE_E5,
    NOTE_F5, NOTE_D5, NOTE_D5,
    NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_G5, NOTE_G5,

    NOTE_G5, NOTE_E5, NOTE_E5,
    NOTE_F5, NOTE_D5, NOTE_D5,
    NOTE_C5, NOTE_E5, NOTE_G5, NOTE_G5, NOTE_C5
};

int now = 0; // 現在播放到哪一個音

void setup() {
    pinMode(8, OUTPUT); //發聲音的BUZZER
    pinMode(2, INPUT_PULLUP); // 把BUTTON(2號角位)打開
}

void loop() {
    // 如果按鈕按下就唱歌
    if (digitalRead(2) == LOW) {
        tone(8, beeSong[now], 230);
        delay(230);
    
        now = (now+1)%24; // now 不能超過陣列的範圍
    }
}



2. 用單心線戳每個腳位對應的洞就會發出聲音

 Code: 
// 定義聲音的音頻
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988
#define NOTE_HC5 1046

void setup() {
    for (int i=2; i<=13; i++) {
    pinMode(i, INPUT_PULLUP); // 把腳位的電位拉高
    }
    pinMode(8, OUTPUT); //發聲音的BUZZER
}

void loop() {
    // 如果用單心線戳對應的洞就會發出聲音
    if (digitalRead(2) == LOW) tone(8, NOTE_C5, 230);
    if (digitalRead(3) == LOW) tone(8, NOTE_D5, 230);
    if (digitalRead(4) == LOW) tone(8, NOTE_E5, 230);
    if (digitalRead(5) == LOW) tone(8, NOTE_F5, 230);
    if (digitalRead(6) == LOW) tone(8, NOTE_G5, 230);
    if (digitalRead(7) == LOW) tone(8, NOTE_A5, 230);
    if (digitalRead(9) == LOW) tone(8, NOTE_B5, 230);
    if (digitalRead(10) == LOW) tone(8, NOTE_HC5, 230);
}



3. Processing的網路通訊程式

 Server Code: 
import processing.net.*;

Server server;

void setup() {
  size(300, 300);
  server = new Server(this, 7777); // 設定Server的Port號
}

void draw() {
  // 接收Client端傳送過來的資料
  Client client = server.available();
  if (client != null) {
    String receive = client.readString();
    if (receive != null) println("Server received: " + receive);
  }
}
 Client Code: 
import processing.net.*;

Client client;

void setup() {
  size(300, 300);
  client = new Client(this, "127.0.0.1", 7777); // 設定要傳過去的Server的IP和Port號
}

void draw() {
  
}

void mousePressed() {
  client.write("Hello"); // 傳訊息給Server
}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...