본문 바로가기

엄마의 성장일기🌱

🌱 엄마의 코딩성장기록 Day 102 - [아두이노 프로젝트] 객체가 스스로 말하기 시작하는 순간

오늘은 코드가 안 되는 이유를 찾다가, 조금 더 개발자가 된 기분이 들었던 날입니다.

어제와 같은 동작을 하는데도 코드를 꽤 많이 바꿨습니다. 겉보기엔 비슷한데 속은 완전히 다른 느낌입니다.

자판기 클래스 안으로 기능을 하나씩 옮기고, 제품을 단순한 "정보"가 아니라 하나의 "객체(Object)"로 다루기 시작했습니다.

처음엔 왜 굳이 이렇게 구조를 복잡하게 만들어야 하나 싶었지만, 구조를 바꾸고 나니 코드가 스스로를 설명하기 시작하더군요.

🔍 오늘 가장 오래 붙잡고 있었던 버그: "금액은 왜 그대로일까?"

특히 오늘 가장 오래 붙잡고 있었던 건 '돈이 왜 안 올라가는지'였습니다.

버튼은 분명 눌렸고, 함수도 호출되었으며, LCD도 멀쩡한데 화면의 금액만 요지부동이었습니다.

한참을 헤매다가 깨달았습니다. "아... 값이 안 바뀌는 게 아니라, 바뀐 걸 내가 제대로 못 보고 있었구나."

함수 안에서 변수 이름 하나를 잘못 적어 값이 엉뚱한 곳에 더해지거나, 인터럽트 안에서 바뀐 값이 제대로 전달되지 않았던 찰나의 순간들. 그 과정에서 volatile 키워드의 중요성과 변수의 유효 범위(Scope)를 다시 한번 뼈저리게 느꼈습니다.

💡 말이 아니라 감각으로 배운 '구조'의 힘

인터럽트에서 값이 바뀔 수 있다는 것, 객체가 자기만의 상태를 가진다는 것, 그리고 왜 우리에게 '구조'가 필요한지... 오늘은 활자가 아니라 감각으로 조금 알게 된 것 같습니다.

  • 클래스 캡슐화: 자판기(VendingMachine)가 자신의 돈(currentMoney)을 스스로 관리하게 만들었습니다.
  • 객체 간의 상호작용: 이제 자판기는 음료라는 객체를 품고, 스스로 동작합니다.

버튼 선택 로직까지 다 구현하면 더 좋았겠지만, 오늘은 여기까지 하기로 했습니다.

끝까지 붙잡고 있었던 것만으로도 충분히 잘한 하루니까요.

🌙 글을 마치며

코드를 깨끗하게 정리해 두고, LCD에 남아 있는 숫자를 한 번 더 보고 조용히 전원을 껐습니다.

내일의 나는 오늘보다 덜 헤매겠지요. 비록 조금 헤맨다 해도 괜찮습니다. 오늘 하나라도 제대로 봤으니까요.

오늘도 성장 완료입니다.

 

#Arduino #아두이노프로젝트 #자판기만들기 #객체지향코딩 #임베디드개발 #개발일기 #회고 #성장기록