×÷ΪÈí¼þ¿ª·¢Õߣ¬¼üÅÌ¿ÉÒÔ˵ÊÇÎÒÃÇ×îÇ×ÃܵēÅóÓє֮һ¡£Æµ·±µÄÇû÷¼üÅÌÈö¨ÖƼüÅ̳ÉΪ¼±ÐèÆ·£¬¶øÈí¼þ¹¤³ÌʦLÁSZLÓ MONDAΪÎÒÃÇÏêϸ½éÉÜÁËÆäÖÆ×÷“ÖÕ¼«ºÚ¿Í¼üÅÌ”µÄ¾ßÌå¹ý³Ì¡£
Èí¼þ¹¤³ÌʦLÁSZLÓ MONDAΪÁ˽â¾öÿÌìÆµ·±“±¼×ß”ÓÚ¼üÅ̸÷¿é¼þÖ®¼ä£¬´´½¨ÁË“ÖÕ¼«ºÚ¿Í¼üÅÌ”¡£¸Ã¼üÅÌ·ÖΪ×óÓÒÁ½²¿·Ö£¬ÓµÓÐLEDµÆ£¬¶øÆäÖÐËùÉæ¼°µ½µÄ¾ßÌå¼¼ÊõºÍ¹ý³Ì£¬Äã¿ÉÒÔÔÚ±¾ÎÄÖÐÕÒµ½´ð°¸¡£
ÒÔÏÂΪÒëÎÄ£º
ÔçÔÚ2007Äê8ÔµÄijһÌ칤×÷ÖУ¬ÎÒ²»½ûÒâʶµ½ÆÕͨµÄPC¼üÅÌÎÞ·¨¾¡¿ÉÄܶàµÄÂú×ãÓÚÎÒ£¬Ã¿Ì죬ÎÒµÄÊÖÖ¸²»µÃ²»ÔÚ¼üÅ̸÷¿é¼þ³É°ÙÉÏǧ´ÎµÄ“±¼×ß”£¬ÎÒÏë±ØÐëÒªÓÐÒ»¸öºÜºÃµÄ½â¾ö°ì·¨¡£
µ±ÎÒÏë´´ÔìÒ»¸öÍêÃÀµÄºÚ¿Í¼üÅ̲¢È¥ÊµÏÖËüʱ£¬ÎÒ²ÅÒâʶµ½£¬×÷ΪһÃûÈí¼þ¿ª·¢Õߣ¬ÎÒ¶ÔÓ²¼þÊÇÒ»ÎÞËùÖª¡££¨PS£ºÕâÊǶàôʹµÄÁìÎò£©
ÎÒÉ跨ȥѧϰһ¸öȫеļ¼ÄÜ£¬Í¬Ê±Ëµ·þÎÒһλ½Ü³öµÄ»úе¹¤³ÌʦÅóÓÑAndrás V?lgyi¼ÓÈëµ½ÖÆ×÷¼üÅ̵ÄÏîÄ¿ÖУ¬²¢Í¶Èë×ã¹»µÄʱ¼ä´´½¨¹¤×÷ÔÐÍ¡£Èç½ñ£¬“ÖÕ¼«ºÚ¿Í¼üÅÌ”ÒѾ³ÉΪÏÖʵ¡£
¶ÔÓÚûÓÐÈκεç×Ó֪ʶµÄÈí¼þ±³¾°£¬Éè¼ÆºÍ¹¹½¨Ò»¸öÇ¿´óµÄÓ²¼þÉ豸ÊÇÒ»¸öÓÐȤºÍÃÔÈ˵ľÑ飬ÔÚ±¾ÎÄÖÐÎÒ½«ÃèÊöÕâ¸öµç×Ó½Ü×÷ÊÇÈçºÎ¹¤×÷µÄ¡£¶Ôµç×ÓÏß·ͼÓлù±¾Á˽âµÄÄã¿ÉÒÔ¸üÈÝÒ×µÄÀí½â¡£

