今天的進度:
做出一個可以發出咚、鏘
的感應器
(敲下黑色圓圈 就有咚的聲音,跟鏘的聲音)
const int sensorPinA=0;
const int ledPinA= 13;
const int sensorPinB=1;
const int ledPinB= 12;
const int sensorPinC=2;
const int ledPinC= 11;
const int threshold= 50;
long previousMillisA = 0;
long previousMillisB = 0;
long previousMillisC = 0;
long interval = 50; // interval at which to blink (milliseconds)
int i=0;
int a1=1,a2=11;
int b1=2,b2=22;
int c1=3,c2=33;
void setup()
{
Serial.begin(9600);
pinMode(ledPinA, OUTPUT);
pinMode(ledPinB, OUTPUT);
pinMode(ledPinC, OUTPUT);
}
void loop()
{
int valA= analogRead(sensorPinA);
int valB= analogRead(sensorPinB);
int valC= analogRead(sensorPinC);
if (valA >= threshold)
if(millis() - previousMillisA > interval)
{
previousMillisA = millis();
if(i%2==0){ Serial.write(a1);Serial.println(a1);}
if(i%2!=0){ Serial.write(a2);Serial.println(a2);}
i++;
}
if (valB >= threshold)
if(millis() - previousMillisB > interval)
{
previousMillisB = millis();
if(i%2==0){ Serial.write(b1);Serial.println(b1);}
if(i%2!=0){ Serial.write(b2);Serial.println(b2);}
i++;
}
if (valC >= threshold)
if(millis() - previousMillisC > interval)
{
previousMillisC = millis();
if(i%2==0){ Serial.write(c1);Serial.println(c1);}
if(i%2!=0){ Serial.write(c2);Serial.println(c2);}
i++;
}
}
----------------------------------------------------------------------
import processing.serial.*;
import ddf.minim.*;
Minim minim;
AudioPlayer drumA1;
AudioPlayer drumA2;
AudioPlayer drumB1;
AudioPlayer drumB2;
AudioPlayer drumC1;
AudioPlayer drumC2;
Serial myPort; // Create object from Serial class
int val; // Data received from the serial port
void setup()
{
size(200, 200);
minim = new Minim(this);
// I know that the first port in the serial list on my mac
// is always my FTDI adaptor, so I open Serial.list()[0].
// On Windows machines, this generally opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[0];
// myPort = new Serial(this, "/dev/cu.usbmodem1411", 9600);
myPort = new Serial(this, "COM3", 9600);
drumA1= minim.loadFile("kick.mp3",128);
drumA2=minim.loadFile("kick.mp3",128);
drumB1= minim.loadFile("snare.mp3",128);
drumB2=minim.loadFile("snare.mp3",128);
drumC1= minim.loadFile("hat.mp3",128);
drumC2=minim.loadFile("hat.mp3",128);
}
void draw()
{
if ( myPort.available() > 0) { // If data is available,
val = myPort.read(); // read it and store it in val
}
background(205,170,125);
if (val == 1) {
drumA1.rewind();
drumA1.play();
fill(20);
}
if (val == 11) {
drumA2.rewind();
drumA2.play();
fill(255);
}
if (val == 2) {
drumB1.rewind();
drumB1.play();
fill(20);
}
if (val == 22) {
drumB2.rewind();
drumB2.play();
fill(255);
}
if (val == 3) {
drumC1.rewind();
drumC1.play();
fill(20);
}
if (val == 33) {
drumC2.rewind();
drumC2.play();
fill(255);
}
rect(50, 50, 100, 100);
}

沒有留言:
張貼留言