2020年11月30日 星期一

week12 發出音樂

 簡單馬力歐開頭音樂


#define NOTE_C5 523

#define NOTE_E5 659

#define NOTE_G5 784


#define BUTTON 2

#define BUZZER 8


int melody[] = {

  NOTE_E5, NOTE_E5, 0, NOTE_E5, 0, NOTE_C5, NOTE_E5, 0, NOTE_G5

};


int noteDurations[] = {

  10, 10, 10, 10, 10, 10, 10, 10, 10

};


int pin;

int ledArrayHigh;

int ledArrayLow;

boolean mode = false;

boolean buttonPressed = false;


void setup()

{

  delay(1000);

  

  pinMode(BUTTON, INPUT_PULLUP);

  for (pin = 3; pin < 14; pin++) { 

    pinMode(pin, OUTPUT);

  }


  for (int thisNote = 0; thisNote < 9; thisNote++) {

    int noteDuration = 1000 / noteDurations[thisNote];

    tone(BUZZER, melody[thisNote], noteDuration);

    int pauseBetweenNotes = noteDuration * 1.30;

    delay(pauseBetweenNotes);

    noTone(BUZZER);

  }

}


void loop()

{

  for (pin = 0; pin < 5; pin++) {

    if (digitalRead(BUTTON) == LOW &&

        buttonPressed == false) {

      buttonPressed = true;

      mode = !mode;

      pin = 0;

      if (mode == false) {

        tone(BUZZER, NOTE_C5, 100);

        delay(100);

        tone(BUZZER, NOTE_G5, 100);

        delay(100);

        noTone(BUZZER);

      }

      else if (mode == true) {

        tone(BUZZER, NOTE_G5, 100);

        delay(100);

        tone(BUZZER, NOTE_C5, 100);

        delay(100);

        noTone(BUZZER);

      }

    }


    if (mode == false) {

      ledArrayHigh = 13 - pin;

      ledArrayLow = 7 - pin;

    }

    else if (mode == true) {

      ledArrayHigh = 9 + pin;

      ledArrayLow = 3 + pin;

    }

    digitalWrite(ledArrayHigh, HIGH);

    digitalWrite(ledArrayLow, HIGH);

    delay(100);

    digitalWrite(ledArrayHigh, LOW);

    digitalWrite(ledArrayLow, LOW);

    if (pin == 4) delay(100);

  }


  if (buttonPressed == true) {

    buttonPressed = false;

  }

}



丹ㄉ鋼琴 很彈ㄛ

    我們先複習上禮拜的

確認自己是com幾

然後複製

再來我們想做鋼琴
可以讓a --> p
鋼琴做完囉






hans week12

 Week12 

先安裝好Makeuno的driver之後,到makeruno github把程式碼複製到arduino。

1.讓makeruno可以每間隔一秒發出DO.MI.SO的聲音

2.

3.利用數字按鍵發出聲音

processing程式碼:

    import processing.serial.*;
Serial myPort;
void setup(){
    size(200,200);
    myPort = new Serial(this, "COM3", 9600);
}
void draw(){
  
}
void keyPressed(){
    if(key=='1') myPort.write("1");
    if(key=='3') myPort.write("3");
    if(key=='5') myPort.write("5");
}
void mousePressed(){
  myPort.write("1");
}

Arduino程式碼:

    #define Do 523
#define Mi 659
#define So 784
void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP);
  pinMode(8, OUTPUT);
  tone(8, Do);
  delay(100);
  tone(8, Mi);
  delay(100);
  tone(8, So);
  delay(100);
  noTone(8);

}

void loop() {
  // put your main code here, to run repeatedly:
    while(Serial.available() > 0){
      int now = Serial.read();
      if( now=='1') tone(8, Do, 100);
      if( now=='3') tone(8, Mi, 100);
      if( now=='5') tone(8, So, 100);
    }
}

4.數字鍵盤可以發出Do-Doo

processing程式碼:

    import processing.serial.*;
Serial myPort;
void setup(){
    size(200,200);
    myPort = new Serial(this, "COM3", 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");
    if(key=='8') myPort.write("8");
}
void keyReleased(){
  myPort.write("0");
}
void mousePressed(){
  myPort.write("1");
}

Arduino程式碼:

    #define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define So 784
#define La 880
#define Ti 988
#define Doo 1047

void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP);
  pinMode(8, OUTPUT);
  tone(8, Do);
  delay(100);
  tone(8, Mi);
  delay(100);
  tone(8, So);
  delay(100);
  noTone(8);

}

