안녕하세요 에듀이노입니다.
두개의 소스코드에서 사용되는 변수를 사용핀이 겹치지 않게 함께 사용해주시기 바라며, setup();부분에 두 센서의 코드를
함께 사용한 다음, loop()문에 출력값을 함께 출력해 주시기 바랍니다. 이 후 출려값에 따라 외부 센서를 제어할 땐, 조건문 등을
이용해 코드를 작성해 주시기 바랍니다.
감사합니다.
[ Original Message ]
온도센서와 수위센서를 액체에 같이 넣고 액체의 온도 와 수위를 동시에 측정하려고 합니다.
이럴때 두 코드를 합치고 싶습니다.
수위센서 코드:
int water_pin = A0; //수분수위센서 A0에 연결
int LED1 = 2; // LED를 각각 디지털핀 2,3,4에 연결
int LED2 = 3;
int LED3 = 4;
void setup() {
Serial.begin(9600); // Serial monitor 구동 전원입력
pinMode( A0, INPUT); // A0핀을 입력으로 설정
pinMode( 2, OUTPUT); // 디지털핀 2,3,4를 출력으로 설정
pinMode( 3, OUTPUT);
pinMode( 4, OUTPUT);
}
void loop(){
Serial.println(analogRead(A0)); // Serial monitor로 A0값을 보여줌
delay(100); // 입력값을 보여주는데 0.1초 설정
if(analogRead(A0) < 400){ // A0가 400이하면 모든 LED OFF
digitalWrite( 2, LOW);
digitalWrite( 3, LOW);
digitalWrite( 4, LOW);
delay(100);
}
else if( 400 < analogRead(A0) && analogRead(A0) < 500 ){
digitalWrite( 2, HIGH);
digitalWrite( 3, LOW);
digitalWrite( 4, LOW); // 400<A0<500이면 빨간 LED ON
delay(100);
}
else if( 500 < analogRead(A0) && analogRead(A0) < 600){
digitalWrite( 2, HIGH);
digitalWrite( 3, HIGH);
digitalWrite( 4, LOW); // 500<A0<600이면 빨,노 LED ON
delay(100);
}
else {
digitalWrite( 2, HIGH);
digitalWrite( 3, HIGH);
digitalWrite( 4, HIGH);
delay(100); // 이외 모든 경우 빨,노,파 LED ON
}
}
---------------------------------------------------------------------------------
온도센서 코드:
#include <OneWire.h>
int DS18S20_Pin = 2; //온도센서를 2번 핀으로 연결
int red = 11; //빨간색led를 11번 핀으로 연결
int blue = 10; //파란색led를 10번 핀으로 연결
OneWire ds(DS18S20_Pin); //2번 핀과 연결되 OneWire 객체 생성
void setup(){
Serial.begin(9600); // 시리얼 통신, 속도는 9600
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
}
void loop(){
float temperature = getTemp(); //온도 측정 후 변수에 저장
Serial.println(temperature);
if(temperature < 90){ //온도가 90도 이하일 때, 파란색 LED 점등
digitalWrite(red, LOW);
digitalWrite(blue, HIGH);
delay(100);
}
else{ //온도가 90도 이상일 때, 빨간색 LED 점등
digitalWrite(red, HIGH);
digitalWrite(blue, LOW);
delay(100);
}
}
float getTemp(){ //온도 측정 후 반환하는 함수
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
ds.reset_search();
return -1000;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++) {
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB);
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
---------------------------------------------------------------
이 두코드를 합치고싶은데 어떻게 해야하나요??
댓글목록
등록된 댓글이 없습니다.