2019年11月28日 星期四

~~~week12

互動技術
1.按OBUTTON可以發出聲音
程式碼:
void setup() {
  // put your setup code here, to run once:
pinMode(8,OUTPUT);
pinMode(2,INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW) tone(8,520,1000);
  else noTone(8);

}

2.按一個建發出一個聲音,按下一次會發出不同聲音
程式碼:
int Do=523;
int Re=587;
int Mi=659;
int song[9]={Do,Re,Mi,Do,Do,Re,Mi,Do,Mi};
int now=0;
bool UP=true;//之前是UP嗎?
void setup() {
  // put your setup code here, to run once:
pinMode(8,OUTPUT);
pinMode(2,INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
  if( UP && digitalRead(2)==LOW ){
    tone(8,song[now],200);
    UP=false;
    now  = (now+1)%9;//避免陣列song[now]超過而當掉
  }
  else{
    UP=true;
  }
  delay(100);

}

3.用單芯線一端接地,一端接2,3,4,5,6,7,9,10可發出不同聲音
程式碼:
int Do=523;
int Re=587;
int Mi=659;
int song[9]={Do,Re,Mi,Do,Do,Re,Mi,Do,Mi};
int now=0;
bool UP=true;//之前是UP嗎?
void setup() {
  for (int i=2;i<=13;i++){
    pinMode(i,INPUT_PULLUP);
  }
  pinMode(8,OUTPUT);
}

void loop() {
  if(digitalRead(2)==LOW) tone(8,523,200);//Do
   if(digitalRead(3)==LOW) tone(8,587,200);//Re
    if(digitalRead(4)==LOW) tone(8,659,200);//Mi
     if(digitalRead(5)==LOW) tone(8,698,200);//Fa
      if(digitalRead(6)==LOW) tone(8,784,200);//Sol
       if(digitalRead(7)==LOW) tone(8,880,200);//La
       ///8要避開,因為它要OUTPUT用Buzzer發聲 tone(8,... 
        if(digitalRead(9)==LOW) tone(8,988,200);//Si
         if(digitalRead(10)==LOW) tone(8,1047,200);//Higer Do

}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

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