BASIC4MCU | 질문게시판 | 아두이노 질문드립니다 ㅠ
페이지 정보
작성자 qlsdl 작성일2018-06-18 16:23 조회13,175회 댓글3건본문
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);#include <Wire.h> // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h> // LCD 1602 I2C용 라이브러리
LiquidCrystal_I2C lcd(0x27,16,2); // 접근주소: 0x3F or 0x27
int ledPin1 = 9; // 1번 LED
int ledPin2 = 8; // 2번 LED
int Beep = 7; // 센서 신호핀
int pirState = LOW; // 센서 초기상태는 움직임이 없음을 가정
int val = 0; // 센서 신호의 판별을 위한 변수
int flame;void setup() {
pinMode(ledPin1, OUTPUT); // 1번 LED를 출력으로 설정
pinMode(ledPin2, OUTPUT); // 2번 LED를 출력으로 설정
pinMode(Beep, INPUT); // 센서 Input 설
pinMode(Beep, OUTPUT); //피에조부저 출력설정
pinMode(flame,INPUT);lcd.init();
lcd.backlight(); // turn on backlight
Serial.begin(9600);
}void loop() {
{
val = digitalRead(Beep); // 센서 신호값을 읽어와서 val에 저장
if (val == HIGH) { // 센서 신호값이 HIGH면(인체 감지가 되면)
digitalWrite(ledPin1, HIGH); // 1번 LED ON
digitalWrite(ledPin2, LOW); // 2번 LED OFF
if (pirState == LOW){
Serial.println("Welcome!"); // 시리얼 모니터 출력
pirState = HIGH;
}
}
else { // 센서 신호값이 LOW면(인체감지가 없으면)
digitalWrite(ledPin1, LOW); // 1번 LED OFF
digitalWrite(ledPin2, HIGH); // 2번 LED ON
if (pirState == HIGH){
Serial.println("Good Bye~"); // 시리얼 모니터 출력
pirState = LOW;
}
}
}
val = analogRead(flame); //포토트랜지스터에서 값을 읽어옴
Serial.println(val); //포토트랜지스터 입력값 시리얼모니터로 출력
if(val >= 300) //포토트랜지스터 입력값이 1000이상이면 BEEP실행, 환경에 따라 적절한 값으로 조절필요
{
digitalWrite(Beep,HIGH); //피에조 부저 BEEP
}else{
digitalWrite(Beep,LOW); //피에조 부저 OFF
}
lcd.clear();
// start working...
Serial.println("=================================");
Serial.println("Sample DHT11...");
// read with raw sample data.
byte temperature = 0;
byte humidity = 0;
byte data[40] = {0};
Serial.print("Sample RAW Bits: ");
for (int i = 0; i < 40; i++) {
Serial.print((int)data[i]);
if (i > 0 && ((i + 1) % 4) == 0) {
Serial.print(' ');
}
}
Serial.println("");
Serial.print("Sample OK: ");
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" %");
lcd.print((int)temperature);lcd.print(" *C, ");
lcd.print((int)humidity);lcd.print(" %");
// DHT11 sampling rate is 1HZ.
delay(1000);
}
이런식으로 수정 을해서
lcd 온습도 출력 값나오게 지정해두고
화제감지센서 부저 값 300이상올라가면 소리나게
lcd 인체감지센서
해둿는대 지금 수정하고 나서 되는게 아무것도 없네요 ㅠㅠ; 고수님들 ...
댓글 3
조회수 13,175master님의 댓글
master 작성일
수정하기 전의 온습도 LCD 표시가 잘 되던 소스는 없나요?
기억을 되살려서 추가한 부분 제거해서 원래 소스 만들어보세요
qlsdl님의 댓글
qlsdl 작성일
#include <Wire.h>
#include <SimpleDHT.h>
#include <LiquidCrystal_I2C.h>
int flame = A0; //포토트랜지스터가 연결된 아날로그핀
int Beep = 8; //피에조부저가 연결된 디지털핀
int val = 0; //센서출력값 저장 변수
int pinDHT11 = 2;
SimpleDHT11 dht11;
LiquidCrystal_I2C lcd(0x3F,16,2);
void setup() {
pinMode(Beep, OUTPUT); //피에조부저 출력설정
pinMode(flame,INPUT);
lcd.init();
lcd.backlight(); // turn on backlight
Serial.begin(9600);
}
void loop() {
val = analogRead(flame); //포토트랜지스터에서 값을 읽어옴
Serial.println(val); //포토트랜지스터 입력값 시리얼모니터로 출력
if(val >= 300) //포토트랜지스터 입력값이 1000이상이면 BEEP실행, 환경에 따라 적절한 값으로 조절필요
{
digitalWrite(Beep,HIGH); //피에조 부저 BEEP
}else{
digitalWrite(Beep,LOW); //피에조 부저 OFF
}
lcd.clear();
// start working...
Serial.println("=================================");
Serial.println("Sample DHT11...");
// read with raw sample data.
byte temperature = 0;
byte humidity = 0;
byte data[40] = {0};
if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
return;
}
Serial.print("Sample RAW Bits: ");
for (int i = 0; i < 40; i++) {
Serial.print((int)data[i]);
if (i > 0 && ((i + 1) % 4) == 0) {
Serial.print(' ');
}
}
Serial.println("");
Serial.print("Sample OK: ");
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" %");
lcd.print((int)temperature);lcd.print(" *C, ");
lcd.print((int)humidity);lcd.print(" %");
// DHT11 sampling rate is 1HZ.
delay(1000);
}
이게 인체감지 센서 부착하기전 소스인대 ...
인체감지 센서 부착되있던거 제가하고 해보고픈대 ... 걱정되서요 ㅠㅠㅠ.
master님의 댓글
master 작성일
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1979
이 코드로 돌려보세요