이 놈이 바로 Arduino Mega. 포트가 많아서 출력이 많이 필요할 때 유용하게 쓰인다.


얼마 전에 아두이노 Mega 2560보드로 프로젝트를 잠시 진행한 적이 있었습니다.

캐릭터LCD를 붙여서 LCD에 글씨를 띄워야 하는데 자꾸 LCD에 글자가 깨지는 현상이 일어났습니다. 이유는 잘 모르겠는데 어찌어찌 하다 보니 글씨가 제대로 뜨기는 하더군요. 어쨌건 이후로는 정상적으로 작동하길래 그 날은 그냥 넘어갔습니다.


그런데 해당 문제가 다음날 또 터지더군요. LCD에서 글씨가 또 깨지더군요. 이유가 뭔지 잘 몰라서 난리를 치던 중에 프로그램 문제인가 싶어서 PC에 아두이노를 연결하자 정상적으로 LCD에 글씨가 뜨기 시작했습니다.


...사실 그동안은 전력 수급 문제로(LCD가 생각보다 전력을 많이 필요로 합니다. USB만으로는 좀 벅찰 정도입니다.)9V 어댑터를 연결해서 쓰고 있었는데 USB연결 없이 어댑터만 연결하자 LCD에 글씨가 깨지는 것이었습니다. 어댑터 문제인가 싶어서 어댑터 전압을 측정했더니 9V로 아주 쌩쌩하게 잘 돌아갔습니다. 사실 7V만 나와도 정상 작동 되어야 하는 것이기에(아두이노는 7~12V 어댑터를 연결하면 알아서 자체적으로 5V,3.3V로 알아서 낮춰서 잘 돌아갑니다.) 어댑터가 문제였을리는 거의 없습니다.


그래서 결국 아두이노 보드를 시험하던 도중 5V 출력단에서 전압이 이상하리만큼 낮은 것을 확인했습니다. 3.3V남짓 나오더군요. 그 옆에 있던 3.3V 출력단은 어떤가 봤더니 당연하게도 3.3V가 나오고 있었습니다. 즉 3.3V는 정상.


5V 출력 포트와 3.3V 출력 포트. 여기와 관련된 곳이 바로 어댑터 연결잭 근처에 있는 레귤레이터다. 즉 저놈이 전압 불안정의 원인

그래서 혹시나 하고 인터넷에 5V 출력 관련 이슈가 있나 해서 찾아보니 이슈가 있는 것인지는 모르겠지만 외국에도 사례가 있더군요.

http://www.instructables.com/id/Fix-a-fried-Arduino-Mega/#step1


Fried-Arudino...일명 날아간(튀겨진?) 아두이노 살리기.


아무래도 제 예상입니다만 LCD를 달면서 전류가 혀용량을 넘어섰고, 그에따라 레귤레이터가 맛이 갔는지도 모르겠습니다. 어쨌건 해당 글에는 레귤레이터를 아에 갈아버리더군요. 그것도 원래 아두이노에 달려있던 SOT-223대신 LM7805로 바꿔버렸습니다.


SOT-223도 괜찮은 칩이기는 한데, LM7805가 아무래도 신뢰도가 워낙 좋다 보니 이해가 가더군요.(LM시리즈는 전자상가에서 쉽게 구할 수 있는 데다가 실습 교재로 엄청 많이 쓰입니다.) 게다가 학교에서 수리 하다보니 LM7805는 워낙 남아돌아서(...) 저 사이트에 나온대로 바꿔보기로 했습니다.



그런데....

레귤레이터의 납이 안 떨어지네요...아무리 인두로 지져도 인두 온도가 낮은 것인지 저 칩을 뗄레야 뗄 수가 없었습니다. 그래서 그냥.... 


 해당 사이트를 참고해서 Vout부분인(즉, 원래 5V가 나왔어야 했지만 맛이 가서 3.3V가 나오는) 가운데 다리(*ㅡ_ㅡ*)를 잘랐습니다. 쉽게 말해서 그냥 보드에서 안 떨어지니 그냥 고자(...)로 만들어버리는 것으로 결정.


그리고 새로이 7805를 기존 레귤레이터 다리에 위치에 맞춰서 그대로 납땜을 했습니다.

SOT-223은

1pin GND

2pin Vout

3pin Vin

이지만,

LM7805는

1pin Vin

2pin GND

3pin Vout

입니다.

즉, 중간에 다리가 꼬이는데 혹시라도 있을 합선을 방지하기 위해 가운데 다리에 수축튜브를 끼워넣어서 절연을 해줍니다.

