아두이노 > 버튼을 누른 횟수만큼 다른센서 작동하기

TODAY634 TOTAL303,700
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU | 아두이노 | 아두이노 | 버튼을 누른 횟수만큼 다른센서 작동하기

페이지 정보

작성자 아두이노초보5 작성일2018-07-12 18:56 조회726회 댓글2건

본문

	

안녕하세요. 너무 어려워서 질문드려요.

dc모터가 한바퀴 돌 때마다 포토센서가 감지해서 모터를 멈추도록 설계를 했습니다.

프로그래밍 하고 싶은 게 버튼을 1번 누르면 dc모터가 돌아가면서 포토센서 한 번 작동해서 멈추기 (DC모터 한바퀴 돌고 멈춤)

버튼을 두 번 누르면 dc모터가 돌아가면서 포토센서 2번째 감지할 때 멈추기  (DC모터 두바퀴 돌고 멈춤)

버튼을 세 번 누르면 dc모터가 돌아가면서 포토센서 3번째 감지할 때 멈추기  (DC모터 세바퀴 돌고 멈춤)

 

기어드모터라서 각도조절이 힘들어서 포토센서로 한바퀴 도는거 체크하려구요.

결국 1루프 끝나기 전에 버튼 누른 수만큼 dc모터가 돌아가게 하고싶거든요.

부탁드립니다.

 

댓글 2

조회수 726

master님의 댓글

master 작성일

버튼 수 만큼 DC모터를 회전시키면 되는군요?
//
버튼을 누르면 즉시 모터가 돌아가게 할 수도 있습니다만
버튼을 외부 인터럽트로 받아야합니다.
외부 인터럽트를 사용하면 모터가 도는 도중에도 버튼을 누를 수 있죠
//
외부 인터럽트를 사용하지 않는 경우에는 시간적으로 따져야합니다.
버튼을 누른 후 다음 버튼을 누르는 시간을 1초 이내로 한다,
1초가 넘으면 버튼 입력이 종료 된 것으로 간주하고 DC모터를 구동한다.
이런식의 알고리즘을 세워야합니다.
왜냐하면 DC모터를 구동하고나면 버튼 체크가 까다롭기 때문입니다.
뭐...전혀 불가능하지는 않지만
시분할 제어 대상이 여러개면 외부 인터럽트를 사용하는 편이 훨씬 간단해지기 때문에
폴링으로는 여러가지를 시분할 구동하지 않습니다.
간단한 인터럽트 나두고 윈도우의 스레드 제어처럼 복잡하게 만들 필요는 없겠죠
//
또 한가지 더
포토센서를 감지해서 모터를 세우면, 바로 서지 않습니다.
관성에 의해서 한참 돌아가다가 멈추게 됩니다.
모터 속도가 느리거나, 감속기어비가 클 수록 제동거리가 짧아집니다.
제동거리가 짧다고 해서 바로서는 것은 아닙니다.
//
스위치 입력은 모터가 돌아가는 동안에도 들어올 수 있나요?
그렇다면 외부 인터럽트를 공부하세요

master님의 댓글

master 작성일

스위치를 누르면 0인가요? 1인가요?
포토센서 감지되면 0인가요? 1인가요?
DC 모터 구동 예제는 어떻게 되죠?
코드를 작성해드릴 수도 있지만 회로의 변수가 많으면 작성이 쉽지 않습니다.
제 맘대로 작성한 후에 소스설명까지 해드리긴 귀찮거든요

아두이노HOME > 아두이노 > 전체 목록

게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017