|
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); } }
|