2019年11月21日 星期四

Week11_Summer

 今日目標:

MakerUNO實作










 1 讓電路板的第13個pin亮起來




 2 還原Original程式碼





 3 讓電路板的Pin燈全部亮起來



 4 當Button按下去時燈會滅,當Button不按時燈會亮


 程式碼: 

void setup() {
  pinMode(2,INPUT_PULLUP); //把BUTTON(2)打開,使用INPUT_PULLUP預設要拉高
  
  for(int i=3;i<=13;i++){  //2是BUTTON,所以OUTPUT從3開始
    pinMode(i,OUTPUT);
  }
}
bool bLightHIGH=true;
void loop() {
  if(digitalRead(2)==HIGH) bLightHIGH=true;
  else bLightHIGH=false;

  for(int i=3;i<=13;i++){
    if(bLightHIGH) digitalWrite(i,HIGH);
    else digitalWrite(i,LOW);
  }
}





 5 用BUZZER製作出小蜜蜂的音樂


 程式碼: 

#define NOTE_C5  523
#define NOTE_D5  587
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_G5  784
void setup() {
  pinMode(8,OUTPUT);  //BUZZER 蜂鳴器
}

void loop() {
  tone(8,NOTE_G5,230);
  delay(230);
  tone(8,NOTE_E5,230);
  delay(230);
  tone(8,NOTE_E5,230);
  delay(430);

  tone(8,NOTE_F5,230);
  delay(230);
  tone(8,NOTE_D5,230);
  delay(230);
  tone(8,NOTE_D5,230);
  delay(430);

  tone(8,NOTE_C5,230);
  delay(230);
  tone(8,NOTE_D5,230);
  delay(230);
  tone(8,NOTE_E5,230);
  delay(230);
  tone(8,NOTE_F5,230);
  delay(230);
  tone(8,NOTE_G5,230);
  delay(230);
  tone(8,NOTE_G5,230);
  delay(230);
  tone(8,NOTE_G5,230);
  delay(430);

}






 6 按下Button後才會撥放出小蜜蜂的音樂



 程式碼: 

#define NOTE_C5  523
#define NOTE_D5  587
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_G5  784

void setup() {
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
}

bool bLightHIGH=true;
void loop() {
  if(digitalRead(2)==LOW) bLightHIGH=true;
  else bLightHIGH=false;
  
  if(bLightHIGH){
    tone(8,NOTE_G5,230);
    delay(230);
    tone(8,NOTE_E5,230);
    delay(230);
    tone(8,NOTE_E5,230);
    delay(430);

    tone(8,NOTE_F5,230);
    delay(230);
    tone(8,NOTE_D5,230);
    delay(230);
    tone(8,NOTE_D5,230);
    delay(430);

    tone(8,NOTE_C5,230);
    delay(230);
    tone(8,NOTE_D5,230);
    delay(230);
    tone(8,NOTE_E5,230);
    delay(230);
    tone(8,NOTE_F5,230);
    delay(230);
    tone(8,NOTE_G5,230);
    delay(230);
    tone(8,NOTE_G5,230);
    delay(230);
    tone(8,NOTE_G5,230);
    delay(430);

    tone(8,NOTE_G5,230);
    delay(230);
    tone(8,NOTE_E5,230);
    delay(230);
    tone(8,NOTE_E5,230);
    delay(430);

    tone(8,NOTE_F5,230);
    delay(230);
    tone(8,NOTE_D5,230);
    delay(230);
    tone(8,NOTE_D5,230);
    delay(430);

    tone(8,NOTE_C5,230);
    delay(230);
    tone(8,NOTE_E5,230);
    delay(230);
    tone(8,NOTE_G5,230);
    delay(230);
    tone(8,NOTE_G5,230);
    delay(230);
    tone(8,NOTE_C5,230);
    delay(430);
  }

}





 6 利用 Processing 和 Arduino 結合操作
使用 key 來撥出相對聲音




 Processing: 

import processing.serial.*;
Serial myPort;
void setup(){
 myPort = new Serial(this , "COM4" , 9600);
}

void draw(){
  
}

void keyPressed(){
  if(key=='1') myPort.write('1'); 
  if(key=='2') myPort.write('2'); 
  if(key=='3') myPort.write('3'); 
  if(key=='4') myPort.write('4'); 
  if(key=='5') myPort.write('5'); 
  if(key=='6') myPort.write('6'); 
  if(key=='7') myPort.write('7');

}


 Arduino: 

#define NOTE_C5  523 //DO
#define NOTE_D5  587 //RE
#define NOTE_E5  659 //MI
#define NOTE_F5  698 //FA
#define NOTE_G5  784 //SO
#define NOTE_A5  880 //LA
#define NOTE_B5  988 //SI

void setup() {
  pinMode(8,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
    char now = Serial.read();
    if(now=='1') tone(8,NOTE_C5,300);
    if(now=='2') tone(8,NOTE_D5,300);
    if(now=='3') tone(8,NOTE_E5,300);
    if(now=='4') tone(8,NOTE_F5,300);
    if(now=='5') tone(8,NOTE_G5,300);
    if(now=='6') tone(8,NOTE_A5,300);
    if(now=='7') tone(8,NOTE_B5,300);
  }

}





沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

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