자세한 내용은 위의 링크가 걸린 사이트를 참조하시면 편하고, Vin의 위치가 1-3이니까 기존 레귤레이터와 LM7805가 서로 마주보게(...) 납땜 해주시면 편리합니다. 즉, LM7805의 2번 다리와 3번 다리를 서로 엇갈리게 꼬고 LM7805의 1번 다리와 기존 레귤레이터의 3번 다리가 만나도록 납땜 해주셔야 합니다. 혹시라도 잘못 연결하면 레귤레이터에서 연기가 피어오르는 것을 감상하실 수 있습니다.


7805를 아두이노에 납땜한 모습 테스터기로 찍어보자 딱히 합선은 없었다.

어쨌건 레귤레이터도 바꿨겠다. 어댑터 연결후에 5V포트의 전압을 측정하자 5V 칼전압이 나옵니다. Wow!


LCD를 연결하자 LCD에 글씨 엄청 잘 뜹니다. 역시 전압이 문제였다고 밖에는....일단 7805는 열이 많이 나오는 소자라서 방열판을 붙여줘야 합니다. 7805파는 가게에서 방열판도 같이 파니까 꼭 방열판을 달아놓으세요. 안 그러면 저 7805도 맛이 가는 수 있습니다. SOT-223은 잘 모르겠지만 7805는 그만큼 허용 전류량도 높으니 전류를 많이 뽑아먹어도 이제 큰 무리는 없을 겁니다. (못해도 1A는 버틴다고 하네요.)만세!




추가 이야기

아두이노에 가변저항 없이 LCD연결하기.


보통 아두이노 예제에서 LCD연결 회로는 다음과 같습니다.


저 가변저항이 무슨일을 하는가 봤더니 LCD 글씨의 대비를 조절하는 것이라고 합니다. 즉, 전압을 조절해서 LCD의 어두운 부분을 만드는 전압을 설정하는 것인데, 까놓고 말해서 가변저항 달기도 짜증나서 이를 간단히 하는 방법을 알려드리겠습니다.


우선 저 가변저항이 없으면 글씨가 무조건 까만 사각형으로 나오게 됩니다. 그리고 가변저항을 돌리다 보면 어느 순간 글씨가 보이는데 그 글씨가 보이는 수준은 LCD마다 제각각입니다. 기준전압이 지들 마음대로인데 보통은 5V짜리 기준으로 2.5V입니다. 즉 반정도 돌리면 보입니다. 그런데 가변저항을 달 생각하니까 그냥 짜증이 나더군요. 그래서 회로를 살짝 수정했습니다.




저 갈색선이 보이시나요? 아두이노의 6번핀과 LCD의 Contrast핀을 직접 이었습니다.


6번핀이 뭐냐하면 PWM지원 핀입니다.

analogWrite(~~,~~);

이 코드가 먹히는 핀이라는 것입니다. 물론 6번핀 말고도 PWM지원 핀이면 어디에 연결해도 상관은 없습니다.


analogWrite(6,120);//6은 6번핀이라는 의미 120은 듀티비가 120 즉, 출력 전압은 120/255 * 5V


위의 코드를 Setup()함수 내에 적어주시면 가변저항 없이도 LCD의 글씨가 보일 것입니다. 좀 까맣다 싶으면 120보다 낮은 수로 바꿔주시면 되고 너무 하얗다 싶으면 120보다 높이면 됩니다. 일부 LCD는 반대일 수도 있습니다. 어쨌건 저 숫자를 바꿔주면 조절이 됩니다. 심지어 머리를 조금만 더 쓰면 대비 조절을 별도의 스위치 조작이나 PC연결로 할 수도 있습니다.


보드가 깔끔한 것을 원하신다면 이 방법을 추천드립니다. 가변저항은 좀 불편하니까요. 디지털 방식도 나쁘지는 않다고 생각합니다.

,

여러분들은 어떤 게임을 좋아하시나요? 사실 저는 PC나 콘솔 게임은 그렇게 좋아하지 않습니다. Long Live The Queen에 대한 글이나 에뮬레이터에 관한 글을 올린 제가 할 소리는 아니긴 하지만 저는 오락실 게임들을 좋아합니다. 그 중에서도 몸 쓰는 게임을 참 좋아하는데요. 몸 쓰는 게임의 대표 주자라면 역시...


출처 : 위키피디아

이 물건이 아닐까 합니다. 첫 작품이 나온지 20년이 다 되가는 게임입니다. 바로 Pump it up!

저는 괴수는 아니라서 보통 남들 하는 레빌7~9 정도에서 놀지만 그것도 상당히 땀이 많이 납니다. 사실 이렇게 땀 빼는 것 감안하면 대략 2000원 정도의 게임을 하면(한 번에 500원 일 경우 - 3곡씩 하게 되니까 총 12곡)어마어마한 칼로리 소모 및 입에서 단내(...)가 날 정도의 느낌이 듭니다.


