BASIC4MCU | 질문게시판 | 시간차 측정값을 시리얼 모니터에 띄우고 싶습니다
페이지 정보
작성자 망고달달 작성일2022-12-03 17:27 조회2,110회 댓글2건본문
안녕하세요 질문 글을 봐주시는 여러분 감사합니다. 제가 궁금한 것들을 적어보겠습니다.
홀센서가 LOW일때 현재시간, 이전시간은 작동이 시작되는 순간입니다.
1. millis 함수를 이용해서 홀센서가 HIGH에서 LOW로 바뀌는 순간을 시리얼 모니터에 띄우고 싶습니다. 현재는 시리얼 모니터에 출력 되는 값이 시간과 센서 출력 값(0, 1)만 나오는 상황입니다.
2. 1번이 수행되고 시간 값이 다시 0으로 초기화되서 누적 시간을 보는 것이 아닌 시간차만 보고싶습니다.
3. pwm을 이용해서 솔레노이드가 포토인터럽터를 가리면 작동되게 코드를 짜고 싶은데 첨부된 사진에 있는 코딩이 맞을까요?
4. 솔레노이드가 5V를 넣어주었을때 400mA가 나옵니다. 그리고 현재 1.5V AA건전지 4구를 사용중입니다. 직접 솔레노이드를 구동을 시켜보았을때 자성이 너무 약해서 플런저를 밀어내기 부족합니다. (자석은 2mm 크기 원형자석 2개를 사용중입니다.)
긴글 읽어주셔서 감사합니다.
댓글 2
조회수 2,110master님의 댓글
master 작성일소스코드는 텍스트로 첨부하세요
망고달달님의 댓글
망고달달
int sensorPin = A1; //홀스위치 연결 핀 지정
int Led = 13; // 포토인터럽터 LED 핀 지정
int buttonpin = A3; // 포토인터럽터의 신호 핀 지정
int val; //숫자 변수 정의
int solenoidPin1 = 9; // 솔레노이드 핀 지정
int solenoidPin2 = 10;
unsigned long previousMillis =0;
unsigned long eventInterval = 100;
void setup()
{
Serial.begin(9600);
pinMode(sensorPin, INPUT); // 홀스위치 핀모드
pinMode(Led, OUTPUT); // LED 출력
pinMode(buttonpin, INPUT); //포토인터럽터 핀모드
pinMode(solenoidPin1, OUTPUT);// 솔레노이드 핀모드
}
void loop()
{
int sensorValue = digitalRead(sensorPin);
Serial.println(sensorValue);
delay(100);
unsigned long currentMillis = millis();
if(currentMillis-previousMillis>=eventInterval);
Serial.println(currentMillis - previousMillis);
val=digitalRead(buttonpin); //포토인터럽터 값을 출력
if(val == HIGH) // 포토 인터럽터의 센서가 막혔을때 LED 점등
{
digitalWrite(Led,HIGH);//막혔을때
}
else
{
digitalWrite(Led,LOW);//막히지 않았을때
}
if(val == HIGH);//막혔을때 솔레노이드 작동 명령
digitalWrite(solenoidPin1, HIGH);
delayMicroseconds(1000);
digitalWrite(solenoidPin1, LOW);
delayMicroseconds(1000);
}