ÈçºÎÈ¥¹¹½¨Ò»¸ö¼üÅÌ
µÚÒ»²½£ºÃ»ÓмüµÄ¼üÅÌ
Ê×ÏÈÈÃÎÒÃÇ×öÒ»¸ö·¢³öx×Ö·û£¨»ùÓÚÿÃëÒ»´Î£©µÄUSB¼üÅÌ£¬Arduino Micro¿ª·¢°åÊÇʵÏÖ¸ÃÄ¿±êµÄÒ»¸ö²»´íµÄÑ¡Ôñ£¬ÒòΪËüµÄ¹¦ÄÜATmega32U4microcontroller£¨Ò»ÖÖAVR microcrontroller£©ºÍÏàͬµÄ´¦ÀíÆ÷ÊÇUHKµÄ´óÄÔ¡£

˵µ½USB-capable AVR microcontrollers£¬ÓÃÓÚAVR£¨LUFA£©µÄÇáÁ¿¼¶USB¿ò¼ÜÊÇ¿âµÄÑ¡Ôñ¡£ËüʹµÃÕâЩ´¦ÀíÆ÷³ÉΪ´òÓ¡»ú¡¢MIDIÉ豸¡¢¼üÅÌ»òÈÎºÎÆäËûUSBÉ豸ÀàÐ͵ē´óÄÔ”¡£
µ±É豸²åÈëUSB¶Ë¿Úʱ£¬É豸»á´«µÝһЩ±»³ÆÎªUSBÃèÊö·ûµÄÌØÊâÊý¾Ý½á¹¹¡£ÕâЩÃèÊö·û»á¸æÖªÖ÷»úËùÁ¬½ÓÉ豸µÄÀàÐͺÍÐÔÖÊ£¬²¢ÓÉÒ»¸öÊ÷½á¹¹±íʾ¡£Ò»¸öÉ豸¿ÉÒÔʵÏֵIJ»Ö¹Ò»¸öº¯Êý£¬¶øÊǶà¸ö¡£ÕâÈÃÊÂÇé¸ü¼Ó¸´ÔÓ¡£ÈÃÎÒÃÇ¿´¿´UHKÃèÊö·ûµÄ½á¹¹£º

´ó¶àÊý¼üÅÌÖ»±©Â¶µ¥Ò»µÄ¼üÅ̽ӿÚÃèÊö·û£¬ÕâÊÇÓеÀÀíµÄ¡£È»¶øUHKÒ²»á±©Â¶Êó±ê½Ó¿ÚÃèÊö·û£¬ÒòΪÓû§¿ÉÒÔÖ¸Áî¼üÅ̵ÄÈÎÒâ¼üÀ´¿ØÖÆÊó±êÖ¸Õ룬ËùÒÔ¼üÅÌ¿ÉÒÔµ±×÷Êó±êʹÓá£GenericHID½Ó¿Ú·þÎñÏ൱ÓÚÒ»¸öΪËùÓÐÌØÐÔ¼üÅ̽»»»ÅäÖÃÐÅÏ¢µÄͨÐÅͨµÀ¡£
ÏÖÔÚÎÒÃÇÒѾ´´½¨ÁËÃèÊö·û£¬ÏÂÃæ´úÂëÔòÑÝʾÁËÆäÿÃëÒ»´Î·¢ËÍx×Ö·û£º

USBÊÇÒ»ÖÖ²éѯÐÒ飬ÕâÒâζ×ÅÖ÷»ú¶¨ÆÚ¼ä¸ô£¨Í¨³£ÊÇ125´Î/s£©²éѯÉ豸£¬ÒÔ´ËÀ´ÕÒ³öÊÇ·ñÓÐÈκÎеÄÊý¾Ý·¢ËÍ¡£Óë´ËÏà¹ØµÄ»Øµ÷ÊÇCALLBACK_HID_Device_CreateHIDReport()º¯Êý£¬ÔÚisSecondElapsed±äÁ¿Îª1Çé¿öÏÂÏòÖ÷»ú·¢ËÍx×Ö·ûµÄɨÃèÂ룬isSecondElapsedÔÚÿÃëµÄ»ù´¡ÉÏÑ»·µÄÉèÖÃΪ1£¬»Øµ÷ʱÉèÖÃΪ0¡£
µÚ¶þ²½£ºËĸö¼üµÄ¼üÅÌ
ÔÚÕâÒ»µãÉÏÎÒÃǵļüÅ̲»ÊǷdz£ÓÐÓõģ¬Èç¹ûÎÒÃÇÔÚÕâÉÏÃæ×÷³öʵ¼ÊÀà±ð£¬ÄÇÑù»áºÜºÃ¡£Îª´ËÎÒÃÇÐèҪһЩ¼ü£¬ÕâЩ¼üÐè±»ÖÃÈëÒ»¸ö¼üÅ̾ØÕó¡£Ò»¸öÈ«³ß´çµÄ104¼ü¼üÅÌ¿ÉÒÔÓÐ18ÁÐ6ÐУ¬¶øÎÒÃDZØÐë°ÑËü¼ò»¯Îª2x2µÄ¼üÅ̾ØÕó£¬ÕâÊÇʾÒâͼ£º

