BASIC4MCU | 질문게시판 | 아두이노 환풍기 지시하신대로 했지만 오류
페이지 정보
작성자 굳은살 작성일2018-12-04 17:40 조회20,255회 댓글11건본문
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6217위의 글을 작성한 사람입니다.
코드 수정해서 해봤습니다.
그런데 첨부파일의 사진과 같은 오류가 발생합니다.
댓글 11
조회수 20,255master님의 댓글
master 작성일
오류가 아니고 정상동작 하고 있습니다.
깨진 문자는 지난 질문글에서 수신한 문자를 출력하기 때문에 생긴 것이니 원래 코드로 출력하면 없어집니다.
//
test1이 출력되지 않은 이유는 조건을 만족하지 못하기 때문입니다.
굳은살님의 댓글
굳은살
조건은 만족했다고 확실히 말씀드릴수있습니다.
제가 가스센서에 직접 가스를 가져다가 직접분출해서 환풍기의 BLDC모터까지 구동하는거 완료했지만
그 전에 미리 스텝모터가 돌아야하는데 그냥 그 과정이 없이
바로 환풍기 BLDC모터가 돌아버립니다.
master님의 댓글
master
첨부 사진을 보면
MQ5=1
MQ7=1
PM25=21(or 22)로 80 미만이므로
조건을 만족하지 않고 있습니다.
굳은살님의 댓글
굳은살
저건 제가 사진을 찍으려고 가스공급을 중단한 상태입니다.
그리고 전원이 들어가고 가스를 공급하면 스텝모터가 억지로 축을 돌리려해도 딱 버팁니다.
굳은살님의 댓글
굳은살
그리고 예~~전 코드에서는 딱 스텝모터가 180도 회전하고
그 동작이 완료후 환풍기(BLDC)가 돌았는데 스텝모터와 스텝모터 드라이버를
교체후 코드로는 그냥 바로 먼저 BLDC모터부터 돌아버립니다.
master님의 댓글
master
딜레이를 주면 되죠
굳은살님의 댓글
굳은살 작성일
아래와 같은 방식으로 말인지요?
if(!digitalRead(MQ5)||!digitalRead(MQ7)||(PM25>80))
{
if( angle == 0 )
{
angle = 180;
stepper.moveTo(400);
stepper.run();
delay(10);
}
analogWrite(BPP,140);
tone(BUZ,500,1000);
}
master님의 댓글
master 작성일
stepper.moveTo(400); stepper.run(); delay(10);
딜레이 위치는 맞습니다만
0.01초로 스텝모터 회전이 완료 될까요?
굳은살님의 댓글
굳은살
그런데 부품 교체전 사용했던 예전코드인 아래코드는 delay(10); 인데도 잘 작동하였습니다.
if( !digitalRead(MQ5LPG) || !digitalRead(MQ7CO) || (PM25>=35.1) ){ // LPG or CO감지 or 미세먼지 농도가 높으면
while(180>angle){ angle++; myStepper.step(1); delay(10); } // 환풍기 외부 방향으로 열고
analogWrite(fan,150); digitalWrite(led,HIGH); tone(buzzer,500,100); // 고속회전, 내부공기를 외부로 방출
}
굳은살님의 댓글
굳은살
제 생각입니다만
if( angle == 0 ) 여기에서 angle == 0 이 부분이 잘 안읽히고 있을 가능성이 있지 않을까요?
왜냐하면 180>angle 와 angle == 0 는 다르고
애초에 180>angle과 같이 범위를 만족시키는 조건과 다르게 angle == 0 인 지점은 특정되어있기때문에 조건을 불만족시킬 가능성은 없을까요?
master님의 댓글
master
제가 도와드릴 선을 넘은 것 같습니다.
잘 체크해서 원인을 찾아보세요