아두이노 소스코드 관련 질문입니다 (내공100)

아두이노 소스코드 관련 질문입니다 (내공100)

작성일 2018.09.12댓글 1건
    게시물 수정 , 삭제는 로그인 필요

저희가 대회가 얼마 안남아서 그러는데 미세먼지측정 아두이노를 만들고 있는데 자꾸 오류가 나네요
소스 코드는 
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include "emotion.h"
#include <PMsensor.h>
#define sensitivity  0.1  //먼지 센서의 민감도 수치
#define DHTPIN 6  // 온습도센서 핀 번호
#define DHTTYPE DHT11
const int sensorPin = A0;  
const int sensorLED = 3;  
PMsensor PM;
LiquidCrystal_I2C lcd(0x3F, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
////////////////////////측정값에 따른 이모티콘, LED 세팅///////////////////////////
void setEmoticon(float data) {
if (data > 100) { //Worst. 80 < data, Red LED
    lcd.createChar(4, topAngry1);
    lcd.createChar(5, topAngry2);
    lcd.createChar(6, bottomAngry1);
    lcd.createChar(7, bottomAngry2);
    digitalWrite(9, HIGH);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
  }
else if (data > 50) { //Normal. 30 < data < 80, Yellow LED
    lcd.createChar(4, topSoSo1);
    lcd.createChar(5, topSoSo2);
    lcd.createChar(6, bottomSoSo1);
    lcd.createChar(7, bottomSoSo2);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
else { //Good. data < 30, Green LED
    lcd.createChar(4, topSmile1);
    lcd.createChar(5, topSmile2);
    lcd.createChar(6, bottomSmile1);
    lcd.createChar(7, bottomSmile2);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
}
void setup() {
  lcd.init();// Luquid Crystal Display Custom Character Code for Arduino 16X2 Character LCD
// Dust, Temprature, Humidity Icon, Temprature measurement
byte temp[] = {
  B00100,
  B01010,
  B01010,
  B01110,
  B01110,
  B11111,
  B11111,
  B01110
};
byte humi[] = {
  B00100,
  B00100,
  B01010,
  B01010,
  B10001,
  B11111,
  B11111,
  B01110
};
byte dust[] = {
  B01010,
  B10101,
  B00000,
  B01010,
  B10101,
  B00000,
  B01010,
  B10101
};
byte C[] = {
  B10000,
  B00110,
  B01001,
  B01000,
  B01000,
  B01001,
  B00110,
  B00000
};

// Smile Emoticon Top
byte topSmile1[] = {
  B00000,
  B00111,
  B01000,
  B10000,
  B10000,
  B10010,
  B10010,
  B10000
};

byte topSmile2[] = {
  B00000,
  B11100,
  B00010,
  B00001,
  B00001,
  B01001,
  B01001,
  B00001
};
// SoSo Emoticon Top
byte topSoSo1[] = {
  B00000,
  B00111,
  B01000,
  B10000,
  B10000,
  B10010,
  B10000,
  B10000
};

byte topSoSo2[] = {
  B00000,
  B11100,
  B00010,
  B00001,
  B00001,
  B01001,
  B00001,
  B00001
};
// Angry Emoticon Top
byte topAngry1[] = {
  B00000,
  B00111,
  B01000,
  B10000,
  B10100,
  B10010,
  B10000,
  B10000
};

byte topAngry2[] = {
  B00000,
  B11100,
  B00010,
  B00001,
  B00101,
  B01001,
  B00001,
  B00001
};
// Smile Emoticon Bottom
byte bottomSmile1[] = {
  B10000,
  B10000,
  B10100,
  B10011,
  B01000,
  B00111,
  B00000,
  B00000
};
byte bottomSmile2[] = {
  B00001,
  B00001,
  B00101,
  B11001,
  B00010,
  B11100,
  B00000,
  B00000
};
// SoSo Emoticon Bottom
byte bottomSoSo1[] = {
  B10000,
  B10000,
  B10011,
  B10000,
  B01000,
  B00111,
  B00000,
  B00000
};
byte bottomSoSo2[] = {
  B00001,
  B00001,
  B11001,
  B00001,
  B00010,
  B11100,
  B00000,
  B00000
};
// Angry Emoticon Bottom
byte bottomAngry1[] = {
  B10000,
  B10000,
  B10001,
  B10010,
  B01000,
  B00111,
  B00000,
  B00000
};
byte bottomAngry2[] = {
  B00001,
  B00001,
  B10001,
  B01001,
  B00010,
  B11100,
  B00000,
  B00000
};
  lcd.backlight();
  lcd.createChar((byte)0, temp);
  lcd.createChar(1, humi);
  lcd.createChar(2, dust);
  lcd.createChar(3, C);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  Serial.init(9600);
  /////(infrared LED pin, sensor pin)  /////
  PM.init(sensorLED, sensorPin);
}
void loop() {
  byte temp = dht.readTemperature();
  byte humi = dht.readHumidity();
  if (isnan(humi) || isnan(temp) ) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float data = 0;
  int err = PMsensorErrSuccess;
  if ((err = PM.read(&data, true, sensitivity)) != PMsensorErrSuccess) {
    Serial.print("data Error = ");
    Serial.println(err);
    delay(1500);
    return;
  }
  Serial.println(data);
  delay(1500);
  setEmoticon(data);
  //----------------------------------------------------LCD 출력----------------------------------------------------//
  lcd.setCursor(0, 0);
  lcd.write(2);
  lcd.print(" ");
  lcd.print(data);
  if (data > 100) {
    lcd.print("ug");
  }
  else if (data > 10) {
    lcd.print(" ug");
  }
  else {
    lcd.print(" ug  ");
  }

  lcd.setCursor(0, 1);
  lcd.write((byte)0);
  lcd.print(" ");
  lcd.print((int)temp);
  lcd.write(3);
  lcd.print(" ");
  lcd.write(1);
  lcd.print(" ");
  lcd.print((int)humi);
  lcd.print("%");
  lcd.setCursor(13, 0);
  lcd.write(4);
  lcd.write(5);
  lcd.setCursor(13, 1);
  lcd.write(6);
  lcd.write(7);
}
입니다 
어디서 오류난건진 빠른 답변 부탁드립니다.




#아두이노 소스코드 #아두이노 소스코드 추출 #아두이노 소스코드 합치기 #아두이노 소스코드 사이트 #아두이노 소스코드 업로드 #아두이노 노래 소스코드 #아두이노 스마트팜 소스코드 #아두이노 rc카 소스코드 #아두이노 미세먼지 측정기 소스코드 #아두이노 led 소스코드

profile_image 익명 작성일 -


//
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include "emotion.h"
#include <PMsensor.h>
//
#define sensitivity  0.1 //먼지 센서의 민감도 수치
#define DHTPIN       6   // 온습도센서 핀 번호
#define DHTTYPE      DHT11
//
const int sensorPin=A0;
const int sensorLED=3;
//
PMsensor PM;
LiquidCrystal_I2C lcd(0x3F,16,2);
DHT dht(DHTPIN,DHTTYPE);
//
// Dust,Temprature,Humidity Icon,Temprature measurement
byte temp[]={ B00100,B01010,B01010,B01110,B01110,B11111,B11111,B01110  };
byte humi[]={ B00100,B00100,B01010,B01010,B10001,B11111,B11111,B01110  };
byte dust[]={ B01010,B10101,B00000,B01010,B10101,B00000,B01010,B10101  };
byte C[]   ={ B10000,B00110,B01001,B01000,B01000,B01001,B00110,B00000  };
// Smile Emoticon Top
byte topSmile1[]={ B00000,B00111,B01000,B10000,B10000,B10010,B10010,B10000  };
byte topSmile2[]={ B00000,B11100,B00010,B00001,B00001,B01001,B01001,B00001  };
// SoSo Emoticon Top
byte topSoSo1[]={ B00000,B00111,B01000,B10000,B10000,B10010,B10000,B10000  };
byte topSoSo2[]={ B00000,B11100,B00010,B00001,B00001,B01001,B00001,B00001  };
// Angry Emoticon Top
byte topAngry1[]={ B00000,B00111,B01000,B10000,B10100,B10010,B10000,B10000  };
byte topAngry2[]={ B00000,B11100,B00010,B00001,B00101,B01001,B00001,B00001  };
// Smile Emoticon Bottom
byte bottomSmile1[]={ B10000,B10000,B10100,B10011,B01000,B00111,B00000,B00000  };
byte bottomSmile2[]={ B00001,B00001,B00101,B11001,B00010,B11100,B00000,B00000  };
// SoSo Emoticon Bottom
byte bottomSoSo1[]={ B10000,B10000,B10011,B10000,B01000,B00111,B00000,B00000  };
byte bottomSoSo2[]={ B00001,B00001,B11001,B00001,B00010,B11100,B00000,B00000  };
// Angry Emoticon Bottom
byte bottomAngry1[]={ B10000,B10000,B10001,B10010,B01000,B00111,B00000,B00000  };
byte bottomAngry2[]={ B00001,B00001,B10001,B01001,B00010,B11100,B00000,B00000  };
//
//--------------------------------측정값에 따른 이모티콘,LED 세팅----------------------------//
void setEmoticon(float data){
  if(data>100){ //Worst.80<data,Red LED
    lcd.createChar(4,topAngry1); lcd.createChar(5,topAngry2); lcd.createChar(6,bottomAngry1); lcd.createChar(7,bottomAngry2);
  digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,LOW); }
  else if(data>50){ //Normal.30<data<80,Yellow LED
    lcd.createChar(4,topSoSo1); lcd.createChar(5,topSoSo2); lcd.createChar(6,bottomSoSo1); lcd.createChar(7,bottomSoSo2);
    digitalWrite(9,HIGH); digitalWrite(10,HIGH); digitalWrite(11,LOW);
  }
  else{ //Good.data<30,Green LED
    lcd.createChar(4,topSmile1); lcd.createChar(5,topSmile2); lcd.createChar(6,bottomSmile1); lcd.createChar(7,bottomSmile2);
    digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(11,LOW);
  }
}
//
void setup(){
  pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT);
  Serial.init(9600);
  lcd.init();
  lcd.backlight();
  lcd.createChar((byte)0,temp); lcd.createChar(1,humi); lcd.createChar(2,dust); lcd.createChar(3,C);
  //---- (infrared LED pin,sensor pin) ----//
  PM.init(sensorLED,sensorPin);
}
//
void loop(){
  byte temp=dht.readTemperature();
  byte humi=dht.readHumidity();
  //
  if(isnan(humi)||isnan(temp)){ Serial.println("Failed to read from DHT sensor!"); return; }
  //
  float data=0;
  int err=PMsensorErrSuccess;
  //
  if((err=PM.read(&data,true,sensitivity))!=PMsensorErrSuccess){
    Serial.print("data Error="); Serial.println(err); delay(1500); return;
  }
  //
  Serial.println(data); delay(1500);
  setEmoticon(data);
  //--------------------------------LCD 출력----------------------------------------------------//
  lcd.setCursor(0,0);   lcd.write(2); lcd.print(" ");
  if(data<10)lcd.print("  "); else if(data<100)lcd.print(" "); lcd.print(data); lcd.print(" ug ");
  lcd.setCursor(0,1);   lcd.write((byte)0); lcd.print(" ");
  lcd.print((int)temp); lcd.write(3); lcd.print(" "); lcd.write(1); lcd.print(" ");
  lcd.print((int)humi); lcd.print("%");
  lcd.setCursor(13,0);  lcd.write(4); lcd.write(5);
  lcd.setCursor(13,1);  lcd.write(6); lcd.write(7);
}


이 예제로 다시 컴파일 해보시고요

LCD 초기화 함수는 라이브러리에 따라서 다른 이름이 있습니다. 
초기화 함수 외에도 다른 문제가 발생할 수 있으니 
해당 라이브러리의 예제소스를 참고해서 수정하세요

LiquidCrystal I2C

A library for I2C LCD displays.

Author
Frank de Brabander
Maintainer
Marco Schwartz
Website
https://github.com/marcoschwartz/LiquidCrystal_I2C
Category
Display
License
Unknown
Library Type
Contributed
Architectures
avr

The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES.

Downloads

Filename Release Date File Size
LiquidCrystal_I2C-1.1.2.zip 2015-11-29 19.38 KiB
LiquidCrystal_I2C-1.1.1.zip 2015-10-19 19.37 KiB
https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c



아두이노 소스코드 관련질문

... Redirect=Log&logNo=99951781여기에 있는 전자 자를 만들려고 하는데 아두이노를 사용해서 할려고 하는데 소스코드쫌 가르켜 주세요. 저 있는 내공...