리듬게임의 시초는 잘 모르겠지만 이를 대중화 한 것은 일본의 코나미입니다. 사실 Pump it up도 DanceDanceRevolution(이하 DDR)의 카피캣이었는데 어쩌다보니 크로스 라이센스가 걸리게 되어서 둘이 공생하는 관계가 되었습니다. 오랜 시간이 지나면서 둘의 게임성이 확연히 달라지기도 했고, 오랜 기간동안 발전과정을 본 Pump it up과는 다르게 DDR은 정발판이 들어왔음에도 그렇게 썩 재미있지는 않더라구요.


(사실 DDR은 정 박을 밟는 것을 중요시 여긴다면 Pump it up은 그냥 몸을 배배 꼬게 만드는 것으로 어렵게 만듭니다. 문제는 몸이 날아다니는 수준이어야 할 정도로 미친 듯이 뛰어야 합니다. 그에비해 DDR은 몇몇을 제외하면 미친 듯이 뛸 일은 별로 없습니다.)


사실 이외에도 리듬게임같이 인간 한계를 시험하는 게임을(...) 상당히 좋아해서 오락실에 가면 유비트도 같이 하는데요.


출처 - 위키피디아 리듬게임 갖다놓은 오락실치고 이거 없는 오락실은 거의 없더라. 그만큼 인기 있는 리듬게임(이자 입문용 게임)


DDR이나 Pump it up이 발판형이면 이건 터치형입니다. 사실 투명한 버튼이라고 하는 것이 맞는 것 같기는 하지만 게임내에서 터치라고 하니까 터치라고 합시다.(터치라고 해서 스마트폰용 리듬게임하듯이 그냥 쓰다듬으면 인식 안됩니다. 버튼처럼 눌러야 합니다. 이게 무슨 터치야)


터치형의 특징은 화면에 보이는 것을 직접 누른다는 것이 있습니다. 그래서 화면을 보면서 버튼을 찾아 눌러야 하는 건반형이나 비슷하게 발판을 누르는 발판형과는 다르게 상당히 직관적입니다. 초보자들도 대충 넣고 튜토리얼도 없이 그냥 게임을 해도 어렵지 않을 수준이니까요.

무엇보다 터치형은 스마트폰이 대두되면서 Deemo나 탭소닉같은 모바일 리듬게임이 나오면서 사람들에게 익숙해진 방식이기도 합니다.



모바일용 리듬게임 중 하나인 Deemo 모바일게임이 그렇듯이 터치형이다. 출처 - 리그베다위키

터치형과 발판형(혹은 건반형) 리듬게임을 하다보면 한 가지 큰 차이가 느껴집니다. 가끔 내가 엉뚱한 곳을 두드릴때가 있다는 것! 눈이 화면에 고정되어있다보니 벌어지는 현상입니다. 눈은 화면을 봐야하다보니 손이나 발이 "이 정도만 움직이면 되겠지"하고 움직이는 것에 의존 할 수밖에 없습니다. 처음 가는 오락실에서 하다보면 거리 인식이 덜 되어서 Pump it up 발판에서 떨어지기도 합니다... EZ2DJ나 BeatmaniaIIDX같은 버튼식은 처음 했을때에는 멀쩡한 바닥을 누르기도 했고요.


하지만 터치형은 그럴일이 상당히 적습니다. 눈이 손의 위치를 보정해주니까요. 터치형 게임 중 제일 대부라 할 수 있는 (하지만 지금은 관에 들어간) Djmax Technika의 경우 리듬게임 치곤 쉽다는 소리를 많이 들었습니다. 사실 그리 쉬운 게임이 아니었는데도 "일단 눈에 보이는 대로 누른다.= 몸으로 익힐 시간이 줄어든다." 바로 이거입니다.


터치형 리듬게임의 대중화를 이룬 Djmax Technika시리즈. 지금은 그냥 사망처리... 그래도 이거 없었으면 지금의 유비트나 리플렉비트같은 터치형 리듬게임이 나오기는 힘들었을 거라는게 게이머들 생각이다.



....얼마 전에 유비트와 Pump it up을 하면서 느낀 것인데 이 둘을 섞으면 어떨까? 라는 생각을 했습니다. Pump it up이야 워낙 나온지 오래되었고 익숙해서 사람들이 곧 잘하기는 하지만 처음 하거나 오랜만에 하는 사람들은 발판 위치 잡는 것을 상당히 곤혹스러워 하는 것을 많이 봤습니다. (특히 철판 때리는 소리가 들리면 100%입니다. 혹은 우당탕 소리나면서 떨어지기도...)


