에듀이노-아두이노 전문 교육쇼핑몰 에듀이노-코딩 교구는, 에듀이노!
뒤로가기

묻고답하기

제목

아두이노 동작이 안 돼요

작성자 조승철(ip:)

작성일 2021-10-19

조회 471

평점 0점  

추천 추천하기

내용

따로 실행했을 때는 동작하는데 묶으니까 동작이 안 되네요 어떻게 해야하나요?


int dust_sensor = A0;   // 미세먼지 핀 번호

int rgb_red = 5;    // rgb 핀 빨간색 핀

int rgb_green = 6;  // rgb핀 녹색 핀

int rgb_blue = 7;  // rgb핀 파란색 핀

 

float dust_value = 0;  // 센서에서 입력 받은 미세먼지 값

float dustDensityug=0;  // ug/m^3 값을 계산

 

int sensor_led = 12;      // 미세먼지 센서 안에 있는 적외선 led 핀 번호

int sampling = 280;    // 적외선 led를 키고, 센서 값을 읽어 들여 미세먼지를 측정하는 샘플링 시간

int waiting = 40;    

float stop_time = 9680;   // 센서를 구동하지 않는 시간


int Raindrops_pin = A1;  // 빗방울센서 핀을 A1으로 설정

int LED = 8;           // 노란색 LED 핀을 8번핀으로 설정

const int Active_Buzzer = 4;

int led = 13;       // LED 핀 번호 13

int flame = 9;      // 불꽃감지 센서 핀 번호 9

int state = 0;      // 불꽃감지 센서의 상태 값 저장 변수


void setup(){

  pinMode(sensor_led,OUTPUT); // 미세먼지 적외선 led를 출력으로 설정

  pinMode(4, OUTPUT);

 

  pinMode(rgb_red, OUTPUT);     // 3색 LED 모듈 출력으로 설정, 붉은색

  pinMode(rgb_green, OUTPUT);   // 녹색

  pinMode(rgb_blue, OUTPUT);    // 파란색

  Serial.begin(9600);   // Serial monitor 전원 인가

  pinMode(A0 , INPUT);   // 빗방울 감지핀을 아날로그 입력으로 설정

  pinMode(LED, OUTPUT);  // 노란색 LED핀을 출력으로 설정

 pinMode (Active_Buzzer, OUTPUT);


digitalWrite(Active_Buzzer, HIGH);


delay(300);


digitalWrite(Active_Buzzer, LOW);

pinMode(led, OUTPUT);    // LED를 출력으로 설정

  pinMode(flame, INPUT);   // 불꽃 감지 센서를 입력으로 설정

  Serial.begin(9600);      // 시리얼 통신, 속도는 9600

}

 

void loop(){

  digitalWrite(sensor_led, LOW);    // LED 켜기

  delayMicroseconds(sampling);   // 샘플링해주는 시간. 


  dust_value = analogRead(dust_sensor); // 센서 값 읽어오기

  

  delayMicroseconds(waiting);  // 너무 많은 데이터 입력을 피해주기 위해 잠시 멈춰주는 시간. 

 

  digitalWrite(sensor_led, HIGH); // LED 끄기

  delayMicroseconds(stop_time);   // LED 끄고 대기  

 

  dustDensityug = (0.17 * (dust_value * (5.0 / 1024)) - 0.1) * 1000;    // 미세먼지 값 계산

  Serial.print("Dust Density [ug/m3]: ");            // 시리얼 모니터에 미세먼지 값 출력

  Serial.print(dustDensityug);

  

  if(dustDensityug <= 30.0){       // 대기 중 미세먼지가 좋음 일 때 초록색 출력

     analogWrite(rgb_red, 0);

     analogWrite(rgb_green, 0);

     analogWrite(rgb_blue, 255);

     Serial.print("   ");

     Serial.println("green");

  }else if(30.0 < dustDensityug && dustDensityug <= 80.0){      // 대기 중 미세먼지가 보통 일 때 녹색 출력

     analogWrite(rgb_red, 0);

     analogWrite(rgb_green, 255);

     analogWrite(rgb_blue, 0);

     Serial.print("   ");

     Serial.println("green");    

  }else if (80.0 < dustDensityug && dustDensityug <= 150.0){    // 대기 중 미세먼지가 나쁨 일 때 노란색 출력

     analogWrite(rgb_red, 255);

     analogWrite(rgb_green, 155);

     analogWrite(rgb_blue, 0);

     Serial.print("   ");

     Serial.println("yellow");        

  }else{                                                     // 대기 중 미세먼지가 매우 나쁨 일 때 빨간색 출력

     analogWrite(rgb_red, 255);

     analogWrite(rgb_green, 0);

     analogWrite(rgb_blue, 0);    

     Serial.print("   ");

     Serial.println("red");

  }

 

  delay(2000);

 Serial.println(analogRead(A1));  // 센서값을 시리얼모니터로 전송

  delay(100);                       // 센서값 간격 0.1초로 설정

  if(analogRead(A0) < 900){         // 빗방울 감지핀의 수위가 500미만이면

    digitalWrite( 8, HIGH);         

    delay(100);

    digitalWrite( 8, LOW);

    delay(100);                     // 0.1초 간격으로 파랑LED가 깜빡깜빡

  }                                  

 else {                              // 빗방울 감지핀의 출력값이 500이상이면

    digitalWrite( 8, LOW);            // 파랑LED는 OFF유지

    delay(100);    

    state = digitalRead(flame);   // 불꽃 감지 센서값 입력받음

 

  digitalWrite(led, LOW);       // 초기 LED값을 0FF로 설정해주기

 

  if (state == 1){              // 불꽃감지 센서의 값이 1일때(불꽃이 감지 되었을 때)

    Serial.println("ON");       // 시리얼 통신에 센서값 출력해 주기.

    digitalWrite(led, LOW);    // LED OFF

    digitalWrite(Active_Buzzer, LOW);    // 피에조부저OFF

    delay(100); 

                   

  }

  else {                        // 불꽃감지 센서의 값이 0일때 (불꽃이 감지 되지 않았을 때)    

    Serial.println("OFF");      // 시리얼 통신에 센서값 출력해 주기.

    digitalWrite(Active_Buzzer, HIGH); //피에조부저ON

    digitalWrite(led, HIGH);     // 

  }

  delay(100);

 }                

  

}

 


