카테고리 없음

[동아리 과제] 5월 4일 아두이노 2차시 과제

20308박동진 2022. 5. 8. 19:24

수동 부저란?

- 수동 부저는 아두이노에서 소리를 내는 모듈이다. (일종의 손가락만한 스피커)

- 다리의 길이가 같다.

- 전원을 공급해도 바로 소리가 나지 않는다.

- 여러가지 음을 낼 수 있다.

<-->

능동 부저란?

- 수동 부저와 달리 한 개의 음만 출력 가능한 모듈이다.

- 다리의 길이가 다르다.

- 전원을 공급하면 바로 소리가 난다.

 

 

ex.<코드>

 

*tone(pin(제어하고자 하는 핀의 번호), frequency(음 주파수)); : 해당 pin을 통해 특정한 주파수의 사각 파형을 생성(?)

         cf. 사각파형 = 디지털 신호.

*noTone(pin(제어하고자 하는 핀의 번호)); : 음의 생성을 멈춘다.

*pinMode(핀번호, 입출력 여부);

 

 

초음파 센서란?

-초음파를 대상에게 발사하여 반사되어 오는 반사파를 받을 때까지의 시간을 확인하여 거리를 측정하는 센서

- trig: 수신, Echo: 송신

- 일정한 속도로 똑바로 날아감.

- 경우에 따라 굴절 방향이 달라질 수 있다.

 

ex.<코드>

*Serial.begin(통신속도);

*digitalWrite(핀 번호 참거짓유무); --> HIGH = 1, LOW = 0

 

직접 해보자!

1. 음악을 만들어보자!

<회로도>

 

코드 :

int bu = 4;// 부저를 4번으로하고
int trig = 2;// 송신핀은 2번으로
int echo = 3;// 수신핀은 3번으로함
void setup() {
  Serial.begin(9600);//9600bps의 속도로 설정
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(bu, OUTPUT);
}

void loop() { //반복
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);

  float distance = (340*pulseIn(echo, HIGH) / 1000/2);

  if(distance <= 100){
    tone(bu, 262);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 262);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 391);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 391);
    delay(500);
    noTone(bu);
    tone(bu, 440);
    delay(500);
    noTone(bu);
    tone(bu, 391);
    delay(500);
    noTone(bu);
    tone(bu, 440);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 262);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 262);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 392);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 392);
    delay(500);
    noTone(bu);
    tone(bu, 440);
    delay(500);
    noTone(bu);
    tone(bu, 392);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 262);
    delay(500);
    noTone(bu);
    tone(bu, 294);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 392);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    tone(bu, 349);
    delay(500);
    noTone(bu);
    
  }
}

 

2. LED를 켜보자!

 

<회로도>

코드 : 

int LED = 4;// LED를 4번으로하고
int trig = 2;// 송신핀은 2번으로
int echo = 3;// 수신핀은 3번으로함
void setup() {
  Serial.begin(9600);//9600bps의 속도로 설정
  pinMode(LED, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(trig, OUTPUT);
}

void loop() { //반복
  
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);

  float distance = (340*pulseIn(echo, HIGH)/1000/2);

  if(distance <= 100){
    digitalWrite(LED, HIGH);
  }
  else{
    digitalWrite(LED, LOW);
  }
}