void loop() {
  // put your main code here, to run repeatedly:
    while(Serial.available() > 0){
      int now = Serial.read();
      if( now=='1') tone(8, Do );
      if( now=='2') tone(8, Re );
      if( now=='3') tone(8, Mi );
      if( now=='4') tone(8, Fa );
      if( now=='5') tone(8, So );
      if( now=='6') tone(8, La );
      if( now=='7') tone(8, Ti );
      if( now=='8') tone(8, Doo55 );
      if( now=='0') noTone(8);
    }
}



Sherry: arduino音樂按鍵

TRY_1:

#define Do 523

#define Mi 659

#define So 784

void setup() {

  // put your setup code here, to run once:

  pinMode(8,OUTPUT);//不給長度,一直發音

  tone(8,Do);

  delay(1000);

  tone(8,Mi);

  delay(1000);

  tone(8,So);

  delay(1000);

  noTone(8);//靜音

}

void loop() {

  // put your main code here, to run repeatedly:

} 


TRY_2:

pinMode(2,INPUT_PULLUP);

 pinMode(8,OUTPUT);

void loop() {

  // put your main code here, to run repeatedly:

  if(digitalRead(2)==LOW) tone(8,Mi,100);

}

TRY_3:

(processing)

import processing.serial.*;

Serial myPort;

void setup(){

  size(200,200);

  myPort=new Serial(this,"COM6",9600);

}

void draw(){

}

void mousePressed(){

  myPort.write("1");

}

(arduino)

#define Do 523

#define Mi 659

#define So 784


void setup() {

  Serial.begin(9600);

  // put your setup code here, to run once:

  pinMode(2,INPUT_PULLUP);

  pinMode(8,OUTPUT);//不給長度,一直發音

  tone(8,Do);

  delay(1000);

  tone(8,Mi);

  delay(1000);

  tone(8,So);

  delay(1000);

  noTone(8);//靜音

}


void loop() {

  //if(digitalRead(2)==LOW) tone(8,Mi,100);

  while(Serial.available()>0){

    Serial.read();

    tone(8,So,100);

  }

}

TRY_4:

(processing)

import processing.serial.*;

Serial myPort;

void setup(){

  size(200,200);

  myPort=new Serial(this,"COM6",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");

}

void keyReleased(){

  myPort.write("0");

}

void mousePressed(){

  myPort.write("1");

}

(arduino)
 

#define Do 523

#define Re 587

#define Mi 659

#define Fa 698

#define So 784

#define La 880

#define Ti 988


void setup() {

  Serial.begin(9600);

  // put your setup code here, to run once:

  pinMode(2,INPUT_PULLUP);

  pinMode(8,OUTPUT);//不給長度,一直發音

  tone(8,Do);

  delay(1000);

  tone(8,Mi);

  delay(1000);

  tone(8,So);

  delay(1000);

  noTone(8);//靜音

}


void loop() {

  //if(digitalRead(2)==LOW) tone(8,Mi,100);

  while(Serial.available()>0){

    int now=Serial.read();

    if(now=='1')tone(8,Do);

    if(now=='2')tone(8,Re);

    if(now=='3')tone(8,Mi);

    if(now=='4')tone(8,Fa);

    if(now=='5')tone(8,So);

    if(now=='6')tone(8,La);

    if(now=='7')tone(8,Ti);

    if(now=='0')noTone(8);

  }

}


參考網站:

https://github.com/CytronTechnologies/MakerUno_Examples/blob/master/MakerUno_DefaultSketch/MakerUno_DefaultSketch.ino



下次上課帶:

剪線鉗 杜邦線 麵包板 makeruno (joystick)

Yang_Week12

 

Aurduino+maker-uno


BUZZER 8 & noTone(使用BUZZER 8和靜音) :

#define C 523
#define D 659
#define E 784 
void setup() {
  pinMode(8,OUTPUT);
  tone(8,C);
  delay(1000);
  tone(8,D);
  delay(1000);
  tone(8,E);
  delay(1000);
  noTone(8);靜音
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW)tone(8,E,100);
}









Button 2(使用button2):

#define C 523
#define D 659
#define E 784 
void setup() {
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,C);
  delay(1000);
  tone(8,D);
  delay(1000);
  tone(8,E);
  delay(1000);
  noTone(8);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(2)==LOW)tone(8,E,100);
}



