취미생활/프로그래밍

[아두이노(UNO Board)] 광센서와 LED + 온도센서

내가그리는인생 2025. 1. 5. 21:13
반응형

빛 센서를 활용하여 LED 문구를 바꾸는 프로그램 코드를 작성해 보았다.

 

아두이노 구매 후 관련 프로그램을 설치하여 프로그래밍 환경을 띄운다.

(PC, 아두이노 보드를 구매하면 관련 자료를 제공한다. 검색으로도 충분히 찾을 수 있다.)

설치하면 바탕화면에 'Arduino IDE'라는 아이콘이 생긴다.

실행하여 새로 작성하거나 최근 작성한 파일을 불러오자.

 

> 샘플을 가져와 수정한 코드(광센서 + LED 글씨 출력 + 온도센서)

샘플과 코딩에 필요한 Library 헤더 파일은 IDE 소프트웨어에서 손쉽게 지원해 준다.

다만 기본적으로 프로그래밍 개념이 없다면 C언어 기본 개념정도(깊게도 필요 없다.)는 익히고 해보길 권한다.

#include <LiquidCrystal_I2C.h>     //LiquidCrystal
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);  //lcd
DHT dht(12, DHT11); //DHT Temp


void setup() {
 int val = analogRead(A0);
  Serial.println(val); //light sencer
  if (val < 500){
    digitalWrite(5, HIGH);
  }
  else{
    digitalWrite(5, LOW);
  }
  delay(200);

  //lcd.begin()
  lcd.init();
  lcd.backlight();
  // temp set 
  Serial.begin(9600); // temp set 
}

void loop() {

  char sTemp[10];
  //temp start
  delay(3000);
  int tem = dht.readTemperature();  
  int hum = dht.readHumidity();    
 
  itoa(tem, sTemp, 10);

 int val = analogRead(A0);
 lcd.clear();  
  Serial.println(val);
  if (val < 500){
    digitalWrite(5, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("Moon is alive!");
    lcd.setCursor(0, 1);    
    lcd.print("Now : ");
    lcd.setCursor(6, 1);    
    lcd.print(sTemp);
    lcd.setCursor(8, 1);    
    lcd.print("C");
  }
  else{
    digitalWrite(5, LOW);
    lcd.print("Sun is alive!");
  }
  delay(200);
       

}

 

그런데 온도값을 전혀 가져오지 못한다... 뭐가 문제일까.. 

<...왜 0도여..>
<설마....잡았나 요놈?>

검색해 보니..

 

온도센서 이거 내가 엄한 거를 했나 싶다.

그래서 센서를 예제와 비슷한 거로 교체하고

코드를 다음과 같이 void loop() { 부분부터 itoa 함수 부분까지 수정하였다.

void loop() {
  float t_VAL;
  char sTemp[10];
  //temp start
  delay(3000);
  //int tem = dht.readTemperature();  
  int hum = dht.readHumidity();    
 
  int temp = analogRead(A1);
  t_VAL = temp*0.48828125; //화씨 → 섭씨 변경
  itoa(t_VAL, sTemp, 10);

 

analogRead(A1)에서 A0는 이미 광센서가 사용 중인 관계로 다음 INPUT 소켓에 A1을 사용하였다. 이번에 해당 개념을 익히게 되었다.

<오호...나온다..그런데 우리집이 이렇게 따뜻했던가? 오늘 영하던데?>

시간 개념을 입히고 타이머를 맞춰서 모터를 돌려서 뺨을 치는 알람을 한번 만들어봐야겠다.

 

비닐하우스 자동화에 사용되는 모터 규격과 전력 부분에 대해서도 공부가 필요할까 싶다.

 

오랜만에 머리 쓸려니 안 되는 머릴 붙잡고 한 가지 숙제를 끝내 본다.

 

반응형