BASIC4MCU | 질문게시판 | 아두이노 코딩 질문이요ㅠㅠ
페이지 정보
작성자 rkdeh 작성일2019-12-10 04:02 조회3,242회 댓글0건본문
#include <DHT.h>
#include <Servo.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define RP 13
#define BT_RXD 8
#define BT_TXD 9
#define DHTPIN 6 // 온습도 센서가 4번에 연결
#define DHTTYPE DHT22 // DHT11 온습도 센서 사용
SoftwareSerial BTSerial(8,9);
SoftwareSerial bluetooth(BT_RXD, BT_TXD);
DHT dht(DHTPIN, DHTTYPE); // DHT 설정 (4,DHT11)
Servo motor;
LiquidCrystal_I2C lcd(0x27,16,2);
const int RedLed = 5;
const int GreenLed = 4;
const int BlueLed = 3;
int inputPin=7;
int melody={622};
int pirState=LOW;
int val=0;
int buzzer = 3;
int sec = 0;
int min = 0;
int hour =0;
int counter=0;void ledOutput(int Red, int Green, int Blue){
analogWrite(RedLed,Red);
analogWrite(GreenLed,Green);
analogWrite(BlueLed,Blue);}
void setup(){
pinMode(inputPin,INPUT);
pinMode(buzzer,OUTPUT);
pinMode(RP,OUTPUT);
motor.attach(10); // 핀10 에 연결합니다.
motor.attach(6);
Serial.begin(9600);
Serial.println("Enter AT commands:");
bluetooth.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.setCursor(14,0);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("TIME: ");
}
//void loop(){
if (bluetooth.available()) {
Serial.write(bluetooth.read());
}
if (Serial.available()) {
bluetooth.write(Serial.read());
}
int adcValue;
long t = dht.readTemperature(); // 온도값을 t에 저장
int h = dht.readHumidity();
adcValue = analogRead(DHT22);
t=(adcValue*250L)/2028;
lcd.setCursor(9,0);
lcd.print(" ");
lcd.setCursor(9,0);
lcd.print(t);
val=digitalRead(inputPin);
//
if(val==HIGH) {
motor.write(60);
tone(buzzer,melody,200);
digitalWrite(RP,HIGH);
ledOutput(255,0,0);
if(sec ==60){
sec=0; sec++; min++;}if(min ==60){
min = 0; hour++;}
lcd.setCursor(5,1);
lcd.print(hour);
lcd.print(" H ");
lcd.print(min);
lcd.print(" M ");
lcd.print(sec); // 이렇게!
lcd.print(" s ");
Serial.print("Humidity: "); // 문자열 출력
Serial.print(h); // 습도값 출력
Serial.print("% ");
Serial.print("Temperature: ");
Serial.print(t); // 온도값 출력
Serial.println("C");
Serial.println("gd");
bluetooth.print("온도: "); // 앱인벤터에서 블루투스를 통해 값을 출력하기 위한 코드
bluetooth.print(t);
bluetooth.print("습도: ");
bluetooth.print(h);
pirState=HIGH;
}
if(val==LOW){
sec=0; min=0; hour=0;
digitalWrite(RP,LOW);
noTone(buzzer);
ledOutput(0,0,0);
Serial.println("Good Bye~");
motor.write(0);
lcd.setCursor(5,1);
lcd.print(hour);
lcd.print(" H ");
lcd.print(min);
lcd.print(" M ");
lcd.print(sec); // 이렇게!
lcd.print(" s ");
pirState=LOW;}
}
----------------------------------------------------------
일정온도가 넘어가고 움직임이 감지되면 스톱워치가 켜지고
일정온도가 넘어갔지만 움직임이 없어지면 스톱워치가 꺼지는 장치를 만들려고 하는데
시간이 초기화는 되지만 움직임이 다시 감지되면 0에서 다시 시작하는게 아니고 멈췄던 시간에서 다시 움직임이 감지됐을때 까지의
시간이 추가되서 다시 나옵니다....... 또 온도도 너무 크게 감지되고요 어뜨케해야되나요ㅠㅠㅜㅠㅜ
댓글 0
조회수 3,242등록된 댓글이 없습니다.