ËüÔÚ¿ª·¢°åÉÏÊÇÕâÑù³ÊÏֵģº

¼ÙÉèROW1Á¬½ÓPINA0¡¢ROW2Á¬½ÓPINA1¡¢COL1Á¬½ÓPORTB0ÒÔ¼°COL2Á¬½ÓPORTB1£¬ÄÇôɨÃè´úÂë»áÊÇÕâÑù£º

´úÂëÒ»´ÎɨÃèÒ»ÁУ¬²¢¶ÁÈ¡¸öÈ˼ü¿ª¹ØµÄ״̬£¬È»ºó½«ÕâÖÖ״̬±£´æµ½Ò»¸öÊý×éÖУ¬Í¨¹ýÎÒÃÇǰÎÄËù˵µÄCALLBACK_HID_Device_CreateHIDReport()º¯Êý£¬Ïà¹ØµÄɨÃè´úÂ뽫·¢ËÍÕâЩ»ùÓÚÊý×éµÄ״̬¡£
µÚÈý²½£ºÒ»¸ö¼üÅÌÁ½¸ö²¿·Ö
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇÒѾ¹¹½¨ÁËÒ»¸öÆÕͨ¼üÅ̵Ŀª¶Ë¡£µ«ÊÇÎÒÃǵÄÄ¿±êÊÇÏȽøµÄÈËÌ幤³Ìѧ£¬¼øÓÚÈ˶¼ÓÐÁ½Ö»ÊÖ£¬ÎÒÃÇ×îºÃÌí¼ÓÁíÒ»°ë¼üÅÌ¡£
ÁíÒ»°ëµÄ¼üÅ̽«¾ßÓÐÁíÒ»¸ö¼üÅ̾ØÕó£¬Öظ´Ö®Ç°µÄ²½Öè¡£¶øÆäÖÐÁîÈËÐ˷ܵÄÊÇÁ½²¿·Ö¼üÅÌÖ®¼äµÄͨÐÅ£¬ÕâÀïÓÐÈý¸ö×îÊÜ»¶ÓµÄµç×ÓÉ豸»¥Á¬ÐÒ飺SPI¡¢I2CºÍUART¡£ÔÚʵ¼Êµ±ÖУ¬ÎÒÃÇ»áÔÚÕâÖÖÇé¿öÏÂÓõ½UART£º

UARTÐèҪͬÐÐʹÓÃÏàͬµÄ²¨ÌØÂÊ¡¢Êý¾ÝλºÍֹͣλ¡£ÏÖÔÚ×ó¼üÅÌͨ¹ýUART½«Ò»¸ö×Ö½ÚµÄÐÅÏ¢·¢Ë͵½ÓÒ¼üÅÌ£¬ÒÔ´Ë´ú±í°´Ï¼ü»òÊͷżü£¬ÓÒ¼üÅ̶ÔÕâЩÐÅÏ¢½øÐаë¼Ó¹¤²¢ÔÚÏàÓ¦µÄÄÚ´æÖжÔÕâЩȫ¼üÅ̾ØÕóÊý×éµÄ״̬½øÐвÙ×÷¡£
×ó¼üÅÌ·¢ËÍÐÅϢʾÀý£º

ÓÒ¼üÅ̽ÓÊÜÐÅÏ¢ÈçÏ£º

