에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

기술문의 게시판입니다.

게시판 상세
제목 두 코드 합치는 방법이 뭔가요?
작성자 (ip:)
  • 작성일 2020-05-21
  • 추천 추천하기
  • 조회수 38
안녕하세요 에듀이노입니다.
우선 코드를 합칠 때, 어떤 조건값으로 어떤 센서를 동시에 제어할지 정해야 하며, 단순 코드를 합친다는 내용으로는
따로 가이드라인을 제공해드리 못하는점 참고바랍니다. 변수, 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;                                                                   
}




---------------------------------------------------------------


이 두코드를 합치고싶은데 어떻게 해야하나요??

게시글 신고하기

신고사유

신고해주신 내용은 쇼핑몰 운영자의 검토 후 내부 운영 정책에 의해 처리가 진행됩니다.

평점 0점
첨부파일
비밀번호 수정 및 삭제하려면 비밀번호를 입력하세요.
댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

«
»