顯示具有 Week11 標籤的文章。 顯示所有文章
顯示具有 Week11 標籤的文章。 顯示所有文章

2018年11月22日 星期四

week11 體驗MAKER UNO

week11

這周真的開始實作
先開啟一個叫做blink的範例
這個程式原本的功能只有使一個燈泡每秒鐘變亮變暗(如圖一)
圖一

然後改寫一下
讓全部的燈泡逐一的變亮  逐一的變暗(如圖二)
圖二

之後老師show了一個網頁
裡面有個程式使用蜂鳴器來播放小星星
https://makeruno.com.my/playing-melody-using-only-maker-uno/?fbclid=IwAR0tZ_KdYKtJw9aii5Foj-eNHvXMWCRF7SSoir2nivJAez7VqyK8293UdHo

修改這個code
每個音階有自己的燈泡
當發出那個音階時
相對應的燈泡就會發亮

最後老師有再show一個網頁
裡面的程式有兩首歌
小星星和聖誕節會放的歌
https://makeruno.com.my/changing-melody-with-push-button-using-only-maker-uno/?fbclid=IwAR2FK8AR-fEKLty_NwiMtNMBgur4tldsjbplxMv8uCYUdIhb_5uZ0P-aifo

但這個code有個問題
就是很難去切換歌曲
所以在loop的歌裡面 加了判斷是條件
這樣就比較順利去切換歌曲

這個code也有用到燈泡
原理和上個程式一樣

week11

瀏覽電腦上的驅動程式

前往此網址下載驅動程式:

https://makeruno.com.my/getting-started/

更改工具列的序列埠(COM7)



複製此網頁中的程式碼:

https://makeruno.com.my/playing-melody-using-only-maker-uno/?fbclid=IwAR0tZ_KdYKtJw9aii5Foj-eNHvXMWCRF7SSoir2nivJAez7VqyK8293UdHo

此程式會使用蜂鳴器來播放小星星


int piezoPin = 8;

int length = 15;

char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";      // a space represents a rest

int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };

int tempo = 300;


void playTone(int tone, int duration) 

{

  for (long i = 0; i < duration * 1000L; i += tone * 2) 

  {

    digitalWrite(piezoPin, HIGH);

    delayMicroseconds(tone);

    digitalWrite(piezoPin, LOW);

    delayMicroseconds(tone);

  }

}


void playNote(char note, int duration) 

{

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

  for (int i = 0; i < 8; i++) 

  {

    if (names[i] == note) 

    {

      playTone(tones[i], duration);

    }

  }

}


void setup() 

{

  pinMode(piezoPin, OUTPUT);

}


void loop() 

{

  for (int i = 0; i < length; i++) 

  {

    if (notes[i] == ' ') 

    {

      delay(beats[i] * tempo);

    } else 

      playNote(notes[i], beats[i] * tempo);

    delay(tempo / 2); 

  }



}


Week11_黃登煜

MakerUno
裝置管理員出現 ! 的話 要更新驅動程式
下載驅動程式https://makeruno.com.my/getting-started/>>連結埠出現COM7

播音樂 程式碼
int piezoPin = 8;
int length = 15;
char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
}

void loop() 
{
  for (int i = 0; i < length; i++) 
  {
    if (notes[i] == ' ') 
    {
      delay(beats[i] * tempo);
    } else 
      playNote(notes[i], beats[i] * tempo);
    delay(tempo / 2); 
  }
}

Week11_黃惠嘉

🔺Makeruno
確認其他裝置裡有沒有出現!的

右鍵更新驅動程式
瀏覽電腦上的驅動程式
➪下載驅動程式https://makeruno.com.my/getting-started/➪連結埠出現COM7









用網址內的程式碼播放音樂
https://makeruno.com.my/playing-melody-using-only-maker-uno/?fbclid=IwAR0UeYQwWpaQNfhiLnV_VtvUXL3KCZABp9KIEcNBT_E3kgH94zjOZMTGQV8測試看看
int piezoPin = 8;
int length = 15;
char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
}