KeyboardRxCallback()Öжϴ¦Àí³ÌÐò»áÔÚÒ»¸ö×Ö½Úͨ¹ýUART±»½ÓÊÕʱ´¥·¢£¬¿¼Âǵ½Öжϴ¦Àí³ÌÐòÓ¦¸Ã¾¡¿ìÖ´ÐУ¬ËùÒÔÊÕµ½µÄÐÅÏ¢»á·Åµ½Ò»¸ö»·ÐεĻº³åÇøÁô´ýºóÃæ´¦Àí¡£»·Ðλº³åÇø×îÖջᱻÖ÷Ñ»·´¦Àí£¬¼üÅ̾ØÕóÒ²»á»ùÓÚÐÅÏ¢¶ø±»¸üС£
ÉÏÃæËù˵µÄÊÇʵÏָõãµÄ×î¼òµ¥µÄ·½·¨£¬µ«ÊÇ×îÖÕµÄÐÒéÒª¸ü¼Ó¸´ÔÓ¡£ÄãÐèÒª¿¼ÂǶà×Ö½ÚÐÅÏ¢µÄ´¦Àí£¬¶øÇÒ¸öÈËÐÅϢҲҪͨ¹ýCRC-CCITTУÑéÀ´¼ì²éÆäÍêÕûÐÔ¡£
ÔÚÕâÒ»µãÉÏ£¬ÎÒÃǵÄʵÑé°åÄ£ÐÍ»òÐí»áÈÃÄãÓ¡ÏóÉî¿Ì£º

µÚËIJ½£ºÂú×ãLEDÏÔʾÆÁ
ÕâÊÇΪÁËÈÃÓû§Äܹ»¶¨Òå¶à¸öÌØ¶¨ÓÚÓ¦ÓõļüÓ³ÉäÀ´Ìá¸ßÉú²úЧÂÊ¡£Óû§ÐèÒªÒâʶµ½Ò»Ð©Õý±»ÓÃÓÚ¼üÓ³ÉäµÄ·½Ê½£¬Ò»¸ö¼¯³ÉµÄLEDÏÔʾÆÁ±»¹¹½¨ÓÚ¼üÅÌÄÚ£¬ÏÂͼչʾÁËÕâÖÖÄ£ÐÍ£º

LEDÏÔʾÊÇÓÉÒ»¸ö8x6¾ØÕóʵÏֵģº

ÿÁ½ÐкìÉ«LED·ûºÅ´ú±í14-segment LEDÏÔʾµÄ·Ö¶Î£¬°×É«LED·ûºÅÔò´ú±íÁ˶îÍâµÄÈý¸ö״ָ̬±ê¡£
ͨ¹ýLEDÇý¶¯µçÁ÷²¢Ê¹ÆäÁÁÆðÀ´£¬ÏàÓ¦µÄÁÐÉèΪ¸ßµçѹ£¬ÏàÓ¦µÄÐÐÉèΪµÍµçѹ¡£¸Ãϵͳһ¸öÓÐȤµÄ½á¹ûÊÇ£¬ÔÚÈκθø¶¨µÄʱ¿Ì£¬Ö»ÓÐÒ»ÁÐÊÇ¿ÉÒÔ±»ÆôÓõ쬶øÆäËûÁÐÊDZ»½ûÓõġ£ÓÐÈË¿ÉÄÜ»áÈÏΪÕâÌ×ϵͳ²»Äܹ¤×÷ÓÚÕû¸öLED£¬µ«ÊÇÔÚÏÖʵÖУ¬ÁкÍÐиüеÄÌ«¿ìÒÔÖÁÓÚÆ¾È˵ÄÈâÑÛÎÞ·¨¿´µ½Ã÷ÏÔµÄÉÁ˸¡£
LED¾ØÕóÓÉÁ½¸ö¼¯³Éµç·£¨IC£©Çý¶¯£¬Ò»¸öÇý¶¯ÐУ¬Ò»¸öÇý¶¯ÁУ¬Çý¶¯ÁеÄÔ´ICÊÇPCA9634 I2C LEDÇý¶¯£º

Çý¶¯ÐеÄΪTPIC6C595£º

ÈÃÎÒÃÇ¿´ÏÂÏà¹Ø´úÂ룺

