BASIC4MCU | 질문게시판 | 아두이노 초음파센서 + 블루투스 연결
페이지 정보
작성자 모슬포 작성일2018-09-27 15:23 조회8,340회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=5346
본문
제가 이페이지에 있는 오픈소스를 활용해서 초음파센서 2개로
음량과 음계를 내는것을 만들었는데 이 소스에 블루투스 연결할 수 있게프로그램 코드를 짜고싶은데 어렵네요
블루투스로 전원 ON/OFF 할 수 있게 프로그램 소스코드 및 연결
방법 알려주시면 감사하겠습니다.
/*
초음파 거리 센서로 테레민 만들기
이 스케치는 kocoaFAB에서 만들었습니다.
누구나 무료로 사용하실 수 있습니다.
*/
//초음파 센서의 핀번호를 설정
//왼쪽 초음파 거리센서로 음을 바꾸고 오른쪽 초음파 거리센서로 음량 조절함
int echoPin = 12; int trigPin = 13; int echoPin_right = 10; int trigPin_right = 11; int piezoPin = 3; //피에조 부저센서의 핀번호를 설정 float duration, duration_right; int amp = 0; void setup(){ pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(trigPin_right, OUTPUT); pinMode(echoPin_right, INPUT); // trig, trig_right를 출력모드로 설정, echo, echo_right를 입력모드로 설정 pinMode(piezoPin, OUTPUT);
//piezoPin을 출력모들 설정 } void loop(){ digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); // 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다. duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다. digitalWrite(trigPin_right, HIGH); delay(10); digitalWrite(trigPin_right, LOW); duration_right = pulseIn(echoPin_right, HIGH);
//아날로그 입력값의 범위로 바꿈
duration_right = constrain( map(duration_right, 0, 6000, 0, 1023), 0, 1023);
//음량과 음 높이를 변화시키는 함수 호출 changeVolume(); changeNote(duration, amp); }
//거리에 따라 음량을 변화시키는 함수 void changeVolume() { amp = duration_right / 10; }
//거리에 따라 음 높이를 변화시키는 함수 void changeNote(float time, int amp) {
if((duration >0) && (duration < 400)) { //거리가 0이상 400이하면 for(long i = 0; i < 1000000; i=i+2552) { //도 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*1911 - amp); } } else if(duration < 800 ){ //거리가 800이하면 for(long i = 0; i < 1000000; i=i+2552) { //레 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*1702 - amp); } } else if(duration < 1200) { //거리가 1200이하면 for(long i = 0; i < 1000000; i=i+2552) { //미 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*1517 - amp); } } else if (duration < 1600) { //거리가 1600이하면 for(long i = 0; i < 1000000; i=i+2552) { //파 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*1431 - amp); } } else if (duration < 2000) { //거리가 2000이하면 for(long i = 0; i < 1000000; i=i+2552) { //솔 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2 * 1276 - amp); } } else if (duration < 2400) { //거리가 2400이하면 for(long i = 0; i < 1000000; i=i+2552) { //라 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*1137 - amp); } } else if (duration < 2800) { //거리가 2800이하면 for(long i = 0; i < 1000000; i=i+2552) { //시 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*1012 - amp); } } else if (duration < 3200) { //거리가 2300이하면 for(long i = 0; i < 1000000; i=i+2552) { //도 digitalWrite(piezoPin,1); delayMicroseconds(amp); digitalWrite(piezoPin,0); delayMicroseconds(2*995 - amp); } } }
댓글 1
조회수 8,340master님의 댓글
master 작성일
"전원 ON/OFF"라는 것이 어느 전원을 ON/OFF 하고 싶다는 뜻인가요?
전원을 ON/OFF 하는 목적도 적어주세요