Processing & Aurduino+Maker-uno(Processing連結Aurduino) :
  • Processing
import processing.serial.*;
Serial myPort;
void setup(){
   size(200,200);
   myPort=new Serial(this,"COM4",9600);
}
void draw(){
  
}
void keyPressed(){
 if(key=='1')myPort.write("1");
 if(key=='3')myPort.write("3");
 if(key=='5')myPort.write("5"); 
}
void mousePressed(){
   myPort.write("1"); 
}

  • Aurduino+Maker-uno
#define C 523
#define D 659
#define E 784 
void setup() {
  Serial.begin(9600);
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,C);
  delay(1000);
  tone(8,D);
  delay(1000);
  tone(8,E);
  delay(1000);
  noTone(8);
}

void loop() {
  while(Serial.available()>0){
    int now =Serial.read();
    if(now=='1')tone(8,C,100);
    if(now=='3')tone(8,D,100);
    if(now=='5')tone(8,E,100);
  }
}


















完整鋼琴鍵:


  • Aurduino:
#define C 523 ///設置音階
#define D 587
#define E 659 
#define F 689 
#define G 784 
#define A 880 
#define B 988 

void setup() {
  Serial.begin(9600);
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,C);
  delay(1000);
  tone(8,D);
  delay(1000);
  tone(8,E);
  delay(1000);
  noTone(8);
}

void loop() {  ///按鍵設置
  while(Serial.available()>0){
    int now =Serial.read();
    if(now=='1')tone(8,C,100);
    if(now=='2')tone(8,D,100);
    if(now=='3')tone(8,E,100);
    if(now=='4')tone(8,F,100);
    if(now=='5')tone(8,G,100);
    if(now=='6')tone(8,A,100);
    if(now=='7')tone(8,B,100);
    if(now=='0')noTone(8);
  }
}


  • Processing:
import processing.serial.*;
Serial myPort;
void setup(){
   size(200,200);
   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");
  
}
void keyReleased(){///設置靜音鍵
   myPort.write("0"); 
}
void mousePressed(){
   myPort.write("1"); 
}





























Week12 - 8拉8888 M

今天交了uno有聲音出來 ,按上面的一個建會有聲音。

#define Do 523
#define Re 587
#define Mi 659
#define Fa 698    
#define So 784   //剩下音符的可以上網查

int melody[]={Fa,So,Re,Mi,Mi,Fa,So,Re};
void setup(){
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(1000);
  tone(8,Mi);
  delay(1000);
  tone(8,So);
  delay(1000);
  noTone(8);
}
void loop(){
  if( digitalRead(2)==LOW ) tone(8, Mi, 2100);
}
今天還交了案啥麼建就會有什麼聲音
audio (scripts)
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698    
#define So 784   //剩下音符的可以上網查

int melody[]={Fa,So,Re,Mi,Mi,Fa,So,Re};
void setup(){
  Serial.begin(9600);//USB 傳輸的速度
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(1000);
  tone(8,Mi);
  delay(1000);
  tone(8,So);
  delay(1000);
  noTone(8); //靜音
}
void loop(){
  while( Serial.available() > 0){
       int now = Serial.read();
       if( now=='1')tone(8,Do,100);ㄅ
       if( now=='3')tone(8,Mi,100);
       if( now=='5')tone(8,So,100);
    }
}
P語言
import processing.serial.*;
Serial myPort;
void setup(){
  size(200,200);
  myPort = new Serial(this,"COM3",9600);
}
void draw(){

}
void keyPressed(){
  if(key=='1') myPort.write("1");
  if(key=='3') myPort.write("3");
  if(key=='5') myPort.write("5");
}
void mousePressed(){
  myPort.write("1");
}
接下來的是更多音符的(類似鋼琴)
audio (scripts)
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698    
#define So 784   //剩下音符的可以上網查
#define La 880
#define Ti 988