그러면서 생각이 든건데 유비트 처럼 발판을 보면서 발판에 뜨는 마커에 맞춰서 발로 밟게 하면 어떨까? 라는 생각을 했습니다. 즉, 터치형+발판형인 것입니다. 아니면 그냥 유비트 컨트롤러를 크게 만든 다음 발로 밟게 만들어도 되겠네요. (..4x4니까 16개... 날아다니는 것이 아니라 그냥 분신술을 써야 하는 거 아닌가?)


물론 그 만큼의 큰 대형 화면을 바닥에 깔아버릴라면 돈이....들기야 하겠지만 대형 디스플레이 가격도 많이 떨어졌고 만들려면 충분히 만들 수는 있다는 생각이 듭니다.


그리고 무엇보다 유비트를 크게 만들어서 바닥에 깔아버린다면.........외계인 색출 게임 확정! 전 원래 인간한계에 도전하는 게임을 좋아하니까 있다면 한번 해보고 싶네요.


어찌되었건 생각뿐이기는 한데 압전소자가 제 손에 들어오면서 제 손으로 만들게 될 날이 올 수도 있습니다....어떻게 될 수 있을지는...으음...?

,

http://blog.daum.net/moor/50

이 글은 과거 제가 했었던 삽질을 다시 정리해서 올리는 글입니다. 디제이맥스 트릴로지처럼 USB동글을 써야 하는 프로그램 구동에 도움이 되기를 바랍니다.



이 게임을 기억하시는 분들이 아직은 많으리라 믿습니다. 비록 죽어버리기는 했지만 2008년 출시된 게임치고 지금도 꿀리지 않는 명작 디제이맥스 트릴로지입니다.


이 게임의 특징으로 USB형 동글을 사용해서 복돌을 막았다는 것인데요. 2012년경에 어이없는 방법으로 뚫려버리기는 했지만(USB가 뚫린 것이 아니라, 실행파일 해킹으로 풀려버렸음)그럭저럭 복돌이를 잘 막았다고 하는 물건입니다.


2011년에 제가 갖은 삽질을 통해서 트릴로지가 Wine을 통해서 구동이 된다는 사실을 확인하기는 했는데, 이를 다시 정리해서 USB인식까지 방법을 깨끗하게 정리하고자 합니다. 참고로 OpenGL 2.1이상이 지원되어야 그래픽이 정리가 됩니다.구형 드라이버를 사용하시거나 지원이 안 되는 그래픽 칩셋을 사용하신다면 아래와 같은 이미지만 보게 됩니다.






그래픽 드라이버의 경우 오픈소스 드라이버도 별 문제없이 잘 실행되는 것이 확인되니 그냥 업데이트만 꾸준히 해주시면 별 문제는 없을 것입니다.


그래픽이야 그렇게 큰 문제는 되지 않습니다. D3D->OpenGL이 그렇게 큰 부하가 걸리는 것도 아닌데다가 2008년 게임이라 지금 기기성능이라면 별 문제는 없습니다. 제일 큰 문제는 USB인식 입니다. 그냥 눈 딱 감고 크랙을 쓰면 USB인식 문제가 한번에 해결되지만, 정품을 이용하자는 취지에 맞게 USB를 인식시켜보도록 하겠습니다.


http://wiki.winehq.org/USB

여기에 가보시면 USB인식에 관한 글이 올라와 있습니다. ftp://ftp.etersoft.ru/pub/people/amorozov/usb/

여기에 있는 패치를 한 와인을 써서 USB 인식을 하게 하면 됩니다.


우선 와인의 소스코드를 받아야겠지요?


http://sourceforge.net/projects/wine/files/Source/

여기서 와인의 소스코드를 다운로드 받도록 합시다. 와인 패치가 1.5.3이 마지막으로 되어있는 것으로 봐서는 이후 버전에서는 지원할 생각이 없어 보입니다. 소스코드도 1.5.3을 이용합시다. 그리고 ftp://ftp.etersoft.ru/pub/people/amorozov/usb/ 이곳에서 1.5.3버전의 2개의 패치 파일을 다운로드 받아서 와인의 소스코드가 있는 곳으로 던져넣읍시다.


해당 서버가 접속이 안 될 경우 여기서 받으세요. wine 1.4.1용은 1.4.1(안정버전)에서 굴려야 할 경우, 1.5.7버전은 etersoft에서 지원한 최종 버전입니다.


wine1.4.1for_usb_patch.tar.gz


