arduino의 ps/2 keyboard
개요
arduino leonardo에 ps/2 키보드를 연결하고 usb 키보드를 에뮬레이트해 보았다.
 사진
 
 회로도
 
 샘플 코드
#include "ps2.h"
#define PS2_TAB             9
#define PS2_ENTER           13
#define PS2_BACKSPACE       127
#define PS2_ESC             27
#define PS2_INSERT          0
#define PS2_DELETE          127
#define PS2_HOME            0
#define PS2_END             0
#define PS2_SCROLL          0
PS2 kbd(6, 5);
char key[140] = {
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, PS2_TAB, '`', 0,
    0, 0, 0, 0, 0, 'q', '1', 0,
    0, 0, 'z', 's', 'a', 'w', '2', 0,
    0, 'c', 'x', 'd', 'e', '4', '3', 0,
    0, ' ', 'v', 'f', 't', 'r', '5', 0,
    0, 'n', 'b', 'h', 'g', 'y', '6', 0,
    0, 0, 'm', 'j', 'u', '7', '8', 0,
    0, ',', 'k', 'i', 'o', '0', '9', 0,
    0, '.', '/', 'l', ';', 'p', '-', 0,
    0, 0, '\'', 0, '[', '=', 0, 0,
    0, 0, PS2_ENTER, ']', 0, '\\', 0, 0,
    0, 0, 0, 0, 0, 0, PS2_BACKSPACE, 0,
    0, '1', 0, '4', '7', 0, 0, 0,
    '0', '.', '2', '5', '6', '8', PS2_ESC, 0,
    0, '+', '3', '-', '*', '9', PS2_SCROLL, 0,
    0, 0, 0, 0
};
void kbd_init()
{
    char ack;
    kbd.write(0xff);
    ack = kbd.read();
    ack = kbd.read();
}
void setup()
{
    Serial.begin(115200);
    while (!Serial);
    Serial.println("Start");
    kbd_init();
    Keyboard.begin();
    Serial.println("OK");
}
void loop()
{
    unsigned char code;
    for ( ; ; )
    {
        code = kbd.read();
        code = key[code];
        Serial.println(code, HEX);
        Keyboard.print((char) code);
        code = kbd.read();
        code = kbd.read();
    }
}
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(arduino의 ps/2 keyboard), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/ohisama@github/items/acb6ce747edcb09fccb4
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            

회로도
 
 샘플 코드
#include "ps2.h"
#define PS2_TAB             9
#define PS2_ENTER           13
#define PS2_BACKSPACE       127
#define PS2_ESC             27
#define PS2_INSERT          0
#define PS2_DELETE          127
#define PS2_HOME            0
#define PS2_END             0
#define PS2_SCROLL          0
PS2 kbd(6, 5);
char key[140] = {
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, PS2_TAB, '`', 0,
    0, 0, 0, 0, 0, 'q', '1', 0,
    0, 0, 'z', 's', 'a', 'w', '2', 0,
    0, 'c', 'x', 'd', 'e', '4', '3', 0,
    0, ' ', 'v', 'f', 't', 'r', '5', 0,
    0, 'n', 'b', 'h', 'g', 'y', '6', 0,
    0, 0, 'm', 'j', 'u', '7', '8', 0,
    0, ',', 'k', 'i', 'o', '0', '9', 0,
    0, '.', '/', 'l', ';', 'p', '-', 0,
    0, 0, '\'', 0, '[', '=', 0, 0,
    0, 0, PS2_ENTER, ']', 0, '\\', 0, 0,
    0, 0, 0, 0, 0, 0, PS2_BACKSPACE, 0,
    0, '1', 0, '4', '7', 0, 0, 0,
    '0', '.', '2', '5', '6', '8', PS2_ESC, 0,
    0, '+', '3', '-', '*', '9', PS2_SCROLL, 0,
    0, 0, 0, 0
};
void kbd_init()
{
    char ack;
    kbd.write(0xff);
    ack = kbd.read();
    ack = kbd.read();
}
void setup()
{
    Serial.begin(115200);
    while (!Serial);
    Serial.println("Start");
    kbd_init();
    Keyboard.begin();
    Serial.println("OK");
}
void loop()
{
    unsigned char code;
    for ( ; ; )
    {
        code = kbd.read();
        code = key[code];
        Serial.println(code, HEX);
        Keyboard.print((char) code);
        code = kbd.read();
        code = kbd.read();
    }
}
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(arduino의 ps/2 keyboard), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/ohisama@github/items/acb6ce747edcb09fccb4
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
#include "ps2.h"
#define PS2_TAB             9
#define PS2_ENTER           13
#define PS2_BACKSPACE       127
#define PS2_ESC             27
#define PS2_INSERT          0
#define PS2_DELETE          127
#define PS2_HOME            0
#define PS2_END             0
#define PS2_SCROLL          0
PS2 kbd(6, 5);
char key[140] = {
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, PS2_TAB, '`', 0,
    0, 0, 0, 0, 0, 'q', '1', 0,
    0, 0, 'z', 's', 'a', 'w', '2', 0,
    0, 'c', 'x', 'd', 'e', '4', '3', 0,
    0, ' ', 'v', 'f', 't', 'r', '5', 0,
    0, 'n', 'b', 'h', 'g', 'y', '6', 0,
    0, 0, 'm', 'j', 'u', '7', '8', 0,
    0, ',', 'k', 'i', 'o', '0', '9', 0,
    0, '.', '/', 'l', ';', 'p', '-', 0,
    0, 0, '\'', 0, '[', '=', 0, 0,
    0, 0, PS2_ENTER, ']', 0, '\\', 0, 0,
    0, 0, 0, 0, 0, 0, PS2_BACKSPACE, 0,
    0, '1', 0, '4', '7', 0, 0, 0,
    '0', '.', '2', '5', '6', '8', PS2_ESC, 0,
    0, '+', '3', '-', '*', '9', PS2_SCROLL, 0,
    0, 0, 0, 0
};
void kbd_init()
{
    char ack;
    kbd.write(0xff);
    ack = kbd.read();
    ack = kbd.read();
}
void setup()
{
    Serial.begin(115200);
    while (!Serial);
    Serial.println("Start");
    kbd_init();
    Keyboard.begin();
    Serial.println("OK");
}
void loop()
{
    unsigned char code;
    for ( ; ; )
    {
        code = kbd.read();
        code = key[code];
        Serial.println(code, HEX);
        Keyboard.print((char) code);
        code = kbd.read();
        code = kbd.read();
    }
}
                Reference
이 문제에 관하여(arduino의 ps/2 keyboard), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohisama@github/items/acb6ce747edcb09fccb4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)