임베디드/아두이노 우노

아두이노 우노 모듈 실습 [센서, 가변저항]

pakms980319 2024. 5. 14. 17:15

모듈 테스트

 

조도 센서

 

 

 

 

작성 코드

const int analogPin = A0;
const int ledPin = 10;
void setup()
{
 Serial.begin(115200);
}
void loop()
{
  int analogValue = analogRead(analogPin);
 
  Serial.println(analogValue);
  analogWrite(ledPin, analogValue/6);
  delay(100);

}

 

 

실행 결과

조도 센서 - 출력 결과 (1) 일반 상태

 

조도 센서 - 출력 결과 (2) 빛을 비춘 상태

 

 

  • 센서에 빛을 비추지 않을때는 analogValue 값이 커지고 LED 빛이 강해진 것을 관찰 할 수 있었다
  • 센서에 빛을 비출때는 analogValue 값이 작아지고 LED 빛이 약해진 것을 관찰 할 수 있었다

 

 

 

 

초음파센서 (1)

 

 

 

실행 코드

const int trig_pin = 11;
const int echo_pin = 12;

void setup()
{
 Serial.begin(115200);
 pinMode(trig_pin,OUTPUT);
 pinMode(echo_pin,INPUT);
}

void loop()
{
  digitalWrite(trig_pin,LOW);
  delayMicroseconds(2);
  digitalWrite(trig_pin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trig_pin,LOW);

  long duration = pulseIn(echo_pin,HIGH);
  long distance = (duration/2)/29.1;

  Serial.print(distance);
  Serial.println(" cm");
  delay(100);
}

 

초음파 센서 - 실행 결과(1) : 감지되는 사물이 없을 때

 

 

초음파 센서 - 실행 결과(2) : 감지되는 사물이 있을 때

 

  • 초음파 센서 앞에 사물이 없다면 distance가 크게 출력된다
  • 초음파 센서 앞에 사물이 감지된다면 distance가 작게 출력된다

 

 

 

 

 

초음파 센서 (2)

 

 

실행 코드

const int trig_pin = 11;
const int echo_pin = 12;

int LED1 = 4;      
int LED2 = 7;    
int LED3 = 8;
void setup()
{
 Serial.begin(115200);
 pinMode(trig_pin,OUTPUT);
 pinMode(echo_pin,INPUT);

  pinMode(LED1, OUTPUT);    
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
}

void loop()
{
  digitalWrite(trig_pin,LOW);
  delayMicroseconds(2);
  digitalWrite(trig_pin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trig_pin,LOW);

  long duration = pulseIn(echo_pin,HIGH);
  long distance = (duration/2)/29.1;

  Serial.print(distance);
  Serial.println(" cm");
  delay(100);

  if (distance > 30)  //   distance(거리) 가 80보다 크면
  {
    digitalWrite(LED1, HIGH);     // GREEN이 연결된 핀에 HIGH 신호(5V)를,
    digitalWrite(LED2, LOW);    // YELLOW가 연결된 핀에 LOW 신호(0V)를,
    digitalWrite(LED3, LOW);       // RED가 연결된 핀에 LOW신호(0V)를.
  }
  if (distance > 15 & distance <= 30)  
  {
    digitalWrite(LED1, LOW);  
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, LOW);
  }
  if (distance > 0 & distance <= 15)
  {
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, HIGH);
  }

}

 

초음파 센서(2) - 실행 결과(1)

 

 

초음파 센서(2) - 실행 결과(2)

 

 

초음파 센서(2) - 실행 결과(3)

 

  • 실행 결과(1) : 초음파센서에서 distance 가 0 < distance <= 15 로 감지된다면 빨간 LED 만 켜졌다
  • 실행 결과(2) : 초음파센서에서 distance 가 15< distance <= 30 로 감지된다면 노란 LED 만 켜졌다
  • 실행 결과(3) : 초음파센서에서 distance 가 distance > 30 로 감지된다면 초록 LED 만 켜졌다

 

 

 

 

 

온도 센서

 

 

 

실행 결과

float temp;
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  int val = analogRead(A0);
  temp = val*0.48828125; //화씨 → 섭씨 변경
  Serial.print("Current Temperature : ");
  Serial.println(temp);
  delay(500);
}

 

온도 센서 - 실행 결과

 

주변 환경의 온도를 감지하여 출력해주고 있다

 

 

 

 

가변 저항 (1)

 

 

const int ledPin = 10;
const int analogPin = A0;

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  int sensorInput = analogRead(analogPin);
  Serial.println(sensorInput);
  analogWrite(ledPin,sensorInput/4);
}

가변저항(1) - 실행 결과(1)
가변저항(1) - 실행 결과(2)

 

  • 가변 저항의 다이얼을 돌리는 양에 따라 sensorInput 의 값이 바뀌었고 LED 의 빛의 세기를 조절할 수 있었다

 

 

 

가변 저항 (2)

 

const int led[4] = {3,5,6,9};
const int analogPin = A0;

void setup()
{
  Serial.begin(9600);
  for(int x=0;x<4;x++){
    pinMode(led[x], OUTPUT);
  }
}

void loop()
{
  int sensorInput = analogRead(analogPin);
  Serial.println(sensorInput);
    if(sensorInput > 1024/7*(1+0))  //146
      digitalWrite(led[0],HIGH);
    else digitalWrite(led[0],LOW);
   
  if(sensorInput > 1024/7*(1+1))  //292
      digitalWrite(led[1],HIGH);
    else digitalWrite(led[1],LOW);  
   
    if(sensorInput > 1024/7*(1+2))  //438
      digitalWrite(led[2],HIGH);
    else digitalWrite(led[2],LOW);
   
    if(sensorInput > 1024/7*(1+3))  //584
      digitalWrite(led[3],HIGH);
    else digitalWrite(led[3],LOW);  
 
}

 

 

가변저항(2) - 실행 결과(1)

 

sensorInput 의 값이 146 보다 커지면서 첫 번째 LED 가 켜졌고 나머지 LED 들은 조건 미충족으로 LED 가 꺼져있다

 

 

가변저항(2) - 실행 결과(2)

 

sensorInput 의 값이 292 보다 커지면서 첫 번째, 두 번째 LED 가 켜졌고 나머지 LED 들은 조건 미충족으로 LED 가 꺼져있다

 

 

 

가변저항(2) - 실행 결과(3)

 

sensorInput 의 값이 438 보다 커지면서 첫 번째, 두 번째, 세 번째 LED 가 켜졌고 나머지 LED 는 조건 미충족으로 LED 가 꺼져있다

 

 

가변저항(2) - 실행 결과(4)

 

sensorInput 의 값이 584 보다 커지면서 모든 LED 가 켜졌다.

 

가변 저항의 다이얼을 돌리면서 sensorInput 의 값을 조절 할 수 있었다.