[츄라이] Raspi4 + HC-SR04를 써보자

0
post-thumbnail

오늘 기다리고 기다리던 센서들을 만났다
진짜 정말이지 너무너무 기다렸다

얘들을 만져봐야 내가 뭘 만들어낼 텐데
계속 이 생각만 했었던 것 같다

가뜩이나 부족하고 포트폴리오도 없는데 센서는 안 오고
코딩에 집중도 안 되고 참으로 급한 마음으로 보낸 시간들이었다

하지만 이젠! 다르다!

LED를 먼저 켜보고 그 다음엔 온도/습도 센서를 써봤다
예제 코드로 돌리니까 잘 돌아가는 걸 볼 수 있었다

하지만 내 최대의 관심은 거리측정센서에 있었다

나는 운동을 하고 싶다
하지만 혼자 깔짝깔짝대다가 지쳐서 물이나 마시고
잠이나 자고 그런다

아마 시각적으로나 데이터적으로나 직관적이지 않아서
재미가 잘 안 붙는 거라고 나름 분석했다

그래서 팔굽혀펴기 횟수 계산기를 만들자는 생각을 해왔다

사진이 거꾸로 나왔지만 아무튼 요렇게 생긴 놈인데
생각보다 크기가 있다

사전 조사해본 결과로는 성능이 아주 후지다는 평이 많았는데
실제로 써보니 준수한 편이었다
민감도는 낮은편이나 데이터를 쏴주는 속도는 빠르다

사실 민감도가 낮은 부분이 많이 신경쓰인다
대상이 빠른 속도로 움직일 때 즉각적으로 반응하진 못하는 듯하다

아무튼 계획은 이러했다

  • 예제 코드를 받는다
  • 조건문을 이용해서 횟수 측정 코드를 섞는다
  • 날먹으로 완성

정말이지 간단하면서도 예쁘고 확실한 플랜이었다
고 착각했다

기초 지식만 있을 뿐 코드가 손에 익지 않은 탓에
메소드의 기능이나 리턴값을 잘 알지 못했고
센서가 반환하는 수치가 어디에 할당되는지 찾지 못해
거의 한 시간을 헤맸다

하지만 센서의 리턴값만 받을 수 있으면
그 다음은 조건문에 집어 넣어서 결과만 내면 되므로
굉장히 쉬운 작업이 된다
고 생각했지만 아니었다

코딩감이 떨어져서?
ㄴㄴ
그냥 기본기가 덜 됐다 진짜로

아래는 내가 두 시간 정도를 쳐다본 코드다
'맞는데 왜 아니 돌아감? 코드'라 이름 짓겠다

if (거리) <= (목표 하강 높이):
   (상태 표시) = 1
   if (거리 >= 목표 상승 높이) and (상태 표시 = 1):
      (횟수) += (횟수)
      print("now your rep: %d" %(횟수))
      (상태 표시 = 0)

이렇게 짰었다
엄청난 구멍이 보이지만 난 알아채지 못했다
저렇게 짜놓고 '외않됌?'

다시 정리를 시작했다

그 알고리즘 표? 그림?을 적는 양식?이 있던데
나는 모르니까 그냥 저렇게 썼다
근데 저렇게 해도 문제를 알아채지 못했다

그리고 아주 오랜 시간이 지난 후
그러니까 집에 와서 나의 절친인 허선생에게 조언을 구한 후에야 알아버렸다

ㅇㅇ 바로 이거였음
물론 순차적으로 처리될 것이다 허나
내가 생각하는 수준의 순차적 처리는 아니다
아주아주 순식간에 처리가 이루어진다는 걸 완전히 간과했다

그러고 나서 코드를 수정해봤다

if 거리 <= 목표 하강 높이:
   상태 표시 = 1

if (거리 >= 목표 상승 높이) and (상태 표시 == 1):
   횟수 += 횟수
   print("now your rep: %d" %횟수)
   상태 표시 = 0

ㅋㅋ 이거 된다
분명히 될 것이다 난 믿고 있다
고 착각하는 것이 아니길 바란다

제발 돼라!
얼른 가져가서 돌려보고 싶다

🙏 제발 돼라!

0개의 댓글