2020年11月30日 星期一

翰翰日記10

 #define Do 523

#define Mi 659

#define So 784

void setup()

{

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

  {

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

    }

按板子上的按鈕會發出聲音

arduino:

#define Do 523
#define Mi 659
#define So 784
void setup()
{
  Serial.begin(9600);
  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()
  {
    while(Serial.available()>0)
    {
      Serial.read();
      tone(8,So, 100);
      }
    //if(digitalRead(2)==LOW)tone(8,Mi,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");
}
這段程式碼是利用電腦控制小電腦,按一下processing的視窗就會發出叫聲
arduino:

#define Do 523
#define Mi 659
#define So 784
void setup()
{
  Serial.begin(9600);
  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()
  {
    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);
      }
    //if(digitalRead(2)==LOW)tone(8,Mi,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=='3')myPort.write("3");
if(key=='5')myPort.write("5");
}
void mousePressed()
{
myPort.write("1");
}
這兩段可以用鍵盤的1、3、5控制do mi so,跟滑鼠的do
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);
  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()
  {
    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);
      
      }
    //if(digitalRead(2)==LOW)tone(8,Mi,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");
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裡就可以了









沒有留言:

張貼留言