BASIC4MCU | 질문게시판 | 아두이노 재귀함수 질문 모터 구동 질문
페이지 정보
작성자 멀라영 작성일2022-11-28 22:08 조회1,021회 댓글1건첨부파일
본문
지금 저희가 블루투스 모듈을 통해 두 아두이노를 연결시켰고 정보를 보내는 블루투스에서 값은 잘 받아오는데 값을 받았을 때 코딩한 명령대로 움직이지 않아 애먹고 있습니다...ㅠㅠ recur함수로 들어갔을 때 getval 값에 따라 모터가 움직였으면 좋겠는데 값은 받아오는데 모터가 구동을 안하네요... 무슨 문제지 좀 알 수 있을까요... 그리고 recur함수로 들어왔는데도 IR센서의 상태 변화에 따라 모터가 마음대로 움직이네요... 전혀 관련이 없을텐데... 뭐가 문젠지 좀 알려주시면 감사하겠습니다.
댓글 1
조회수 1,021master님의 댓글
master 작성일
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(2,3);
//
#define firstmotorCW 12
#define firstmotorCCW 13
#define secondmotorCW 4
#define secondmotorCCW 5
#define thirdmotorCW 6
#define thirdmotorCCW 7
#define fourthmotorCW 8
#define fourthmotorCCW 9
#define IRL 10
#define IRR 11
//
char sival,mode=4;
//
void setup() {
pinMode(firstmotorCW,OUTPUT); pinMode(firstmotorCCW,OUTPUT);
pinMode(secondmotorCW,OUTPUT); pinMode(secondmotorCCW,OUTPUT);
pinMode(thirdmotorCW,OUTPUT); pinMode(thirdmotorCCW,OUTPUT);
pinMode(fourthmotorCW,OUTPUT); pinMode(fourthmotorCCW,OUTPUT);
pinMode(IRL,INPUT);
pinMode(IRR,INPUT);
bluetooth.begin(9600);
Serial.begin(9600);
}
//
void loop(){
if(bluetooth.available()){
sival=bluetooth.read();
if((sival>='0')&&(sival<='4')){
mode=sival-'0';
Serial.println(mode);
if (mode==0){ digitalWrite(firstmotorCW,0); digitalWrite(secondmotorCW,0); digitalWrite(thirdmotorCW,0); digitalWrite(fourthmotorCW,0); } // 다른 손짓일때=멈춤
else if(mode==1){ digitalWrite(firstmotorCW,1); digitalWrite(secondmotorCW,1); digitalWrite(thirdmotorCW,1); digitalWrite(fourthmotorCW,1); } // 엄지,검지 구부림=직진
else if(mode==2){ digitalWrite(firstmotorCW,1); digitalWrite(secondmotorCW,0); digitalWrite(thirdmotorCW,1); digitalWrite(fourthmotorCW,0); } // value3>550 고치고 엄지,검지,중지 구부림=좌회전
else if(mode==3){ digitalWrite(firstmotorCW,0); digitalWrite(secondmotorCW,1); digitalWrite(thirdmotorCW,0); digitalWrite(fourthmotorCW,1); } // value 2,3 <550,4,5 >550 고치고 약지,새끼 구부림=우회전
else if(mode==4){ } // 다 구부림=라인트레이서로 복귀
}
}
//-----------------------------------
if(mode==4){
if (digitalRead(IRL)==0 && digitalRead(IRR)==0){ digitalWrite(firstmotorCW,1); digitalWrite(secondmotorCW,1); digitalWrite(thirdmotorCW,1); digitalWrite(fourthmotorCW,1); }
else if(digitalRead(IRL)==0 && digitalRead(IRR)==1){ digitalWrite(firstmotorCW,0); digitalWrite(secondmotorCW,1); digitalWrite(thirdmotorCW,0); digitalWrite(fourthmotorCW,1); }
else if(digitalRead(IRL)==1 && digitalRead(IRR)==0){ digitalWrite(firstmotorCW,1); digitalWrite(secondmotorCW,0); digitalWrite(thirdmotorCW,1); digitalWrite(fourthmotorCW,0); }
else if(digitalRead(IRL)==1 && digitalRead(IRR)==1){ digitalWrite(firstmotorCW,0); digitalWrite(secondmotorCW,0); digitalWrite(thirdmotorCW,0); digitalWrite(fourthmotorCW,0); }
}
}