에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

기술문의 게시판입니다.

게시판 상세
제목 아두이노 미세먼지 키트 관련
작성자 박지우 (ip:)
  • 작성일 2020-06-19
  • 추천 추천하기
  • 조회수 25

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <DHT.h>

#define DHTPIN A1

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);


int dust_sensor = A0;


int rgb_red = 5;

int rgb_green = 6;

int rgb_blue = 7;


float dust_value = 0;

float dustDensityug = 0;


int sensor_led = 12;

int sampling = 280;

int waiting = 40;

float stop_time = 9680;


double five_dust[5] = {0};

double recent_dust = 0, total_dust = 0;


LiquidCrystal_I2C lcd(0x27,16,2);


byte humi[8] = {

  0b00000,

  0b10001,

  0b10001,

  0b10001,

  0b11111,

  0b11111,

  0b11111,

  0b11111,

};

byte temp[8] = {

  0b00100,

  0b01010,

  0b01010,

  0b01010,

  0b01010,

  0b10001,

  0b11111,

  0b01110,

};

byte char_temp[8] = {

  0b10000,

  0b00110,

  0b01001,

  0b01000,

  0b01000,

  0b01000,

  0b01001,

  0b00110,

};


void setup(){

  lcd.init();

  lcd.backlight();

  lcd.createChar(1, temp);

  lcd.createChar(2, humi);

  lcd.createChar(3, char_temp);

  pinMode(sensor_led, OUTPUT);

  pinMode(4, OUTPUT);


  pinMode(rgb_red, OUTPUT);

  pinMode(rgb_green, OUTPUT);

  pinMode(rgb_blue, OUTPUT);


  Serial.begin(9600);

}


void loop(){

  digitalWrite(sensor_led, LOW);

  delayMicroseconds(sampling);


  int count=0;

  dust_value = analogRead(dust_sensor);


  delayMicroseconds(waiting);


  digitalWrite(sensor_led, HIGH);

  delayMicroseconds(stop_time);


  recent_dust = (0.17 * (dust_value * (5.0 / 1024)) - 0.1)*1000;

  five_dust[4] = recent_dust;

  total_dust = five_dust[4];


  for(int i=0; i<4; i+1)

  {

    total_dust += five_dust[i];

    five_dust[i] = five_dust[i+1];

  }


    if(five_dust[0] !=0)

    {

      dustDensityug = total_dust / 5;

      Serial.print("Dust Density [ug/m^3]: ");

      Serial.println(dustDensityug);

    }


    int humi = dht.readHumidity();

    int temp = dht.readTemperature();

   

   Serial.print("humidity:");

   Serial.print(humi);

   Serial.print("/t temperature:");

   Serial.println(temp);


  Serial.println();


  lcd.setCursor(0,0);

  lcd.write(byte(1));

  lcd.setCursor(2,0);

  lcd.print((int)temp);

  lcd.setCursor(5,0);

  lcd.write(byte(3));


  lcd.setCursor(8,0);

  lcd.write(byte(2));

  lcd.setCursor(10,0);

  lcd.print(humi);

  lcd.setCursor(13,0);

  lcd.print("%");


  lcd.setCursor(0,1);

  lcd.print("F.Dust");

  lcd.setCursor(7,1);

  lcd.print(dustDensityug);

  lcd.setCursor(11,1);

  lcd.print("ug/m3");


if(dustDensityug <=30.0)

  light(0, 0, 255);

else if(30.0 < dustDensityug && dustDensityug <= 80.0)

  light(0, 255, 0);

else if(80.0 < dustDensityug && dustDensityug <= 150.0)  

  light(255, 80, 1);

else

  light(255, 0, 0);


  delay(1000);

  }


  void light(int a, int b, int c){

    analogWrite(rgb_red, a);

    analogWrite(rgb_green, b);

    analogWrite(rgb_blue, c);

  }

 

해당코드로 돌렸는데 lcd판에 아무것도안나오고...for문을 지워보니 lcd판에뜨긴하는데 값이출력안되고..


방법좀요..

게시글 신고하기

신고사유

신고해주신 내용은 쇼핑몰 운영자의 검토 후 내부 운영 정책에 의해 처리가 진행됩니다.

평점 0점
첨부파일
비밀번호 수정 및 삭제하려면 비밀번호를 입력하세요.
댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

«
»