BASIC4MCU | 질문게시판 | 답변 : 버튼으로 서브모터 각도 조절
페이지 정보
작성자 master 작성일2018-06-18 23:01 조회36,386회 댓글7건본문
// DateTime : 2018-06-18 오후 11:05:10// by Ok-Hyun Park//#include <LiquidCrystal.h>#include <Servo.h>Servo myservo;LiquidCrystal lcd(13,11,8,3,5,7);int b1=12,b2=10;//void setup(){myservo.attach(9);lcd.begin(16,2);}//void loop(){if(digitalRead(b1)){for(int i=0;i<180;i++){lcd.setCursor(0,1); lcd.print("Angle: "); lcd.print(i); lcd.print(" ");myservo.write(i); delay(10);}}//if(digitalRead(b2)){for(int i=180;i>=0;i--){lcd.setCursor(0,1); lcd.print("Angle: "); lcd.print(i); lcd.print(" ");myservo.write(i); delay(10);}}}
댓글 7
조회수 36,386한성님의 댓글
비공개 작성일수정해주셔서 감사합니다 !!
한성님의 댓글
비공개 작성일
수정해주신대로 컴파일 해보니깐 버튼을 한번누르면 0에서 180으로 한번에 올라가고 다른 버튼도 180에서 0으로 한번에 내려가길래 제가 다시 수정을 해봤는데 버튼누를 떄마다 순차적으로 값이 바뀌긴 하는데,
if(digitalRead(b1) == HIGH)
++digit
if(digitalRead(b2) == HIGH)
--digit
만 하니깐 범위가 0에서 180까지로 설정이 안됩니다. 아래처럼 for문 으로 수정을 했는데 여기서 더 수정하거나 추가해야 하는 부분이 있을까요 ?
if(digitalRead(b1) == HIGH){
for(int digit =0; digit>-1; ++digit);
if(digitalRead(b2) == HIGH){
for(int digit = 180 ; digit<181; --digit);
master님의 댓글
master 작성일
설마 버튼 누를 때마다 1도씩 증가 또는 하강하겠다는 것은 아니겠죠?
180도 움직이려면 180번 눌러야하는데요?
한성님의 댓글
비공개 작성일그건아닌데 중간값이 표시가되야해요,, 한번누른다고 바로 180도가 되면 안되고 점차적으로 값이 바뀌어야 해서
master님의 댓글
master 작성일
for(int i=0;i<180;i++){
lcd.setCursor(0,1); lcd.print("Angle: "); lcd.print(i); lcd.print(" ");
myservo.write(i); delay(10); // <--- 딜레이를 키우면 서서히 변합니다.
}
딜레이 때문에 서서히 변할텐데요?
한성님의 댓글
비공개 작성일딜레이값을 키우면 서서히 변하기는 하는데 연속적으로 값이 변하는건 마찬가지라서,, 불연속적으로 값이 바껴야 합니다. 버튼을 누를때마다 값이 증가해야해서,,
master님의 댓글
master 작성일
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2020
for()루프를 제거하면 됩니다.