2020年11月30日 星期一
迪克 第十二週 連結Ardino跟Processing
:0 week12
(╯°□°)╯︵ ┻━┻ Week12 連結不同程式
今天上課一開始我們複習了上周的發出聲音,今天我們把它進化了。我們可以利用電腦的滑鼠來控制我們的板子發出聲音。
首先們們利用的是P語言跟板子互動,我們可以用鍵盤來控制來一次控制很多的聲音。Week12
喵~傳輸~小鋼琴~
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否則會出現錯誤












