레이블이 아두이노 나노인 게시물을 표시합니다. 모든 게시물 표시
레이블이 아두이노 나노인 게시물을 표시합니다. 모든 게시물 표시

2016년 11월 4일 금요일

아두이노 LCD와 온습도센서로 불쾌지수 표현하기


이번에는 LCD(16*2)와 저번에 소개했던 DHT11 온습도 센서로 불쾌지수를 측정 해보기로 했다.



위의 사이트에 온도와 상대습도로 불쾌지수를 산출해주는 공식이 나와있다.



위의 공식에 온도와 습도(%)를 대입하면 불쾌지수가 나온다.



이번에는 아두이노 나노를 사용하겠다.




위의 i2c변화기를 lcd에 납땝하여 사용한다.

GND는 GND
VCC는 5v
SDA는 A4
SCL는 A5

왼쪽은 i2c 오른쪽은 아두이노로

위와 같이 연결하면된다.


온습도센서의 Vcc는 아두이노 5V
GND는 아두이노 GND
DATA핀은 아두이노2번핀에 연결한다.

DHT11 라이브러리와
LCD i2c 라이브러리를 구글링하면 나오니깐
다운 받은후 라이브러리를 추가하자





추가후 아래의 코드를 복사 & 붙이기 해서 업로드해보자

/////////////////////////////////////////////////////////////////////
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT11.h>
DHT11 dht11(2);
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x20 for a 16 chars and 2 line display
int calculate(int, int);
void setup()
{
  lcd.init();                      // initialize the lcd
  // Print a message to the LCD.
  lcd.backlight();
}
char d[] = {"Discomfort index"};
char state[4][5] = {
  {"Great"},
  {"Good "},
  {"Soso "},
  {"Bad  "}
};
int s;
void loop()
{
  lcd.clear();
  lcd.setCursor(0, 0);
  for (int i = 0; i < 16; i++)
    lcd.print(d[i]);
  int err;
  float temp, humi;
  lcd.setCursor(0, 1);
  if ((err = dht11.read(humi, temp)) == 0) {
    lcd.print(':');
    lcd.print(calculate(temp, humi / 100));
    lcd.print(calculate(temp, humi / 100) % 10);
    if (calculate(temp, humi / 100) < 68) s = 0;
    else if (calculate(temp, humi / 100) < 75) s = 1;
    else if (calculate(temp, humi / 100) < 80) s = 2;
    else s = 3;
  }
  lcd.setCursor(6, 1);
  for (int i = 0; i < 5; i++)
    lcd.print(state[s][i]);
  delay(DHT11_RETRY_DELAY);
}
int calculate(int t, int rh) {
  int i = (9 / 5) * t - 0.55 * (1 - rh) * ((9 / 5) * t - 26) + 32;
  return i;
}
//////////////////////////////////////////////////////////////



원래 lcd.print를 하면 문자열도 가능하지만
이상하게 문자열의 첫글자만 나와서 코드가 복잡해진 것이니 어쩔수없다.




업로드후 아두이노를 살펴보면

Discomfort index
:지수    상태

의 형태로 나와야 정상이다.

지수는 말그대로 불쾌지수이고
상태는 본문 처음에 나와있던 사이트의 상태를 적용해본 것이다.




지금은 불쾌지수가 54이므로 쾌적한 상태이다.




2016년 10월 16일 일요일

아두이노 부품 정리2

아두이노 부품 정리1 다음으로 아두이노 부품 정리2 이다.

저번에 소게하지 못했던 학원에있던 부품들 이다.


18. 초음파 센서

초음파 센서다.
내가 가지고 있는건 2m까지는 그럭저럭 정확한 값을 가져온다.

Trig 핀에서 초음파를 보내고 Echo핀에서 걸린 시간을 측정한다(소리는 약 초속 340m)



18.적외선 거리 센서
적외선 거리 센서이다.
이름에서 알 수 있듯이 적외선을 이용하여 거리를 측정한다.

19.소리 센서
소리 센서이다.
가운데 밑 마이크처럼 생긴것으로 소리를 듣고
오른쪽 가변 저항으로 감도를 조절 한다.

20.블루투스
블루투스이다.
저번에도 설명 했지만
학원에 다른 모양의 블루투스도 있어 올려본다.

21.LCD(2x16)
LCD이다.
LCD라이브러리를 이용하면 쉽게 글씨를 띄울수 있다.

원래는 핀을 전부 연결해서 썼지만 I2C 통신을 하여 2개의 핀으로
통신할수 있다,

22.아두이노 Yun
아두이노 Yun이다.
아두이노에다 WIFI가 있을 뿐만 아니라 안에 리눅스도 들어 있던걸로 기억 한다.
왼쪽 위는 이더넷용 아래쪽은 USB이다.

23.세그먼트
세그먼트이다.
4개짜리도 있지만 위의 것으로도 충분하므로 이것만 올렸다.
핀을 9개를 사용하여 8개의 LED를 제어한다.

붉은 빛이 나오며 위의 제품은 저항이 있어 따로 저항회로를 만들 필요가 없다.


24.아두이노 나노
아두이노 나노다.
내가 처음으로 사용한 아두이노 제품이다.
미니와 우노랑 마찬가지로 ATmega328을 사용하여 성능이 같고
미니와 다른점이 있다면 시리얼 변환기가 들어 있다(위의 나노를 확장형).

25.릴레이5v
릴레이이다.
5v로 제어 할수 있다.
릴레이는 스위치로 내부의 전자석을 이용해 스위치 역활을 한다.

26.휨 센서
휨 센서이다.
휘는정도에 따라 저항값이 달라지며 이것을 손에 달아서 로봇손을 만들수도 있다.