아두이노와 앱인벤터간의 블루통신으로 온도,습도,메탄,암모니아 센서를 이용해 4개의 센서값을 받고 싶습니다. 현재 센서값까지는 다받아지지만 각각 따로 받아 일정이상 값이 높아지면 경보음을 주는 동작을 하고 싶습니다. 여기서 센서값들을 각각 받는 방법을 모르겠어서 글 올립니다. 도움 부탁 드리겠습니다. | |
이전글 | Weather Lamp 만들기 질문있습니다. | 2016-11-23 |
다음글 | 적외선 레이더 급합니다 ㅜㅜ | 2016-11-24 |
#include <SoftwareSerial.h>
#include <MsTimer2.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define RX_PIN 5
#define TX_PIN 8
#define LIGHT_PIN A0
#define IR_PIN 6
#define TEMP_PIN 7
#define LED1_PIN 9
#define LED2_PIN 4
SoftwareSerial BT(RX_PIN, TX_PIN);
OneWire oneWire(TEMP_PIN);
DallasTemperature temp(&oneWire);
int value_ir;
int value_light;
int value_temp;
void setup() {
BT.begin(9600);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(IR_PIN, INPUT);
pinMode(TEMP_PIN, INPUT);
temp.begin();
MsTimer2::set(1000, send_value);
MsTimer2::start();
}
void loop() {
if(BT.available() > 0) {
char input = BT.read();
if(input == 'A') TV_ON();
else if(input == 'B') TV_OFF();
else if(input == 'C') LED_ON();
else if(input == 'D') LED_OFF();
}
}
void send_value() {
value_ir = digitalRead(IR_PIN);
value_light = analogRead(LIGHT_PIN);
temp.requestTemperatures();
value_temp = temp.getTempCByIndex(0);
BT.print(value_ir);
BT.print("$");
BT.print(value_light);
BT.print("$");
BT.print(value_temp);
}
void TV_ON() {
digitalWrite(LED1_PIN, HIGH);
}
void TV_OFF() {
digitalWrite(LED1_PIN, LOW);
}
void LED_ON() {
digitalWrite(LED2_PIN, HIGH);
}
void LED_OFF() {
digitalWrite(LED2_PIN, LOW);
}