int melody[]={Fa,So,Re,Mi,Mi,Fa,So,Re};
void setup(){
  Serial.begin(9600);//USB 傳輸的速度
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,Do);
  delay(1000);
  tone(8,Mi);
  delay(1000);
  tone(8,So);
  delay(1000);
  noTone(8); //靜音
}
void loop(){
  while( Serial.available() > 0){
       int now = Serial.read();
       if( now=='1') tone(8, Do);
       if( now=='2') tone(8, Re);
       if( now=='3') tone(8, Mi);
       if( now=='4') tone(8, Fa);
       if( now=='5') tone(8, So);
       if( now=='6') tone(8, La);
       if( now=='7') tone(8, Ti);
       if( now=='0') noTone(8);
    }
}
P語言
import processing.serial.*;
Serial myPort;
void setup(){
  size(200,200);
  myPort = new Serial(this,"COM3",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");
}
void keyReleased(){
  myPort.write("0");
}
void mousePressed(){
  myPort.write("1");
}

迪克 第十二週 連結Ardino跟Processing

可以搜尋 makeruno github找範例

複習上週內容

試著使用button!

借用一下Processingㄉ範例
點SimpleWrite
之後就可以借用裡面ㄉ程式碼ㄌ(✧≖‿ゝ≖)





我ㄅ知道J要幹嘛( ˊ-ˋ)
我懂ㄌ,點擊P的框框就可以發出Do

P輸入 A輸出
點擊1發出Do 3發出Re 5發出Mi

試著多用幾種聲音
然後設定成只要按著就會放聲音直到放開

J邊把程式碼給你

—————————————————————————————————————
Ardino

#define Do 523  
#define Re 587  
#define Mi 659
#define Fa 698  
#define So 784
#define La 880  
#define Si 988  


void setup() {
  Serial.begin(9600);//USB傳輸速度 (A<=>P 速度要一樣)
  
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
  tone(8,So);//換聲
  delay(500);
  tone(8,Mi);//換聲
  delay(500);
  tone(8,Do);
  delay(500);
  noTone(8);//ㄅ發出聲音

}

void loop() {
  while(Serial.available()>0){//有資料可送收
    int now = Serial.read();
    if( now == '1' ) tone(8, Do);
    if( now == '2' ) tone(8, Re);
    if( now == '3' ) tone(8, Mi);
    if( now == '4' ) tone(8, Fa);
    if( now == '5' ) tone(8, So);
    if( now == '6' ) tone(8, La);
    if( now == '7' ) tone(8, Si);
    if( now == '0' ) noTone(8);
  }
  //if(digitalRead(2)==LOW) tone(8,Mi,500);
}

—————————————————————————————————————
Processing

import processing.serial.*;
Serial myPort;

void setup() 
{
  size(200, 200);
  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");
}
void keyReleased(){
  myPort.write("0");
}
void mousePressed(){
  myPort.write("3");
}

—————————————————————————————————————



 

:0 week12

 

大電腦連接小電腦maker uno








#define Do 523
#define Mi 659
#define So 784
void setup() {
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP);
  pinMode(8, OUTPUT);
  tone(8, Do);
  delay(1000);
  tone(8, Mi);
  delay(1000);
  tone(8, So);
  delay(1000);
  noTone(8);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (digitalRead(2) == LOW) tone(8,Mi,100);
}


import processing.serial.*;

Serial myPort;
void setup() {
  size(200,200);
  myPort=new Serial(this,"COM3",9600);
}
void draw() {

}
void mousePressed() {
  myPort.write("1");
}

import processing.serial.*;

Serial myPort;
void setup() {
  size(200,200);
  myPort=new Serial(this,"COM3",9600);
}
void draw() {

}
void keyPressed() {
  if(key=='1') myPort.write("1");
  if(key=='3') myPort.write("3");
  if(key=='5') myPort.write("5");
}
void mousePressed() {
  myPort.write("1");
}


























(╯°□°)╯︵ ┻━┻ Week12 連結不同程式

 今天上課一開始我們複習了上周的發出聲音,今天我們把它進化了。我們可以利用電腦的滑鼠來控制我們的板子發出聲音。

首先們們利用的是P語言跟板子互動,我們可以用鍵盤來控制來一次控制很多的聲音。

如果我們再增加多點音,他就會成為一台簡易的鋼琴。





Week12

今天教學匯入音階
每個tone按下去會發出相對的音
最上面音後面的數字是音頻
1000是延遲時間
只要匯入面板便自動發出聲音

加入按按鈕發出聲音
按下面板上的BUTTON鍵就會有聲音

結合Processing的程式碼 叫出一快方框按下去面板也會出聲音

加入按數字鍵有音階的控制 1.3.5對應到Do,Mi,So

最後把7個音階都弄上去 鋼琴就出來了~~~~~
加上滑鼠按下方筐會一直發出聲音

 

week 12

按BUTTON發出聲音

利用Processing傳送資料來發出聲音

利用Processing傳送資料來做鍵盤互動