BASIC4MCU | 질문게시판 | 답변 : 시간차 측정값을 시리얼 모니터에 띄우고 싶습니다
페이지 정보
작성자 master 작성일2022-12-04 16:56 조회145회 댓글4건본문
int Hall_Pin=A1; // 홀스위치 연결 핀 지정
int Led=13; // 포토인터럽터 LED 핀 지정
int Photo_Pin=A3; // 포토인터럽터의 신호 핀 지정
int SolenoidPin1=9; // 솔레노이드 핀 지정
int SolenoidPin2=10;
//
char flag=0;
int val;
unsigned long t,t_start,t_dif;
//
void setup(){
Serial.begin(9600);
pinMode(Led,OUTPUT); // LED 출력
pinMode(SolenoidPin1,OUTPUT); // 솔레노이드 핀모드
}
//
void loop(){
t=millis();
//------------------------------------------------
int Hall_val=digitalRead(Hall_Pin); Serial.println(Hall_val);
if(Hall_val==0){
if(flag==0){ flag=1; t_start=t; } // HIGH에서 LOW로 바뀌는 순간
}
else{
if(flag)flag=0;
}
//------------------------------------------------
t_dif=t-t_start;
Serial.print("Time:"); Serial.println(t_dif); // 시간차만 보고싶습니다.
//------------------------------------------------
val=digitalRead(Photo_Pin); // 포토인터럽터
//
if(val){ digitalWrite(Led,1); analogWrite(SolenoidPin1,255); } // 포토 인터럽터 막혔을때 LED 점등
else { digitalWrite(Led,0); analogWrite(SolenoidPin1, 0); } // 막히지 않았을때
//------------------------------------------------
delay(100);
}
댓글 4
조회수 145망고달달님의 댓글
망고달달 작성일
코드를 실행하여 시리얼 모니터로 확인해보니 시간차는 보이지 않고 0,1만 나옵니다.
전 홀 스위치를 사용하여 0,1(LOW,HIGH)로만 나오는데 왜 벨류가 550과 450으로 하셨는지 알고 싶습니다.
master님의 댓글
master
그러네요?
A1핀을 사용해서 아나로그 입력 받는다고 생각했나봅니다.
수정했으니 다시 돌려보세요
//
Serial.println(t_dif); // 시간차만 보고싶습니다.
이 값은 안나오나요?
망고달달님의 댓글
망고달달
if문에 Hall_tat은 무엇인가요 오타같아서 고치려는데 stat도 아니고 start도 아니라 잘 모르겠습니다.
또한 수정 전 코드로 했을 때 시리얼 모니터에선 low, high 값만 나오고 시간차는 나오지 않았습니다.
master님의 댓글
master
다시 복사해서 돌려보세요