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

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

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

묻고답하기

기술문의 게시판입니다.

게시판 상세
제목 미세먼지 키트 오류
작성자 CS / 배송 (ip:)
  • 작성일 2019-09-05
  • 추천 추천하기
  • 조회수 26
안녕하세요 에듀이노입니다.
해당 문제는 결선상태를 먼저 확인해야할 필요가 보입니다. 결선상태를 이미지로 첨부해주시면 우선적으로 결선상태를 체크한 후 소스코드 테스트가 이루어져야 할것으로 보입니다.
감사합니다.

[ Original Message ]

안녕하세요.

미세먼지 키트를 이용하여 만들던중

결선을 다했는데 오류가나서 문의드립니다.

미세먼지감지기를 연결하면 led판에 미세먼지 수치가 -60에 고정되어 움직이지 않습니다..

혹시 원인이 뭔가요?


제가 사용한 코드입니다.

#include <LiquidCrystal_I2C.h>           // LiquidCrystal_I2C의 라이브러리를 불러옵니다.(I2C LCD)
LiquidCrystal_I2C lcd(0x27, 16, 2);      // lcd(LCD의 I2C 슬레이브 주소, lcd 1줄당 출력할 글자수, lcd 줄의 수)


int Vo = A0;
int V_LED = 2;

float Vo_value = 0;
float Voltage = 0;
float dustDensity = 0;

int LED_R = 9;
int LED_G = 10;
int LED_B = 11;

int FAN = A1;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(V_LED, OUTPUT);
  pinMode(Vo, INPUT);

  lcd.init();                // LCD_I2C 통신을 시작합니다.
  lcd.backlight();           // LCD backlight를 ON

  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(LED_B, OUTPUT);
  digitalWrite(LED_R, LOW);
  digitalWrite(LED_G, LOW);
  digitalWrite(LED_B, LOW);

  pinMode(FAN, OUTPUT);
  digitalWrite(FAN, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(V_LED, LOW);
  delayMicroseconds(280);
  Vo_value = analogRead(Vo);
  delayMicroseconds(40);
  digitalWrite(V_LED, HIGH);
  delayMicroseconds(9680);

  Voltage = Vo_value / 1024 * 5.0;
  dustDensity = (Voltage - 0.3) / 0.005;
  Serial.println(dustDensity);

  ////////////////////////////////////////////////

  lcd.clear();        //lcd 화면을 지웁니다.
  lcd.home();        //lcd 커서 위치를 0,1로 위치시킵니다.
  if( dustDensity > 150 ){    // 매우 나쁨 //
    lcd.print("AIR : VERY BAD!!"); 
  }else if( dustDensity > 80){   // 나쁨 //
    lcd.print("AIR : BAD!      "); 
  }else if( dustDensity > 30){  // 보통 //
    lcd.print("AIR : NORMAL     "); 
  }else{                    // 좋음
    lcd.print("AIR : GOOD      "); 
  }
  lcd.setCursor(0, 1); // lcd 커서의 위치를 4,0으로 설정합니다.
  lcd.print("ug/m3:"); // 현재 lcd 커서 위치로부터 "Good Day" 내용을 출력합니다.
  lcd.print(dustDensity);

  //////////////////////////////////////////////////////////////////////////////////////////////////////////

  if(dustDensity > 150){
    digitalWrite(LED_R, HIGH);
    digitalWrite(LED_G, LOW);
    digitalWrite(LED_B, LOW);
  }else if(dustDensity > 80){
    digitalWrite(LED_R, LOW);
    digitalWrite(LED_G, LOW);
    digitalWrite(LED_B, HIGH);   
  }else if(dustDensity > 30){
    digitalWrite(LED_R, LOW);
    digitalWrite(LED_G, HIGH);
    digitalWrite(LED_B, LOW);   
  }else{
    digitalWrite(LED_R, LOW);
    digitalWrite(LED_G, HIGH);
    digitalWrite(LED_B, LOW);   
  }

  ///////////////////////////////////////////////

  if(dustDensity > 150){
    digitalWrite(FAN, HIGH);
  }else{
    digitalWrite(FAN, LOW);   
  }
 
  delay(1000);

}

게시글 신고하기

신고사유

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

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

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

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

확인

/ byte

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

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

댓글 입력

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

확인

/ byte

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

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

«
»