This lesson is only available in Korean for now.
Lesson 7 of 20

플런저 펌프 — 네 값을 코드로

steps · speed · interval · loops

플런저 펌프 — 네 값을 코드로
논문이 “최적화했다” 고만 적은 그 네 값을, 우리는 파일에 적습니다.

논문은 섞기를 네 값으로 적었습니다 — steps · speed · interval · loops. 그리고 그 값이 얼마였는지는 “최적화했다” 고만 적었습니다.

우리는 그 네 값을 레시피 파일에 적습니다. 그러면 다음 사람이 같은 섞기를 재현할 수 있습니다. /mech 6강이 “섞기가 숫자가 되었다” 고 한 것의 코드 판입니다.

- step: mix_beads device: plunger params: volume_ul: 100 # steps → 부피로 바꿔 적는다 (사람이 읽는 단위) speed_ul_s: 200 interval_s: 0.5 loops: 16 max_duration_s: 120 # 19강의 진행 워치독이 쓴다
네 값을 밀어 보세요. 걸리는 시간과 섞임 정도, 그리고 검증에 걸리는지가 함께 바뀝니다.
Loading…
레시피 값은 기계에 닿기 전에 검사합니다. “실린더보다 큰 부피” 가 하드웨어까지 내려가면 안 됩니다.
Python Runs in your browser

취소할 수 있게 만든다

열여섯 번 왕복이 백 초 걸립니다. 그 사이에 사용자가 중지를 누르거나 결함이 잡히면 중간에 멈출 수 있어야 합니다.

async def mix(self, volume_ul, speed_ul_s, interval_s, loops): for i in range(loops): if self._abort.is_set(): # 매 회 확인한다 await self._park() # 플런저를 안전한 자리로 raise Aborted("mix 중단 (%d/%d 회)" % (i, loops)) await self._stroke(volume_ul, speed_ul_s) await asyncio.sleep(interval_s)

요령은 “취소 지점을 루프 안에 둔다” 입니다. 한 번 왕복은 짧으니 그 단위로 끊습니다. 왕복 도중에 끊으면 액체가 실린더에 남습니다.

🤔 Check yourself
섞기 조건을 코드가 아니라 레시피 파일에 두는 까닭으로 가장 알맞은 것은?
🤔 Check yourself
취소 확인을 왕복 루프 안에 두는 까닭은?