업다운 게임 Jkit

두부김치·2024년 4월 1일

C_Project

목록 보기
3/3

드디어 파일 정리의 마지막이다.
c로 짰던 코드들이 조금 있는 편인데 무언가 정리해서 올릴만한 내용은 이렇게 3개가 끝인거 같기도 하다.
사실 더 있지만 조금 귀찮기도 하고 이제 공부하는 거는 자바인지라 C로 이런거 했었다..라는 티내기 겸사겸사 추억도 되새기면서 마무리 하겠다.

깃주소 먼저 올리고 시작하겠다.
Git 주소
이 게임은 사실 정말 간단한 Up down 게임이다.

이 프로그램은 UP & DOWN 게임으로써 프로그램 시작시 1~30 사이의 랜덤한 숫자가 정답으로 배정되며 플레이어는 스위치를 이용해 정답을 맞추게끔 했다.

정답이 아닌 숫자를 입력시 각 상황에 따른 UP과 DOWN이라는 문구를 표기한다.
ex) 정답 = 15 일떄 10입력시 UP표시

총 8번의 정답입력 기회가 있으며 8번의 기회가 모두 끝나면 FAIL문구와 소리가 울리며
8번의 기회안에 정답을 맞추면 answer문구와 소리가 울림
정답입력의 기회는 led를 이용하여 표시했으며 소리의 출력은 buzzer를 이용했다.

이 프로그램 조식도를 보면 더 도움이 될 것이다.

이를 위해서 제일 주요했던 기술은 ADC를 이용한 랜덤한 숫자의 발생이었으며 각 스위치에 대한 인터럽트 설정과 이를 통한 세그먼트, led의 표시문제를 해결하여 위의 프로그램을 완성했다.

간단한 프로그램이지만 제일 애먹었었던 곳은 난수의 발생이었다.
컴퓨터로 난수를 발생시키면 난수의 기본 seed가 Time으로 설정되어있어 매번 다른 난수가 발생되지만 Jkit에서는 그 값이 고정되어있어 아무리 난수를 실행해도 매번 같은 난수가 발생되는 문제점이 있었다.

이를 해결하기 위해서 광감지센서,온도센서등 여러가지를 사용해보았는데 광감지 센서 즉 조도 센서를 이용하는게 제일 적합하다고 생각했다.
키트의 조도센서는 빛을 받을때 디지털 형식이 아닌 아날로그 형식으로 받기에 그 받아들이는 양이 매번 달라진다.

이것에서 착안해 ADC의 빛을 받아들이는 양을 난수의 seed값으로 삼아서 완벽한 난수를 생성했다.

받아들이는 양을 최대한 아날로그 방식을 증폭시키기 위해 분주비 레지스터를 최대값으로 설정했다.

나머지 기술은 너무 간단하긴 하지만
인터럽트를 통한 스위치의 입력 - 채터링 제거를 위해 레지스터에 값을 미리 지정해주었다.
각종 LED,7-Segment,Buzzer등을 통해 정답과 그 과정을 표현했다.

2년전이의 코드이기도 하고 지금보니 부족한 부분도 많고 허접하기도 하지만서도 그래도 키트에 대해 이해는 했었구나 한다. 이걸 보는 다른 사람들도 귀엽게 봐줬음 한다 ㅎㅎㅎ..

profile
흔한 주니어 개발자

0개의 댓글