메인메뉴 바로가기 본문으로 바로가기

신정고등학교

검색열기

교수학습마당

예체능,기술가정,정보과

메인페이지 교수학습마당예체능,기술가정,정보과

예체능,기술가정,정보과

예체능,기술가정,정보과 상세보기
아두이노 초음파 연주기 코딩
작성자 *** 등록일 2022.07.27 14:26:09

int speaker = 6;

int TRIG = 12;

int ECHO = 13;

float duration;

float distance;

#define Do 262

#define Re 294

#define Mi 330

#define Fa 349

#define Sol 392

#define Ra 440

#define Si 494

#define Do2 523

#define Do3 0

 

void setup() {

Serial.begin(9600);

pinMode(speaker, OUTPUT);; // 피에조 부저 출력 설정

pinMode(TRIG, OUTPUT); // 초음파 출력 설정

pinMode(ECHO, INPUT); // 초음파 입력 설정

pinMode(2, OUTPUT);

pinMode(4, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

pinMode(11, OUTPUT);

} // PWM: 3, 5, 6, 9, 10, 11번 핀은 analogWrite() 함수로 8-bit PWM 출력용으로 사용할 수 있습니다.

 

void loop() {

digitalWrite(TRIG, LOW);

delayMicroseconds(2);

digitalWrite(TRIG, HIGH);

delayMicroseconds(10);

digitalWrite(TRIG, LOW);

distance = pulseIn(ECHO, HIGH) / 29 / 2; // cm 단위로 변경

Serial.println( distance );

Serial.print(distance);

Serial.println("cm");

 

if (distance < 25) { // 25cm보다 가까우면...

noTone(speaker);

digitalWrite(2, LOW);

digitalWrite(4, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

digitalWrite(11, LOW);

}

else if (distance < 28) { // 28cm보다 가까우면...

tone(speaker, Do2);

digitalWrite(2, HIGH);

delay(100);

digitalWrite(2, LOW);

}

else if (distance < 31) { // 31cm보다 가까우면...

tone(speaker, Si);

digitalWrite(4, HIGH);

delay(100);

digitalWrite(4, LOW);

}

else if (distance < 34) { // 34cm보다 가까우면...

tone(speaker, Ra);

digitalWrite(4, HIGH);

delay(100);

digitalWrite(4, LOW);

}

else if (distance < 37) { // 37cm보다 가까우면...

tone(speaker, Sol);

digitalWrite(7, HIGH);

delay(100);

digitalWrite(7, LOW);

}

else if (distance < 40) { // 40cm보다 가까우면...

tone(speaker, Fa);

digitalWrite(7, HIGH);

delay(100);

digitalWrite(7, LOW);

}

else if (distance < 43) { // 43cm보다 가까우면...

tone(speaker, Mi);

digitalWrite(8, HIGH);

delay(100);

digitalWrite(8, LOW);

}

else if (distance < 46) { // 46cm보다 가까우면...

tone(speaker, Re);

digitalWrite(8, HIGH);

delay(100);

digitalWrite(8, LOW);

}

else if (distance < 49) { // 49cm보다 가까우면...

tone(speaker, Do);

digitalWrite(11, HIGH);

delay(100);

digitalWrite(11, LOW);

}

else if (distance < 52) { // 52cm보다 가까우면...

tone(speaker, Do);

digitalWrite(11, HIGH);

delay(100);

digitalWrite(11, LOW);

}

else if (distance < 55) { // 55cm보다 가까우면...

noTone(speaker);

digitalWrite(2, LOW);

digitalWrite(4, LOW);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

digitalWrite(11, LOW);

}

}

첨부파일


게시 설정 기간 ~ 기간 지우기