'공부/아두이노'에 해당되는 글 4건

반응형
void setup() {
  // 센서값을 측정하기위해 시리얼통신을 준비합니다.
  Serial.begin(9600); 
}

void loop() {
  //아날로그 0번 핀에 압력센서를 연결합니다.
  int sensorval = analogRead(A0);

  

  
   
  Serial .println("Sensorvalue : " +String(sensorval));
  
  //100ms동안 대기합니다. 
  delay(100);
}

 아날로그 핀을 사용하였다.

728x90
반응형

'공부 > 아두이노' 카테고리의 다른 글

아두이노 온습도 센서  (0) 2020.07.18
아두이노 미니 스마트홈  (0) 2020.07.17
아두이노 센서 여러개 사용시 에러  (0) 2020.07.17
블로그 이미지

아상관없어

,
반응형
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
}
void loop() {
  delay(2000);
  int h = dht.readHumidity();
  int t = dht.readTemperature();
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" C");
}

datapin은 2번핀이다.

728x90
반응형

'공부 > 아두이노' 카테고리의 다른 글

아두이노 압력센서  (0) 2020.07.18
아두이노 미니 스마트홈  (0) 2020.07.17
아두이노 센서 여러개 사용시 에러  (0) 2020.07.17
블로그 이미지

아상관없어

,
반응형

 

#include <Servo.h>
#include "DHT.h" 
#include <SoftwareSerial.h>

Servo myservo;
Servo Tapservo;
int force_sensor1 = A0;
int force_sensor2 = A1;
int water = A3;

//블루투스 모듈
#define blueTX 5  // BT_TXD를 5로 설정합니다.
#define blueRX 13  // BT_RXD를 13으로 설정합니다.

SoftwareSerial mySerial(blueRX, blueTX);
//5, 13번 data pin사용

int ledPin_bath= 2;

int dhtPin = 3;

int servoPin = 4;

int servoTap = 6;

int ledPin_room = 7;

int Relaypin = 9;

int count = 0;
int alarm = -1;
int ButtonSwitch =0;

//초음파 센서
#define echoPin 12                    // echoPin을 12로 설정합니다.
#define trigPin 11                   // trigPin을 13으로 설정합니다.
//12~13 data pin사용

long duration, distance;

DHT dht(dhtPin,DHT11);

int old_force1=0;
int val = 0;

int angle = 0;

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

  mySerial.begin(9600);

  myservo.attach(servoPin);
  Tapservo.attach(servoTap);

  pinMode(Relaypin, OUTPUT);
  
  pinMode(ledPin_bath, OUTPUT);
  pinMode(ledPin_room, OUTPUT);
  
  pinMode(force_sensor1, INPUT);
  pinMode(force_sensor2, INPUT);
  
  pinMode(trigPin, OUTPUT);   // trigPin 핀을 출력핀으로 설정합니다.
  pinMode(echoPin, INPUT);    // echoPin 핀을 입력핀으로 설정합니다.
}

void loop() {

  // put your main code here, to run repeatedly:
  int level = analogRead(water);  // 수분센서의 신호를 측정합니다.


  int force_val1 = analogRead(force_sensor1); 
  int force_val2 = analogRead(force_sensor2);

  
 int angle1 = 0;

//블루투스 모듈 (begin)
  if (mySerial.available()) {
    Serial.write(mySerial.read());  //블루투스측 내용을 시리얼모니터에 출력
    alarm = 1;
    ButtonSwitch++;
    if(ButtonSwitch>1){
      ButtonSwitch=0;
    }
    else if(ButtonSwitch==0){
      alarm=-1;
    }
    if(alarm==1){
      Serial.println("All Sensors ON");
      digitalWrite(ledPin_room, HIGH);
      digitalWrite(ledPin_bath, HIGH);
      digitalWrite(Relaypin, HIGH);
      for(angle1 = 180; angle1 > 0; angle1--) 
      { 
        Tapservo.write(angle1); 
        delay(5); 
      }
    }
    else{
    Serial.println("All Sensors OFF");
    }
  }
  if(Serial.available()){
    mySerial.write(Serial.read());
  }
//블루투스 모듈 (end)




//릴레이1채널 + 진동
/*
  if(val == 1){
    digitalWrite(Relaypin, HIGH);
  }
  else{
    digitalWrite(Relaypin, LOW)
  };*/
//
 
//물 센서
  Serial.println(String("water level :")+level);
//  delay(100);
  if(level >500 && count == 0){
    for(angle1 = 0; angle1 < 180; angle1++) 
    { 
      Tapservo.write(angle1); 
      delay(5); 
      count++;
    }
    angle1 = 0; 
  }

  if(level < 500){
    count = 0;
  }

//압력
  Serial.println("first : "+String(force_val1));
//  delay(100);
  Serial.println("second : "+String(force_val2));
//  delay(100);


//초음파 센서 (begin)
  digitalWrite(trigPin, LOW);                 // trigPin에 LOW를 출력하고
  delayMicroseconds(2);                    // 2 마이크로초가 지나면
  digitalWrite(trigPin, HIGH);                // trigPin에 HIGH를 출력합니다.
  delayMicroseconds(10);                  // trigPin을 10마이크로초 동안 기다렸다가
  digitalWrite(trigPin, LOW);                // trigPin에 LOW를 출력합니다.
  duration = pulseIn(echoPin, HIGH);   // echoPin핀에서 펄스값을 받아옵니다.

  distance = duration * 17 / 1000;          //  duration을 연산하여 센싱한 거리값을 distance에 저장합니다.

  if (distance >= 200 || distance <= 0)       // 거리가 200cm가 넘거나 0보다 작으면
  {
    Serial.println("거리를 측정할 수 없음");   // 에러를 출력합니다.
  }
  else if(distance >= 0 && distance <=7){
    digitalWrite(ledPin_bath, LOW);
    digitalWrite(ledPin_room, LOW);
    Serial.print(distance);
    Serial.println(" cm");
    Serial.println("Passed");    
  }
    else                                               // 거리가 200cm가 넘지 않거나 0보다 작지 않으면
  {
    Serial.print(distance);                        // distance를 시리얼 모니터에 출력합니다.
    Serial.println(" cm");                         // cm를 출력하고 줄을 넘깁니다.
                                                     // distance가 10이면 10 cm로 출력됩니다.
  }
//  delay(100);                                         // 0.5초동안 기다립니다.
//초음파센서 (end)



//압력 값 조건 되면 
  if(force_val1 < 50 && force_val2 != 0 && old_force1 > force_val1+100){
    digitalWrite(Relaypin, LOW);
  }

  old_force1 = force_val1;

 //온습도 측정 데이터 보여줌
  int humidity = dht.readHumidity();
  int temperature = dht.readTemperature();
  
  Serial.print("Humidity: ");  // 문자열 Humidity: 를 출력한다.
  Serial.print(humidity);  // 변수 h(습도)를 출력한다.
  Serial.print("%\t");  // %를 출력한다
  Serial.print("Temperature: ");  // 이하생략
  Serial.print(temperature);
  Serial.println(" C");


  
//습도 높으면 환기 모터 돌아감
  if(humidity  > 75){
    for(angle = 0; angle < 180; angle++) 
    { 
      myservo.write(angle); 
      delay(5); 
    } 
    // now scan back from 180 to 0 degrees
    for(angle = 180; angle > 0; angle--) 
    { 
      myservo.write(angle); 
      delay(5); 
    }
  }

  delay(450);
   
}

