== 재료 ==

PIC16F887 44PIN Demoboard

다훈전자 USB 조이스틱(PS3 버튼 배열)

와이어 몇가닥

1채널 포토커플러 8ea

== PORTD 비트 정보 ==

7 6 5 4 3 2 1 0 : 상하좌우 LP LK RP RK

#include <16f887.h>
#byte portb=0x06
#byte portd=0x08
#use delay(clock=4000000)

void main()
{
   set_tris_b(0x0f);
   set_tris_d(0x00);
   portd=0xff;
   
   for(;;){
   portd=0;
      if(bit_test(portb,0)==0){   //rb0 푸시 버튼이 눌리면 실행
         portd=0b01010010; //기원권 1p방향
         //portd=0b01100010;  //기원권 2p
         
         delay_ms(90);
         portd=0; //레버 중립
         delay_ms(645);
         
         portd=0b00010000;    //=>1p
         //portd=0b00100000;  //<=2p
         delay_ms(45);      //딜레이
         portd=0;      //레버 중립
         delay_ms(20);      //딜레이
         portd=0b01010010;    //1p초풍
         //portd=0b01100010;   //2p초풍?
         delay_ms(90);      //딜레이. 무족초 발동 중인 상태
         portd=0;      //레버 중립
         delay_ms(530);      //딜레이.
      }
   }
}

알맞은 딜레이 잡기가 상당히 어렵습니다.

다른 만드시려는 분들 덜 고생하시라고 딜레이 코드까지 올립니다.

딜레이 1ms~5ms만 잘못 잡아도 제대로 시전이 됐다 안됐다...

내일 목표는 데모 보드의 RB버튼이 아니라 조이스틱의 남는 버튼을 눌렀을 때 커맨드가 발동하도록 개조할 것

1P 자리 2P 자리 모두에서 작동하도록 코드를 작성할 것.

배선 간단히 바꿔주고, INPUT을 PORT B로 줄 것이 아니라 다른 PORT를 써서 BIT TEST로 검출해야겠네요.

시전 영상

위는 실물. 가장 중요한 부품 포토커플러. 밑은 캐드를 다룰줄 몰라서 손회로도. 대략 개념입니다.

이로써 포토커플러와 아주 약간 더 친해진 기분이네요.

다음은 포토커플러에 대한 자세한 설명이 담긴 PDF파일입니다.


https://www.auk.co.kr/kor/03_technology/down.asp?filename=opto2.pdf

Posted by 공돌이pooh
,