void loop() 
{
  for (int i = 0; i < length; i++) 
  {
    if (notes[i] == ' ') 
    {
      delay(beats[i] * tempo);
    } else 
      playNote(notes[i], beats[i] * tempo);
    delay(tempo / 2); 
  }
}



工具➪開發板選擇Arduino/Genuino Uno➪序列埠選擇COM7



第13個會亮
const int LED=13;
void setup() 
{
  pinMode(LED, OUTPUT);
}

void loop() 
{
  digitalWrite(LED,HIGH);
  delay(300);
  digitalWrite(LED,LOW);  
  delay(300); 
}



for迴圈2~13會亮
void setup() 
{
  for(int i=2;i<=13;i++){
    pinMode(i, OUTPUT);
  } 
}

void loop() 
{
  for(int i=2;i<=13;i++){
    digitalWrite(i,HIGH);
    delay(300);
  }
  for(int i=2;i<=13;i++){
    digitalWrite(i,LOW);  
  }
}



用網址內的程式碼切換音樂
https://makeruno.com.my/changing-melody-with-push-button-using-only-maker-uno/?fbclid=IwAR1kSw9SnJV_zF69DKdbPUeEzqYOUbMKbHikLtWDMtpWRhbrfJqDv3T8EMw

int piezoPin = 8;
int button = 2;
int lengths = 26;
char jbnotes[] = "eeeeeeegcde fffffeeeeddedg";
int jbbeats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
int length = 15;
char ttlsnotes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int ttlsbeats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}

void loop() 
{
  int sensorVal = digitalRead(button);
  if (sensorVal == HIGH)
  {
    for (int i = 0; i < length; i++) 
    {
      if (ttlsnotes[i] == ' ') 
      {
        delay(ttlsbeats[i] * tempo);
      } 
      else 
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
  else
  {
    for (int i = 0; i < lengths; i++) 
    {
      if (jbnotes[i] == ' ') 
      {
        delay(jbbeats[i] * tempo);
      } 
      else 
        playNote(jbnotes[i], jbbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
}


int piezoPin = 8;
int button = 2;
int lengths = 26;
char jbnotes[] = "eeeeeeegcde fffffeeeeddedg";
int jbbeats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
int length = 15;
char ttlsnotes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int ttlsbeats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  int LED[] =    {  2,   3,   4,   5,   6,   7,   9,   10 };
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      digitalWrite(LED[i],HIGH);撥聲音之前把對應的LED燈亮起
      playTone(tones[i], duration); 
      digitalWrite(LED[i],LOW);播聲音之後把對應的LED燈關掉
    }
  }
}

void setup() 
{
 /// pinMode(piezoPin, OUTPUT);
 for(int i=2;i<=13;i++)
  pinMode(i, OUTPUT); 執行前把每個解未設OUTPUT
}

void loop() 
{
  int sensorVal = digitalRead(button);
  if (sensorVal == HIGH)
  {
    for (int i = 0; i < length; i++) 
    {
      if (ttlsnotes[i] == ' ') 
      {
        delay(ttlsbeats[i] * tempo);
      } 
      else 
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
  else
  {
    for (int i = 0; i < lengths; i++) 
    {
      if (jbnotes[i] == ' ') 
      {
        delay(jbbeats[i] * tempo);
      } 
      else 
        playNote(jbnotes[i], jbbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
}




int piezoPin = 8;
int button = 2;
int lengths = 26;
char jbnotes[] = "eeeeeeegcde fffffeeeeddedg";
int jbbeats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
int length = 15;
char ttlsnotes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int ttlsbeats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}
int now=0;0:小星星 1:聖誕節
void loop() 
{
  delay(tempo/2);
  int sensorVal = digitalRead(button);
  if (now==0)
  {
    for (int i = 0; i < length; i++) 
    {
      if (ttlsnotes[i] == ' ') 
      {
        delay(ttlsbeats[i] * tempo);
      } 
      else 
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
      if(digitalRead(button) ==LOW) 可以卡歌
      {
        now=1;
        break;
      }
      delay(tempo / 2); 
    }
  }
  else
  {
    for (int i = 0; i < lengths; i++) 
    {
      if (jbnotes[i] == ' ') 
      {
        delay(jbbeats[i] * tempo);
      } 
      else 
        playNote(jbnotes[i], jbbeats[i] * tempo);
      if(digitalRead(button) ==LOW) 可以卡歌
        now=0;
        break;
      }
      delay(tempo / 2); 
    }
  }
}



week11

LED依序亮起來

void setup()
{
    for(int i=2;i<=13;i++){
    pinMode(i,OUTPUT);//設定Led為output
    }
}

void loop()
{
     for(int i=2;i<=13;i++){
    digitalWrite(i,HIGH); //LED 閃爍
    delay(300);
     }
     for(int i=2;i<=13;i++){
    digitalWrite(i,LOW);
     }
}

播放小星星

int piezoPin = 8;
int length = 15;
char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";      // a space represents a rest
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
}

void loop() 
{
  for (int i = 0; i < length; i++) 
  {
    if (notes[i] == ' ') 
    {
      delay(beats[i] * tempo);
    } else 
      playNote(notes[i], beats[i] * tempo);
    delay(tempo / 2); 
  }

LED對照音符發亮

void playNote(char note, int duration) 
{
  int LED[]={2,3,4,5,6,7,9,10};
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      digitalWrite(LED[i],HIGH);
      playTone(tones[i], duration);
      digitalWrite(LED[i],LOW);
    }
  }
}

void setup() 
{
  //pinMode(piezoPin, OUTPUT);
  for(int i=2;i<=13;i++)pinMode(i,OUTPUT);
}
void playNote(char note, int duration) 
{
  int LED[]={3,4,5,6,7,9,10,11};
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      digitalWrite(LED[i],HIGH);
      playTone(tones[i], duration);
      digitalWrite(LED[i],LOW);
    }
  }
}

卡歌

int piezoPin = 8;
int button = 2;
int lengths = 26;
char jbnotes[] = "eeeeeeegcde fffffeeeeddedg";
int jbbeats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
int length = 15;
char ttlsnotes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int ttlsbeats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}