1. 사용자가 어플리케이션에서 알람 시간을 설정하면 그 시간에 알람이 울림과 동시에 온수 보일러가 가동된다.

 

2. 침대의 압력센서가 사용자가 침대에 누워있는지를 감지하고 압력이 감지되지 않을 때까지 알람이 울리도록 설계하여 회사나 수업에 지각하는 일을 방지해준다.

 

3. 이런 과정동안 욕조에는 자동으로 데워진 물이 채워지고 일정한 수위가 넘어가면 수도꼭지가 잠겨 더 이상 욕조의 물이 넘치는 일을 방지한다.

 

4. 사용자가 씻는 과정을 마친 후에는 자동으로 화장실의 습도를 측정하여 일정 수준을 넘기면 환풍기가 작동하여 화장실의 습도를 조절해준다.

 

5. 출근 준비가 끝난 사용자는 어플리케이션을 실행하여 메인 화면을 통해 회사 지역의 시간별 날씨를 확인하고 대중교통의 다음 도착시간, 그날 아침의 뉴스 헤드라인을 한번에 확인할 수 있다.

 

6. 또한 오늘 챙겨야 할 물품들을 전날에 미리 어플리케이션에 등록하는 과정을 통해 챙겨야 할 물품들을 다시한번 확인하여 준비물을 까먹고 그냥 출근하는 경우를 예방한다.

 

7. 사용자가 집을 나서기 전, 현관에 위치한 초음파 센서를 통해 사용자가 집을 나가는 것을 확인하면 집 안의 환풍기를 제외한 모든 센서와 조명등이 자동으로 꺼진다.

 

 

728x90
반응형

'공부 > 아두이노' 카테고리의 다른 글

아두이노 압력센서  (0) 2020.07.18
아두이노 온습도 센서  (0) 2020.07.18
아두이노 센서 여러개 사용시 에러  (0) 2020.07.17
블로그 이미지

아상관없어

,
반응형

핀 위치를 바꿔서 꼽아보고 안되면 아두이노 메가 등을 이용하자... 블루투스나 ESP8266같은 와이파이 모듈 사용시 핀 위치 때문에 에러가 많이 난다.

 

(

각각의 센서는 잘되지만 잘 되던 센서들을 한번에 연결하면 특히 오류가 잦다.

그중 블루투스나 와이파이모듈의 RX, TX핀을 어디에 꼽는지에따라 다른 센서가 작동되기도 안되기도 한다 따라서 RX, TX핀 위치를 바꾸어가면서 다른센서가 동작하는지 확인하는 것이 정신건강에 좋다...

 

그리고 가끔 전선의 문제도 잇으니 바꿔서 해보는 것을 추천한다...

 

내가 산 아두이노가 지랄맞은것인진 모르겟으나 여러센서들이 한꺼번에 잘 작동되는것이 자고일어나면 안되는 경우도 많았다....ㅂㄷ..

 

다른 이유론 코딩시 데이터핀 위치를 잘못 지정해주거나 코드상에 오류가 있어 작동을 안하는경우도 있으니 코드도 다시 확인하자.....

(컴퓨터는 거짓말을 하지 않는다... 모두 휴먼탓일뿐이다...)

 

+ 들리는 썰에 의하면 정품 아두이노 UNO보다 짭 UNO보드가 에러를 안일으킨다는 썰이 있다...

)

728x90
반응형

'공부 > 아두이노' 카테고리의 다른 글

아두이노 압력센서  (0) 2020.07.18
아두이노 온습도 센서  (0) 2020.07.18
아두이노 미니 스마트홈  (0) 2020.07.17
블로그 이미지

아상관없어

,