BASIC4MCU | 질문게시판 | 답변 : 아두이노 코딩 질문드립니다.
페이지 정보
작성자 master 작성일2019-11-25 07:18 조회3,782회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=10877
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-11-25 오전 7:18:22// by Ok-Hyun Park//// 아두이노 자동 블라인드// 일정시간마다 빛의 세기를 측정해서// 특정값보다 크면 90도만큼 회전하였다가,// 특정값 아래로 떨어지면 다시 반대방향으로 90도만큼 돌게 하고싶은데요//#include <MsTimer2.h>#include <AFMotor.h>//#define PHOTOCELL A0#define STEP_PER_ONE_CYCLE 2048 // 1 cycle(360 degree)=2048#define degree90 512//// Connect a stepper motor with 64 steps per revolution(5.625 degree) to motor port#2(M3 and M4)AF_Stepper motor(64,2);//int mode=0;bool flag=0;//void setup(){MsTimer2::set(100,ReadPhotocell);MsTimer2::start();motor.setSpeed(180);Serial.begin(9600);}//void ReadPhotocell(){ flag=1; } // 100ms//void loop(){if(flag){ flag=0; // 100ms 인터럽트 발생 플래그int Val=analogRead(PHOTOCELL);if(Val>550){ // 특정값보다 크면if(mode!=1){ mode=1;motor.step(degree90,FORWARD,DOUBLE); // 90도}}else if(Val>450){} // 450~550 사이는 히스테리시스 영역, 아무 일도 안함else{ // 특정값 이하로 내려가면if(mode!=0){ mode=0;motor.step(degree90,BACKWARD,DOUBLE); // 0도}}}}
450~550
경계 범위를 넓게 잡았는데 적당히 좁히시고 (흔들림 오차보다 크면 됩니다.)
경계값도 적당히 변경하세요
댓글 0
조회수 3,782등록된 댓글이 없습니다.