int no2 = 0;
int piezoPin = A7; // 피에조 인풋 핀
int piezoVal; // 피에조 전압값을 담는 변수
int piezoThreshold = 100; //문턱 기준값... 문턱을 넘어야 처리하도록 할 때...
long piezoNoteOnTime=0; // long은 int보다 큰 수를 담는 박스 32bit(4byte)
void setup()
{Serial.begin(9600);}
void loop()
{
piezoVal = analogRead(piezoPin); // 피에조 인풋핀으로부터 읽은 값을 변수에 담는다
if ( piezoVal > piezoThreshold && piezoNoteOnTime ==0 )// 문턱값을 넘고 노트온 상태가 아닐 경우
{
piezoVal = (piezoVal/8)-1; // "="표시는 "같다"라는 의미가 아니라 왼쪽에 오른쪽 값을 넣어라. 피에조에서 받은 아날로그값은 0~1023이지만 벨로서티 값은 0~127이므로 나누어 줌
usbMIDI.sendNoteOn(60,piezoVal,1); // 60번 노트를 piezoVal 만큼의 벨로서티로 1번 채널로 노트온..
piezoNoteOnTime =millis();// 현재 시간
Serial.println(piezoVal);// 디버그
}
if(piezoVal < 1 && piezoNoteOnTime !=0 && millis()-piezoNoteOnTime > (piezoVal/2)+50 )
{ // 노트오프 처리
usbMIDI.sendNoteOff(60,piezoVal,1);
piezoNoteOnTime =0;
Serial.println(piezoVal);
}
}



최근 덧글