2020年11月30日 星期一

迪克 第十二週 連結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傳送資料來做鍵盤互動








喵~傳輸~小鋼琴~

Arduino連接Processing(傳輸)

  • 滑鼠點擊發出聲音
    • Arduino
      • #define C 523
      • #define D 587
      • #define E 659
      • void setup() {
      •   Serial.begin(9600);
      •   pinMode(2, INPUT_PULLUP);
      •   pinMode(8, OUTPUT);
      •   tone(8,C);
      •   delay(100);
      •   tone(8,D);
      •   delay(100);
      •   noTone(8);
      • }
      • void loop() {
      •   while(Serial.available()>0){
      •     Serial.read();
      •     tone(8,E,100);
      •   }
      • }
    • Processing(範例裡的)
      • import processing.serial.*;//外掛
      • Serial myPort;
      • void setup() 
      • {
      •   size(200, 200);
      •   myPort = new Serial(this,"COM4",9600);
      • }
      • void draw() {}
      • void mousePressed(){
      •   myPort.write("1");
      • }
  • 加上鍵盤,按下數字鍵發出聲音
    • Arduino
      • #define C 523
      • #define D 587
      • #define E 659
      • void setup() {
      •   Serial.begin(9600);
      •   pinMode(2, INPUT_PULLUP);
      •   pinMode(8, OUTPUT);
      •   tone(8,C);
      •   delay(100);
      •   tone(8,D);
      •   delay(100);
      •   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);
      •   }
      • }
    • 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");
      • }
      • void mousePressed(){
      •   myPort.write("1");
      • }
  • 小鋼琴
    • Arduino
      • #define C 523
      • #define D 587
      • #define E 659
      • #define F 698
      • #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(100);
      •   tone(8,D);
      •   delay(100);
      •   noTone(8);
      • }

      • void loop() {
      •   while(Serial.available()>0){
      •     int now=Serial.read();
      •     if(now=='1') tone(8,C);
      •     if(now=='2') tone(8,D);
      •     if(now=='3') tone(8,E);
      •     if(now=='4') tone(8,F);
      •     if(now=='5') tone(8,G);
      •     if(now=='6') tone(8,A);
      •     if(now=='7') tone(8,B);
      •     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(){//鍵盤放開要回傳0(靜音)
      •   myPort.write("0");
      • }
      • void mousePressed(){
      •   myPort.write("1");
      • }

                                                                                                                                                                            𝔍𝔒𝔗𝔇-week12

                                                                                                                                                                             今日進度:

                                                                                                                                                                            1.把makeruno的開機調回來

                                                                                                                                                                            2.按下開關會發音

                                                                                                                                                                            3.makeruno連動processing

                                                                                                                                                                            4.做小鋼琴

                                                                                                                                                                            連動的程式碼⬇️

                                                                                                                                                                            makeruno程式碼:

                                                                                                                                                                            #include "pitches.h"

                                                                                                                                                                            #define Do 523

                                                                                                                                                                            #define Mi 659

                                                                                                                                                                            #define So 784

                                                                                                                                                                            void setup() 

                                                                                                                                                                            {

                                                                                                                                                                             Serial.begin(9600);

                                                                                                                                                                             pinMode(2, INPUT_PULLUP);//按鍵預設為開,通道為2

                                                                                                                                                                             pinMode(8,OUTPUT);//揚聲器輸出聲音,通道為8

                                                                                                                                                                             tone(8,Do);//Do的聲音

                                                                                                                                                                             delay(1000);

                                                                                                                                                                             tone(8,Mi);//Mi的聲音

                                                                                                                                                                             delay(1000);

                                                                                                                                                                             noTone(8);

                                                                                                                                                                            }

                                                                                                                                                                            void loop()

                                                                                                                                                                            {

                                                                                                                                                                                while(Serial.available()>0)

                                                                                                                                                                                 {

                                                                                                                                                                                      int now = Serial.read();

                                                                                                                                                                                      if(now=='1') tone(8, Do, 100);//如果讀到1發出Do 0.1秒

                                                                                                                                                                                      if(now=='3') tone(8, Mi, 100);//如果讀到3發出Mi 0.1秒

                                                                                                                                                                                      if(now=='5') tone(8, So, 100);//如果讀到5發出Mi 0.1秒

                                                                                                                                                                                 }

                                                                                                                                                                            }

                                                                                                                                                                            processing程式碼:

                                                                                                                                                                            import processing.serial.*;

                                                                                                                                                                            Serial myport;

                                                                                                                                                                            void setup()

                                                                                                                                                                            {

                                                                                                                                                                              size(200,200);

                                                                                                                                                                              myport = new Serial(this,"COM6", 9600);//USB孔為6

                                                                                                                                                                            }

                                                                                                                                                                            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");

                                                                                                                                                                            }

                                                                                                                                                                            ⚠️注意事項:

                                                                                                                                                                            記得只能擇一使用COM否則會出現錯誤

                                                                                                                                                                            小鋼琴連動結果⬇️

                                                                                                                                                                            makeruno程式碼:

                                                                                                                                                                            #include "pitches.h"

                                                                                                                                                                            #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);

                                                                                                                                                                             pinMode(2, INPUT_PULLUP);

                                                                                                                                                                             pinMode(8,OUTPUT);

                                                                                                                                                                             tone(8,Do);

                                                                                                                                                                             delay(1000);

                                                                                                                                                                             tone(8,Mi);

                                                                                                                                                                             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);

                                                                                                                                                                             }

                                                                                                                                                                            }

                                                                                                                                                                            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("0332421");

                                                                                                                                                                            }

                                                                                                                                                                            void mousePressed()

                                                                                                                                                                            {

                                                                                                                                                                              myport.write("1");

                                                                                                                                                                            }





                                                                                                                                                                            ⚠️注意事項:

                                                                                                                                                                            記得只能擇一使用COM否則會出現錯誤