void loop() 
{
  int sensorVal = digitalRead(button);
  if (sensorVal == HIGH)
  {
    for (int i = 0; i < length; i++) 
    {
      if (ttlsnotes[i] == ' ') 
      {
        delay(ttlsbeats[i] * tempo);
      } 
      else 
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
      if(digitalRead(button)==LOW)break;    ///按下按鈕進行卡歌
      delay(tempo / 2); 
    }
  }
  else
  {
    for (int i = 0; i < lengths; i++) 
    {
      if (jbnotes[i] == ' ') 
      {
        delay(jbbeats[i] * tempo);
      } 
      else 
        playNote(jbnotes[i], jbbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
}

設定0、1、2的順序

int now=0;
void loop()
{
  delay(tempo/2);
  //int sensorVal = digitalRead(button);
  if (now==0)
  {
    for (int i = 0; i < length; i++)
    {
      if (ttlsnotes[i] == ' ')
      {
        delay(ttlsbeats[i] * tempo);
      }
      else
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
      if(digitalRead(button)==LOW){now=1;break;}
      delay(tempo / 2);
    }
  }


week11_阿天

一:
跟上禮拜一樣驅動程式裝好就會長這樣~~




二:
程式碼上傳成功 燈亮亮



三:
複製這整段程式碼 就可以播小星星的音樂了!!




Week11 呆江的筆記

Week11 uno版自行改寫程式碼

1.讓燈逐漸亮起來

void setup() {
  for(int i=2;i<=13;i++){
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for(int i=2;i<=13;i++){
    digitalWrite(i, HIGH);
    delay(300);
  }
  for(int i=2;i<=13;i++){
    digitalWrite(i, LOW);
  }
}

2.範例


https://makeruno.com.my/playing-melody-using-only-maker-uno/?fbclid=IwAR1N1Z7ZdFEOczDoJ5vCXFxNjbrm99fiLRiCZ1jYjxWTwAL08wGClcMdYU0

修改範例,改成會照著旋律亮燈

int piezoPin = 8;
int length = 15;
char notes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc "; 
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  int LED[] =    {  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  9 , 10  };  ///加入陣列
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      digitalWrite( LED[i], HIGH ); ///在播聲音之前,把對應的LED亮起
      playTone(tones[i], duration);
      digitalWrite( LED[i], LOW ); ///在播聲音之後,把對應的LED暗掉
    }
  }
}

void setup() 
{
  //pinMode(piezoPin, OUTPUT);
  for(int i=2;i<=13;i++)  pinMode( i, OUTPUT ); ///在執行之前,把每個腳位,都設成OUTPUT,才會亮、發聲音
}

void loop() 
{
  for (int i = 0; i < length; i++) 
  {
    if (notes[i] == ' ') 
    {
      delay(beats[i] * tempo);
    } else 
      playNote(notes[i], beats[i] * tempo);
    delay(tempo / 2); 
  }
}


3.範例

https://makeruno.com.my/changing-melody-with-push-button-using-only-maker-uno/?fbclid=IwAR3KVdgUXxPfXSZFDChlxsTRwhYWcDKXciYcxIn2WOk0QmuxsuA_QUa11pg

透過按鈕修改音樂(但要等正在撥的撥完QQ

int piezoPin = 8;
int button = 2; ///把Button切換到pin2
int lengths = 26;
char jbnotes[] = "eeeeeeegcde fffffeeeeddedg";
int jbbeats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2}; //第一首歌
int length = 15;
char ttlsnotes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int ttlsbeats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; //第二首歌
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}

void loop() 
{
  int sensorVal = digitalRead(button);
  if (sensorVal == HIGH)
  {
    for (int i = 0; i < length; i++) 
    {
      if (ttlsnotes[i] == ' ') 
      {
        delay(ttlsbeats[i] * tempo);
      } 
      else 
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
  else
  {
    for (int i = 0; i < lengths; i++) 
    {
      if (jbnotes[i] == ' ') 
      {
        delay(jbbeats[i] * tempo);
      } 
      else 
        playNote(jbnotes[i], jbbeats[i] * tempo);
      delay(tempo / 2); 
    }
  }
}


4.修改前一範例
按鈕一按就可以卡歌了唷(ノ>ω<)ノ

int piezoPin = 8;
int button = 2;
int lengths = 26;
char jbnotes[] = "eeeeeeegcde fffffeeeeddedg";
int jbbeats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
int length = 15;
char ttlsnotes[] = "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
int ttlsbeats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) 
{
  for (long i = 0; i < duration * 1000L; i += tone * 2) 
  {
    digitalWrite(piezoPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(piezoPin, LOW);
    delayMicroseconds(tone);
  }
}

void playNote(char note, int duration) 
{
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
  for (int i = 0; i < 8; i++) 
  {
    if (names[i] == note) 
    {
      playTone(tones[i], duration);
    }
  }
}

void setup() 
{
  pinMode(piezoPin, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}
int now=1;  ///更改歌的變數
void loop() 
{
  delay(tempo/2);
  if (now==1)
  {
    for (int i = 0; i < length; i++) 
    {
      if (ttlsnotes[i] == ' ') 
      {
        delay(ttlsbeats[i] * tempo);
      } 
      else 
        playNote(ttlsnotes[i], ttlsbeats[i] * tempo);
        if( digitalRead(button) == LOW) {

           now = 2; break;
        } ///卡歌
      delay(tempo / 2); 
    }
  }
  else
  {
    for (int i = 0; i < lengths; i++) 
    {
      if (jbnotes[i] == ' ') 
      {
        delay(jbbeats[i] * tempo);
      } 
      else 
        playNote(jbnotes[i], jbbeats[i] * tempo);
        if( digitalRead(button) == LOW) {

           now = 1; break;
        }  ///卡歌,換前一首
      delay(tempo / 2); 
    }
  }
}