LedMatrix_UpdateNextRow()½«ÒÔÿºÁÃëµÄËٶȱ»µ÷Ó㬸üÐÂLED¾ØÕóµÄÒ»ÐУ¬LedMatrixÊý×é´æ´¢µ¥¸öLEDµÆµÄ״̬£¬×´Ì¬ÐÅÏ¢Ô´ÓÚͨ¹ýUARTµÄ°´/Êͼüʼþ¡£
ÕûÌåÇé¿ö
µ½ÕâÀïÎÒÃÇÒѾÖð²½Îª×Ô¼ºµÄ¼üÅ̽¨Á¢ÁËËùÓеıØÐè×é¼þ¡£ÏÖÔÚÐèÒª´ÓÈ«¾Ö³ö·¢£¬¼üÅ̵ÄÄÚ²¿¾ÍÏñÒ»¸ö΢ÐͼÆËã»úÍøÂ磺´óÁ¿½ÚµãÏ໥Á¬½Ó¡£Ëù²»Í¬µÄÊDzâÁ¿½ÚµãÖ®¼äµÄ¾àÀë²»ÊÇÃ×»ò¹«À¶øÊÇÀåÃ×£¬²¢Çҽڵ㲻ÊdzÉÊìµÄ¼ÆËã»ú£¬¶øÊÇ΢Ð͵ļ¯³Éµç·¡£

µ«Êǵ½Ä¿Ç°ÎªÖ¹ËµµÄ´ó¶à¶¼ÊǼüÅÌ×°Ö÷½ÃæµÄϸ½Ú£¬¹ØÓÚUHK´úÀíÌáµÄ²»¶à¡£UHK´úÀíÊÇÅäÖÃÆ÷Ó¦Óã¬Í¨¹ý¼üÅÌÀ´Âú×ãÓû§µÄ×Ô¶¨ÒåÐèÇ󡣿ÉÒÔ¼ûÓÚ϶δúÂ룺

ÿһ¸öÃüÁî¶¼ÓÐÒ»¸ö8×Ö½Ú±êʶ·ûºÍÒ»×écommand-specific²ÎÊý¡£Ä¿Ç°£¬Ö»ÓÐre-enumerateÃüÁʵÏÖ£¬sendReenumerateCommand()ʹÉ豸×÷Ϊ×ó/ÓÒÒýµ¼×°ÔسÌÐòÖØÐÂ×°Öã¬ÒÔ´ËÀ´Éý¼¶¹Ì¼þ»ò±äΪһ¸ö¼üÅÌÉ豸¡£
´´½¨ÔÐÍ
Ò»ÇÐÖÆÔì֮ǰ¶¼ÐèÒªÓÐÒ»¸öCADÉè¼Æ£º

3D´òÓ¡µÄ¼üÅÌ»áÊÇÕâ¸öÑù×Ó£º

»ùÓÚ»úеÉè¼ÆºÍÔÀí¡¢Ó¡Ë¢µç·°åÉè¼Æ¡£ÓҰ벿·ÖµÄPCBÔÚKiCadÖлáÊÇÕâÑù£º

PCB±íÃæÌù×°×é¼þ±ØÐëÊÖ¹¤º¸½Ó£º

×îºó¾¹ý3DÓ¡Ë¢¡¢Å׹⡢×é×°µÈ£¬ÎÒÃÇ»áµÃµ½ÕâÑùÒ»¸öÔÐÍ£º

½áÂÛ
ÕâÊÇÒ»¸öºÜ¹ã·ºµÄ»°Ì⣬×÷ΪITÈËÔ±£¬¼üÅÌ¿ÉÒÔ˵ÊÇÎÒÃÇ×îÇ×ÃܵēÅóÓє֮һ¡£²»ÖªµÀÄú¿´ÍêÖ®ºóÊÇ·ñ»áÓÐ×Ô¼ºµÄÏë·¨ÄØ£¿ÊÇ·ñ»áÓÐ×öÒ»¸öµÄ³å¶¯£¿Èç¹ûÓпÕÏеϰ£¬ÊÔ×ÅÈ¥³¢ÊÔһЩ£¬À´Ò»³¡“˵×ö¾Í×öµÄÈÎÐÔ”£¡
|