나는 최근에 일부 금속 부품으로부터 완전한 USB 스팀 펑크 스타일 키보드를 만들기를 희망하면서 Makey Makey (Arduino Leonardo / ATMega32u4 기반)를 구입했습니다 . 도착하기 전에 세부 정보를 다시 읽고 가능한 입력이 18 개뿐이므로 85+ 키가 작동하지 않는다는 것을 깨달았습니다. 라즈베리 파이로 짐승을 어떻게 만들 수 있을지 아는 사람이 있습니까? ( 이전 게시물에서 매우 쉽게 연결됨 )
나는 최근에 일부 금속 부품으로부터 완전한 USB 스팀 펑크 스타일 키보드를 만들기를 희망하면서 Makey Makey (Arduino Leonardo / ATMega32u4 기반)를 구입했습니다 . 도착하기 전에 세부 정보를 다시 읽고 가능한 입력이 18 개뿐이므로 85+ 키가 작동하지 않는다는 것을 깨달았습니다. 라즈베리 파이로 짐승을 어떻게 만들 수 있을지 아는 사람이 있습니까? ( 이전 게시물에서 매우 쉽게 연결됨 )
답변:
Makey Makey를 사용하지 않고 키보드 만 만들려면 Raspberry Pi의 GPIO 기능을 사용하여 키보드를 만들 수 있습니다. 그러나 이전에 언급했듯이 Raspberry Pi에는 실제로 유용한 키보드를 만들기에 충분한 핀이 없습니다.
그러나 2 개의 IC를 추가하려는 경우 키가 많은 키보드를 만들 수 있으므로 모든 키에 대한 기능을 구현하는 데 문제가 있습니다!
내 제안은 2 I2C IC를 Raspberry Pi의 I2C 버스에 연결하고이를 사용하여 자체 스캔 매트릭스를 만드는 것입니다.
하나의 PCF8574를 사용하는 경우 8 개의 I / O 핀을 사용할 수 있으며 PCF8575를 사용하면 16 개의 I / O 핀도 사용할 수 있습니다. 결합하면 다음과 같은 스캔 매트릭스를 얻을 수 있습니다.
항상 하나는 출력으로, 하나는 입력으로 사용해야합니다. 출력에서 비트 0에서 비트 n (7 또는 15)으로 비트를 '보행'하게하면 행렬의 열이됩니다. 다른 한편으로 당신은 지속적으로 입력 값을 읽고 이것들은 행렬의 행입니다. 활성화 된 출력 비트와 '1'의 입력 비트 조합은 누르는 키입니다.
실제로 매트릭스를 생성하는 것이 가장 효과적이며, 매트릭스에 넣을 때마다 다이오드를 추가하는 것을 잊지 마십시오.이 다이오드 (일반 1N4148은 잘 작동합니다)는 양극과 함께 배치해야합니다 스위치에, 음극은 행 라인에. 이 다이오드에서 0.6V의 전압 강하가 문제가되지 않아야하며, 나머지 (3.3V-0.6V) 2.7V는 여전히 논리적 인 '1'이어야합니다.
이 트럭이 다이오드를로드하는 이유는 키의 고스트 및 마스킹과 같은 것을 방지하기 때문입니다. 고 스팅은 세 개 이상의 키를 동시에 누르면 더 많은 행에 논리적 '1'이 있기 때문에 완전히 다른 키로 해석 될 수 있습니다. 마스킹은 여러 키를 눌렀다가 놓은 경우 해당 키의 행이 여전히 논리적 인 '1'이므로 (일부 상황에서) 감지되지 않는 효과입니다.
사진은 고 스팅의 예를 보여줍니다. 버튼 A, B, D가 눌려져 있고 열 1 (버튼 A의 경우) 외에 열 2 (버튼 C의 경우)도 높지만 열 1이 활성화 된 순간 올바르지 않습니다.
전체 하드웨어 모험을 마친 후에는 리눅스에서 키보드를 실제로 사용하려면 커널 드라이버를 작성하거나 수정해야합니다. 좋은 출발점이 링크 될 수 있습니다 TCA6416 I2C IO 확장기에 키 드라이버 이 비슷한 생각이지만, 만 16 키 키패드를 사용합니다.
희망이 조금 도움이되기를 바랍니다.