첨부파일

비밀번호
수정

비밀번호 입력후 수정 혹은 삭제해주세요.

댓글목록

  • 작성자 아두

    작성일 2021-10-19

    평점 0점  

    스팸글 여러 코드를 합치신 건가요?

    컴파일에서는 에러가 없는데.. 직접 회로 구성해볼 수 있는 상황이 아니라면 코드만 보고는 오류잡기가 쉽지 않을 것 같네요

    일단 회로 구성이 올바른지 확인해봐야할 것 같구요

    여러 코드를 합치게 되면 컴파일은 되더라도 꼬이는 부분이 발생하여 이상동작처럼 보이게 되는 경우가 있는데

    각 부분에 Serial.print 문을 추가해서 상태 변수가 변하는 시점마다 시리얼 모니터에서 제대로 변환되고 그 변수 따라 정확히 동작이 넘어가는지 확인해보세요

    구간별로 천천히 디버깅 하면 오류를 잡을 수 있을 거에요
댓글 수정

이름

비밀번호

내용

/ byte

수정 취소

비밀번호 :

확인 취소

댓글 입력

이름

비밀번호

내용

/ byte

평점

왼쪽의 문자를 공백없이 입력하세요.

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

댓글 입력

이름

비밀번호

내용

/ byte

왼쪽의 문자를 공백없이 입력하세요.

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

고객센터

    1670-9626

  • 팩스.063-902-6678
  • 이메일.eduino@robodyne.co.kr
  • Kakao. 에듀이노
  • 운영시간 : AM 10:00 ~ PM 16:30
  • 점심시간 : PM 12:00 - PM 13:00 토/일/공휴일 휴무
  • 고객센터 연결하기
입금계좌
  • 예금주: (주)로보다인시스템
  • 국민. 754801-01-760296
  • 농협. 301-0234-1423-01
  • IBK기업은행. 506-080015-01-016
배송 안내
  • 배송 방법 : 택배
  • 배송 지역 : 전국지역
  • 배송 비용 : 조건부 무료 : 주문 금액 100,000원 미만일 때 배송비 3,000원을 추가합니다.
  • 배송 기간 : 1일 ~ 2일
  • 배송 안내 :
    - 제주도, 산간벽지나 도서지방은 별도의 추가금액을 지불하셔야 하는 경우가 있습니다.
    고객님께서 주문하신 상품은 입금 확인후 배송해 드립니다. 다만, 상품종류에 따라서 상품의 배송이 다소 지연될 수 있습니다.
교환/반품 안내
교환 및 반품이 가능한 경우
- 상품을 공급 받으신 날로부터 7일이내 단, 가전제품의
  경우 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우에는 교환/반품이 불가능합니다.
- 공급받으신 상품 및 용역의 내용이 표시.광고 내용과
  다르거나 다르게 이행된 경우에는 공급받은 날로부터 3월이내, 그사실을 알게 된 날로부터 30일이내

교환 및 반품이 불가능한 경우
- 고객님의 책임 있는 사유로 상품등이 멸실 또는 훼손된 경우. 단, 상품의 내용을 확인하기 위하여
  포장 등을 훼손한 경우는 제외
- 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우
  (예 : 가전제품, 식품, 음반 등, 단 액정화면이 부착된 노트북, LCD모니터, 디지털 카메라 등의 불량화소에
  따른 반품/교환은 제조사 기준에 따릅니다.)
- 고객님의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 단, 화장품등의 경우 시용제품을
  제공한 경우에 한 합니다.
- 시간의 경과에 의하여 재판매가 곤란할 정도로 상품등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품등의 포장을 훼손한 경우
  (자세한 내용은 고객만족센터 1:1 E-MAIL상담을 이용해 주시기 바랍니다.)

※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
  (색상 교환, 사이즈 교환 등 포함)
«
이전
{$paginationNo}
다음
»
  • {$autoComplete_query_view}
  • {$hotKeyword_rank} {$hotKeyword_query}