본문 바로가기
아두이노

아두이노 - 초음파 / 사운드 / 일산화탄소 센서 / 팬모터

by ADELA_J 2023. 7. 18.

<초음파 센서>

더보기
#define TRIG 9    //TRIG 핀 설정(초음파 보내는 핀)
#define ECHO 8    //ECHO 핀 설정(초음파 받는 핀)
 
void setup(){
  Serial.begin(9600);   //시리얼 통신을 정의해줍니다.
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}
 
void loop()
{
  long duration, distance;
 
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
 
  duration = pulseIn(ECHO, HIGH);   //물체에 반사되어 돌아온 초음파 시간 저장
  //34000*초음파 가 물체로부터 반사되어 돌아오는 시간 /1000000 /2(왕복이니까)
  //초음파센서의 거리값이 위 계산값과 동일하게 cm로 환산되는 계산 공식
  distance = duration * 17/1000;
 
  //초음파 거리값 확인 하는 코드
  Serial.println(duration);   //반사되어 돌아오는 시간
  Serial.print("\nDistance:");
  Serial.print(distance);   //측정된 물체로부터 거리값(cm)을 보여줍니다.
  Serial.println("cm");
 
  delay(1000);
}

 

출처 : https://m.blog.naver.com/boilmint7/220926404472

 

 

<사운드 센서>

더보기

 

const int SOUND_SENSOR_PIN = A0;
int sensorValue;
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  sensorValue = analogRead(SOUND_SENSOR_PIN);
  Serial.println(sensorValue);
  delay(200);
}

 

<사운드센서 - 박수칠때마다 불켜지기>

더보기
int soundSensor = A0;
int led[6] = {8,9,10,11,12,13};   //LED핀 8~13
int threshold = 31;      //소리 크기 기준
int count = 0;      //박수 몇 번 쳤는지 카운트
int sensor;
 
void setup() {
  Serial.begin(9600);     //시리얼모니터 출력
  pinMode(soundSensor, INPUT);      //사운드 센서 입력으로 설정
  for (int i=0; i<6; i++)
    pinMode(led[i], OUTPUT);     //LED핀 출력으로 설정
}
 
void loop() {
  sensor = analogRead(soundSensor);
  Serial.println(sensor);
  if (analogRead(soundSensor) >= threshold) {   //감지된 소리의 크기가 20이상일때
    for(int i=0; i<6; i++) {    //6개 led제어
      if(i == count)     //카운트 된 박수 개수로 led제어
        digitalWrite(led[i], HIGH);
      else
        digitalWrite(led[i], LOW);
    }
    count = (count < 6) ? count+1 :0;   //count<6참일때 count+1, 거짓일때 0 반환
    delay(200);
  }
  else      //감지된 소리의 크기가 200이하일때
    delay(1);
}

 

<일산화탄소 감지기>

더보기
int GasPin = A0;    //가스 센서 입력을 위한 아날로그 핀
 
void setup() {
  pinMode(GasPin, INPUT);   //아날로그 핀 A0를 입력모드로 설정
  Serial.begin(9600);
}
 
void loop() {
  Serial.println(analogRead(GasPin));   //가스센서로부터 아날로그 데이터를 받아와 시리얼 모니터로 출력
  delay(1000) ;      //1s대
}

 

<인터벌 선풍기 시계방향으로 돌았다가 반대방향으로 돌았다가>

더보기
int A = 8;
int B = 9;
 
void setup() {
  pinMode (A, OUTPUT);
  pinMode (B, OUTPUT);
}
 
void loop(){
  digitalWrite(A, LOW); //팬모터가 A방향으로 회전
  digitalWrite(B, HIGH);
  delay(2000);    //2초후
 
  digitalWrite(A, HIGH);    //전체정지
  digitalWrite(B, HIGH);      
  delay(5000);    //5초
 
  digitalWrite(A, HIGH);
  digitalWrite(B, LOW);   //팬모터가 B방향으로 회전
  delay(2000);    //2초 후
 
  digitalWrite(A, HIGH);    //전체정지
  digitalWrite(B, HIGH);
  delay(5000);    //5초후
}