BASIC4MCU | 질문게시판 | 답변 : 도와주세요.아두이노 버튼으로 fnd 및 스텝모터 돌리기
페이지 정보
작성자 master 작성일2019-01-12 10:46 조회5,499회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7424
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-01-12 오후 5:24:07// by Ok-Hyun Park//int CLK=9,DIR=6,ENA=5;int LATCH=4,SCLK=7,DATA=8;int SW1=A1,SW2=A2,SW3=A3;//byte seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};byte dgt[]={0xF1,0xF2,0xF4,0xF8};//unsigned long t1,t2;int Cnt=100,speed=100,d[4];//void Calc(int n){ d[0]=n/1000; d[1]=n/100%10; d[2]=n/10%10; d[3]=n%10; }//void Wr2Seg(byte s,byte v){digitalWrite(LATCH,0);shiftOut(DATA,SCLK,MSBFIRST,seg[v]);shiftOut(DATA,SCLK,MSBFIRST,dgt[s]);digitalWrite(LATCH,1);}//void Disp(){static byte c=0;Wr2Seg(c,d[c]); if(++c>3)c=0;digitalWrite(CLK,1); delayMicroseconds(Cnt);digitalWrite(CLK,0); delayMicroseconds(Cnt);}//void setup(){Serial.begin(9600);digitalWrite(DIR,1); digitalWrite(ENA,1);pinMode(CLK,OUTPUT); pinMode(DIR,OUTPUT); pinMode(ENA,OUTPUT);pinMode(LATCH,OUTPUT); pinMode(SCLK,OUTPUT); pinMode(DATA,OUTPUT);t2=millis();Calc(Cnt);}//void loop(){t1=millis();if(!digitalRead(SW1)){if(t1-t2>200){ t2=t1; if(++Cnt>9999)Cnt=0; Calc(Cnt); }}if(!digitalRead(SW2)){if(t1-t2>200){ t2=t1; if(--Cnt<0)Cnt=9999; Calc(Cnt); }}if(!digitalRead(SW3)){ Cnt=0; Calc(Cnt); }//Disp();}
숫자가 커지면 딜레이가 길어져서 모터 속도가 느려집니다.
댓글 2
조회수 5,499아두이노배우기님의 댓글
아두이노배우기 작성일
답변 매우 감사합니다. 어찌할바를 모르겠어요.
중간에 if++c>3)c=0; 이 부분이 오류인것은 if(++c>3)c=0; 이렇게 하는 것이죠?
그런데 마지막줄에 Disp(Cnt); 이 줄이 색칠되면서 too many arguments to function 'void Disp()' 이런 오류가 뜹니다.
그리고 숫자가 커지면 모터 속도를 빠르게 할려고 합니다. 그러면 delayMicroseconds(Cnt); 여기 딜레이를
delayMicroseconds(1000-10*Cnt); 이런식으로 바꿔도 되나요?
한번더 부탁드립니다. 정성스런 답변에 감동했습니다. 감사합니다.
master님의 댓글
master
수정했으니 다시 돌려보세요
delayMicroseconds(1000*Cnt); 이런식으로 바꿔도 됩니다.