wine1.5.7_for_usb_patch.tar.gz



그리고 터미널을 열고 소스코드가 있는 곳으로 찾아간 뒤에


patch -p1 > 0001 ~~~

patch -p1 > 0002 ~~~~

라고 해주시면 패치가 완료 됩니다. 그리고 그대로 make를 해주시면 와인이 컴파일이 완료 됩니다.


아무래도 그냥 make 보다는 deb으로 만드는 것이 편하니까


dh_make -r

fakeroot debian/rules binary


위의 명령으로 deb으로 만들어줄 수 있으며 이를 설치해서 써도 되지만 그냥 PlayonLinux를 이용하는 것이 제일 좋은 방법입니다.


노틸러스나 컹커러로
~/.PlayOnLinux/wine 여기에 들어가 보면 linux-x86과 linux-amd64가 있는데, 32비트면 x86일 것이고 64비트면 amd64로 컴파일 되었을 테니 해당 폴더 안에 대충 1.5.3-usb 등으로 폴더를 만든뒤에 deb의 압축을 풀어버립시다.


그리고 Playonlinux에서 설치를 누르고 리스트에 없는 설치(install a non-listed program)를 누른다음 Install a new prefix -> 대충 Prefix이름을 적고-> Use another version of Wine을 이용해서 아까 압축 풀었던 1.5.3-usb를 선택하도록 합시다.


그렴 이제 USB 지원 Wine으로 트릴로지를 설치할 준비가 되었습니다.


그런데 우선 해야할 일이 있다. 트릴로지를 우선 Setup하지 말고 USBSETUP 폴더 안에 있는 USB드라이버를 우선 선택해야만 한다. 그 이유는 게임 설치 후에 드라이버 설치 할 때 게임 인스톨러가 에러가 나는데 미리 드라이버를 설치해 두면 드라이버 설치를 무시하고 넘어 갈 수가 있다. 우선 USBSETUP을 합시다.


granddog.reg


그리고 Playonloinux의 구성버튼을 누르고 트릴로지 설치 Prefix를 선택한 후 레지스트리 에디터를 버튼을 누르면 윈도에서 봤던 것과 같은 레지스트리 에디터가 뜹니다.

위의 레지스트리 파일을 다운로드 받은다음 레지스트리 에디터에서 파일-레지스트리 가져오기를 누르고 위의 파일을 선택하면 레지스트리가 등록이 됩니다.


Run a.exe ~~~버튼을 누르고 트릴로지 Setup.exe를 선택하면 이제 본격적으로 게임을 설치 할 수 있게 되는데, 마지막 드라이버 설치시에 주의사항이 있습니다. 파일을 덮어씌울 것인지 물어볼 때 무조건 "아니오"를 눌러주셔야 합니다. "예"를 누르는 순간 에러가 나면서 설치가 취소됩니다.


그리고 마지막으로 수동으로 패치를 해주시면 트릴로지가 리눅스에서 실행되는 것을 보실 수 있습니다.

이렇게 말이지요~




스크린샷은 2010년 당시의 스크린샷입니다. 하지만 똑같이 실행된답니다.


사운드 싱크에 문제가 있을 수 있는데 Pulse-Audio를 삭제해 주시거나 Wine에 Pulse-audio 패치를 해주시면(...)싱크 밀림을 막을 수 있습니다. Pulse-audio를 삭제하는 것이 가장 싱크밀림을 확실히 잡을 수 있는 방법인데, 대신 오디오관련 설정이 엄청 꼬입니다. Pulse-audio관련 패치를 하는 방법은 조금 레이턴시를 잡을 수는 있지만 Alsa-Pulseaudio의 오버헤드는 여전해서 미묘한 싱크 밀림이 생깁니다. 게다가 가뜩이나 USB관련 패치를 한 데다가 미리 패치를 하지 않은 죄로 컴파일을 또 해야하는 불상사가 생깁니다. 


그냥 오디오 꼬이는 것은 적응의 문제 혹은 삽질이라고 생각하고 Pulse-audio를 삭제해봅시다. 우분투나 Pulse-audio쓰지 다른 배포판은 그냥 Alsa만 쓰기 때문에 일부 동영상 플레이어를 제외하면 딱히 호환 문제는 없습니다.


Pulse-audio 삭제법은 나중에 포스팅 하기로 하고, 이상 리눅스에서 트릴로지 실행하는 법을 알아보았습니다. Wine패치하기 어려우신 분들은 그냥 세이브를 다시 해야하는 문제가 있기는 하지만 No-USB패치 하시는 것도 나쁘지는 않다고 생각합니다. 단, 어디까지나 정품 이용!

,