2022.03.24
2022.04.01
오늘은 Ev3의 Sensor들 중, Touch Sensor에 대해서 학습하였다.
본문에서는 Ev3의 각종 Sensor를 다루고 학습한 내용들을 기록하였다.
TouchSensor(Port.1) # TouchSensor = 터치센서 선언, (Port.1) = 연결된 포트 호출(1~4)
2) Touch Sensor 눌림 여부pressed() = 센서 상태 호출
1 = 눌림, 0 = 눌리지 않음
TouchSensor(Port.1).pressed()
3) while 문 응용
Motor A를 반복하여 회전시키고 싶다.
[code-1]
# 선언 부분은 본 기록에서 생략함.
while TouchSensor(Port.S1).pressed() == 0:
Motor(Port.A).run(500)
wait(100)
code-1의 알고리즘은 Touch Sensor가 눌리지 않은 상태(즉, 0인 상태) 일 때, Port A에 연결된 Motor(=Motor A)는 500의 파워만큼 동작하고, 0.1초 정지 한다.
하지만, 본 알고리즘을 실행하면 명령어를 새로 불러와서 실행되므로, 모터가 움직이고 정지하고 매끄럽게 동작 되지 않은 즉, 끊어지는 현상을 확인할 수 있었다.
그럼 어떻게 해야 모터가 끊기지 않고 부드럽게 동작할 수 있을까?
-> Motor(Port.A).run(500) 부분을 while 문 위에 작성해 주니, 모터가 끊기지 않고 부드럽게 동작하는 결과를 확인할 수 있었다.
[code-2]
Motor(Port.A).run(500)
while TouchSensor(Port.S1).pressed() == 0:
wait(100)
Ev3 Wave(초음파) Sensor를 호출하는 방법에 대해서 배웠다.
1) Wave Sensor 호출 방법
UltrasonicSensor(Port.S3) # UltrasonicSensor = 초음파 선언, (Port.S3) = 연결된 포트 호출(1~4)
2) Wave Sensor 거리 호출
UltrasonicSensor(Port.S3).distance()
3) Wave Sensor 상태 유무 여부TouchSensor(Port.1).pressed()
이번 시간에는 Ev3의 Touch Sensor를 선언하고 Touch Sensor의 상태를 불러와 상태에 따른 동작을 이행하게끔 알고리즘을 구현해 보았다.
또한, while문 실행중에 있어서 모터가 끊기지 않고 부드럽게 동작하는 알고리즘을 구현하는 방법에 대해서 배웠다.
Touch Sensor는 다양한 용도로 사용될 수 있다고 생각한다. 예를 들어 자동차 탑승 중, 물체와 부딪히면 에어백이 나오게 하는 것도 Touch Sensor를 응용해 개발한 것이라고 생각한다.
앞으로 배우는 Sensor들을 가지고 자율주행 Ev3 또한 개발해 보았으면 한다.