BASIC4MCU | 질문게시판 | 답변 : 죄송합니다. 이전질문에 코드추가입니다.
페이지 정보
작성자 master 작성일2019-11-19 19:17 조회2,873회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=10782
본문
//char cmd;long duration,cm;//void loop(){if(bluethooth.availavle()){cmd=(char)bluetooth.read();if(cmd=='1'){ digitalWrite(motor_L,HIGH); digitalWrite(motor_R,HIGH); }}//------------------------------------------int val0=digitalRead(A0); // 라인센서1int val1=digitalRead(A1); // 라인센서2int val2=digitalRead(A2); // 라인센서1int val3=digitalRead(A3); // 라인센서2int val4=digitalRead(A4); // 라인센서1int val5=digitalRead(A5); // 라인센서2motor_L.run(FORWARD); motor_L.setSpeed(235); // 왼쪽 모터의 속도motor_R.run(FORWARD); motor_R.setSpeed(235); // 오른쪽 모터의 속도if (val2==0&&val3==0){ motor_L.run(FORWARD); motor_R.run(FORWARD); } // 직진else if(val3==0&&val2==1){ motor_L.run(FORWARD); motor_R.run(RELEASE); } // 우회전 1은 검은선else if(val3==1&&val2==0){ motor_L.run(RELEASE); motor_R.run(FORWARD); } // 좌회전else if(val3==1&&val2==1){ motor_L.run(RELEASE); motor_R.run(RELEASE); } // 정지}
블루투스로 명령어를 주어서 구동을 하게되면
곧바로 그 아래에 있는 코드에서 센서를 읽어서 모터 구동을 하게 됩니다.
쉬지않고 계속해서 블루투스로 명령을 줄 수도 없는 노릇이죠
자동 수동 개념이 필요합니다.
센서를 읽어서 구동하는 것이 자동이고
블루투스로 명령을 주는 것은 수동입니다.
char auto=1;
초기에 오토모드로 선택해서 센서를 읽어서 모터를 구동하도록 합니다.
//char auto=1;char cmd;long duration,cm;//void loop(){if(bluethooth.availavle()){cmd=(char)bluetooth.read();if(cmd=='1'){ digitalWrite(motor_L,HIGH); digitalWrite(motor_R,HIGH); auto=0; }}//------------------------------------------if(auto){int val0=digitalRead(A0); // 라인센서1int val1=digitalRead(A1); // 라인센서2int val2=digitalRead(A2); // 라인센서1int val3=digitalRead(A3); // 라인센서2int val4=digitalRead(A4); // 라인센서1int val5=digitalRead(A5); // 라인센서2motor_L.run(FORWARD); motor_L.setSpeed(235); // 왼쪽 모터의 속도motor_R.run(FORWARD); motor_R.setSpeed(235); // 오른쪽 모터의 속도if (val2==0&&val3==0){ motor_L.run(FORWARD); motor_R.run(FORWARD); } // 직진else if(val3==0&&val2==1){ motor_L.run(FORWARD); motor_R.run(RELEASE); } // 우회전 1은 검은선else if(val3==1&&val2==0){ motor_L.run(RELEASE); motor_R.run(FORWARD); } // 좌회전else if(val3==1&&val2==1){ motor_L.run(RELEASE); motor_R.run(RELEASE); } // 정지}}
이런식이 되겠죠블루투스 명령으로는 모터 구동외에 오토모드로 변경하는 컴맨드가 추가되어야합니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-11-19 오후 7:17:11// by Ok-Hyun Park//#include <SoftwareSerial.h>#include <AFMotor.h>#define trigPin 10#define echoPin 9AF_DCMotor motor_L(3); // 모터드라이버 L293D 2: M2에 연결,3: M3에 연결AF_DCMotor motor_R(2);int sensor0=A0;int sensor1=A1;int sensor2=A2;int sensor3=A3;int sensor4=A4;int sensor5=A5;int bluetoothTx=13;int bluetoothRx=2;SoftwareSerial bluetooth(bluetoothTx,bluetoothRx);//void setup(){Serial.begin(9600); // PC와의 시리얼 통신속도Serial.println("Eduino Smart Car Start!");bluetooth.begin(9600);pinMode(motor_L(3),OUTPUT);pinMode(motor_R(2),OUTPUT);// turn on motormotor_L.setSpeed(255); // 왼쪽 모터의 속도motor_L.run(RELEASE);motor_R.setSpeed(255); // 오른쪽 모터의 속도motor_R.run(RELEASE);}//char auto=1;char cmd;long duration,cm;//void loop(){if(bluethooth.availavle()){cmd=(char)bluetooth.read();if(cmd=='f'){ auto=0; motor_L.run(FORWARD); motor_R.run(FORWARD); } // 직진if(cmd=='r'){ auto=0; motor_L.run(FORWARD); motor_R.run(RELEASE); } // 우회전if(cmd=='l'){ auto=0; motor_L.run(RELEASE); motor_R.run(FORWARD); } // 좌회전if(cmd=='s'){ auto=0; motor_L.run(RELEASE); motor_R.run(RELEASE); } // 정지if(cmd=='a'){ auto=1; } // 자동}//------------------------------------------if(auto){int val0=digitalRead(A0); // 라인센서1int val1=digitalRead(A1); // 라인센서2int val2=digitalRead(A2); // 라인센서1int val3=digitalRead(A3); // 라인센서2int val4=digitalRead(A4); // 라인센서1int val5=digitalRead(A5); // 라인센서2motor_L.run(FORWARD); motor_L.setSpeed(235); // 왼쪽 모터의 속도motor_R.run(FORWARD); motor_R.setSpeed(235); // 오른쪽 모터의 속도if (val2==0&&val3==0){ motor_L.run(FORWARD); motor_R.run(FORWARD); } // 직진else if(val3==0&&val2==1){ motor_L.run(FORWARD); motor_R.run(RELEASE); } // 우회전else if(val3==1&&val2==0){ motor_L.run(RELEASE); motor_R.run(FORWARD); } // 좌회전else if(val3==1&&val2==1){ motor_L.run(RELEASE); motor_R.run(RELEASE); } // 정지}}
댓글 0
조회수 2,873등록된 댓글이 없습니다.