BASIC4MCU | 질문게시판 | 답변 : master님 스테핑 모터 3개 제어 관련 문의드립니다.
페이지 정보
작성자 master 작성일2019-01-22 14:09 조회7,467회 댓글4건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7504
작성일
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-01-22 오후 2:14:06// by Ok-Hyun Park//#include <SoftwareSerial.h>int a=A0,b=A1;SoftwareSerial btSerial(a,b); //rx,tx// Blue A-28BYJ48 pin 1// Pink B-28BYJ48 pin 2// Yellow A’-28BYJ48 pin 3// Orange B’-28BYJ48 pin 4// Red-28BYJ48 pin 5(VCC)//int M1A=10,M1B=11,M1C=12,M1D=13;int M2A= 6,M2B= 7,M2C= 8,M2D= 9;int M3A= 2,M3B= 3,M3C= 4,M3D= 5;//int s=2; // 최소 2ms //(이게 최대값)//void setup(){pinMode(M1A,OUTPUT); pinMode(M1B,OUTPUT); pinMode(M1C,OUTPUT); pinMode(M1D,OUTPUT);pinMode(M2A,OUTPUT); pinMode(M2B,OUTPUT); pinMode(M2C,OUTPUT); pinMode(M2D,OUTPUT);pinMode(M3A,OUTPUT); pinMode(M3B,OUTPUT); pinMode(M3C,OUTPUT); pinMode(M3D,OUTPUT);Serial.begin(9600);btSerial.begin(9600);}//void loop(){if(btSerial.available()){char c=btSerial.read();if(c=='q'){digitalWrite(M1A,1); digitalWrite(M1B,0); digitalWrite(M1C,0); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,1); digitalWrite(M1B,1); digitalWrite(M1C,0); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,1); digitalWrite(M1C,0); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,1); digitalWrite(M1C,1); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,0); digitalWrite(M1C,1); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,0); digitalWrite(M1C,1); digitalWrite(M1D,1); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,0); digitalWrite(M1C,0); digitalWrite(M1D,1); delay(s);digitalWrite(M1A,1); digitalWrite(M1B,0); digitalWrite(M1C,0); digitalWrite(M1D,1); delay(s);}if(c=='w'){digitalWrite(M1A,0); digitalWrite(M1B,0); digitalWrite(M1C,0); digitalWrite(M1D,1); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,0); digitalWrite(M1C,1); digitalWrite(M1D,1); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,0); digitalWrite(M1C,1); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,1); digitalWrite(M1C,1); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,0); digitalWrite(M1B,1); digitalWrite(M1C,0); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,1); digitalWrite(M1B,1); digitalWrite(M1C,0); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,1); digitalWrite(M1B,0); digitalWrite(M1C,0); digitalWrite(M1D,0); delay(s);digitalWrite(M1A,1); digitalWrite(M1B,0); digitalWrite(M1C,0); digitalWrite(M1D,1); delay(s);}if(c=='e'){digitalWrite(M2A,1); digitalWrite(M2B,0); digitalWrite(M2C,0); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,1); digitalWrite(M2B,1); digitalWrite(M2C,0); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,1); digitalWrite(M2C,0); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,1); digitalWrite(M2C,1); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,0); digitalWrite(M2C,1); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,0); digitalWrite(M2C,1); digitalWrite(M2D,1); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,0); digitalWrite(M2C,0); digitalWrite(M2D,1); delay(s);digitalWrite(M2A,1); digitalWrite(M2B,0); digitalWrite(M2C,0); digitalWrite(M2D,1); delay(s); }if(c=='r'){digitalWrite(M2A,0); digitalWrite(M2B,0); digitalWrite(M2C,0); digitalWrite(M2D,1); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,0); digitalWrite(M2C,1); digitalWrite(M2D,1); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,0); digitalWrite(M2C,1); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,1); digitalWrite(M2C,1); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,0); digitalWrite(M2B,1); digitalWrite(M2C,0); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,1); digitalWrite(M2B,1); digitalWrite(M2C,0); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,1); digitalWrite(M2B,0); digitalWrite(M2C,0); digitalWrite(M2D,0); delay(s);digitalWrite(M2A,1); digitalWrite(M2B,0); digitalWrite(M2C,0); digitalWrite(M2D,1); delay(s);}if(c=='t'){digitalWrite(M3A,1); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,1); digitalWrite(M3B,1); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,1); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,1); digitalWrite(M3C,1); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,1); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,1); digitalWrite(M3D,1); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,1); delay(s);digitalWrite(M3A,1); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,1); delay(s);}if(c=='y'){digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,1); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,1); digitalWrite(M3D,1); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,1); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,1); digitalWrite(M3C,1); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,0); digitalWrite(M3B,1); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,1); digitalWrite(M3B,1); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,1); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);digitalWrite(M3A,1); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,1); delay(s);}if(c=='f'){digitalWrite(M3A,0); digitalWrite(M3B,0); digitalWrite(M3C,0); digitalWrite(M3D,0); delay(s);}}}
앱인벤터 스위치쪽에 보면
스위치를 누를 때와 스위치를 뗄 때 각각 명령을 줄 수 있으니 찾아보세요
스위치를 뗄 때 'f'를 전송하면 됩니다.
댓글 4
조회수 7,467원스타님의 댓글
원스타 작성일
코드는 따로 수정을 안하신거죠? 저렇게 하면 버튼을 꾹누르면 한번만 동작하고 말아요...
앱에서 버튼을 꾹 누르고 있어도 q가 한번만 입력되서 계속 도는게 아니고 스텝모터가 툭 하고 동작을 멈추더라구요...
왜그런지 알수있을까요?
앱인벤터에서 버튼을 누르고 있을때 q를 계속 전송하거나 코드에서 q를 입력받으면 계속 회전이 되야하는데
그렇게 코드를 짜던가 해야할꺼같아요..
master님의 댓글
master
앱 인벤터 버튼의 기능에서
계속 누르고 있을 때 이벤트를 주는지 아닌지를 알아야합니다.
원스타님의 댓글
원스타
말씀이 이해가 어렵네요...음..... 쉽게 말해주실수있나요?
현제 제가 만든 앱인벤터는 누르면 q가 계속 전송되지 않는거 같아요
누를때만 전송되는거같습니다. 버튼의 기능중에 계속 전송하는 기능이 있나요?
master님의 댓글
master
컴파일러(or 라이브러리)가 어떤 것을 지원해주는지에 따라서 다릅니다.
윈도우에서는 누를 때 계속 키가 들어오지만
앱인벤터에서 지원하지 않는 것 같습니다.
누를 때
뗄 때
누르고 있을 때 계속 키값을 주지 않는다면 위 두가지는 지원할테니
뗄 때 'f'를 전송하세요