{"id":511,"date":"2017-11-25T15:00:10","date_gmt":"2017-11-25T14:00:10","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=511"},"modified":"2017-12-30T19:40:17","modified_gmt":"2017-12-30T18:40:17","slug":"83-keymatrix-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=511","title":{"rendered":"83-KeyMatrix-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=509\" title=\"82-OLED_SSD1331-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 82-OLED_SSD1331-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=513\" title=\"84-SPI_LIS3DSH-Library (STM32F4)\">84-SPI_LIS3DSH-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Hier eine Library mit der man eine Tastenfeld das als X\/Y-Matrix aufgebaut ist an den STM32F4 anschlie\u00dfen kann.<\/p>\n<p>Es spielt keine Rolle wie die Anordnung der Tasten-Matrix ist (3\u00d73, 4\u00d73, 2\u00d75 usw).<br \/>\nEs werden auch keine externen Dioden oder PullUps ben\u00f6tigt.<\/p>\n<p>Im H-File wird die Gr\u00f6\u00dfe der Tastatur-Matrix eingestellt (im Beispiel 3\u00d74)<br \/>\nund im C-File werden die GPIO-Pins der X- und Y-Richtung zugeordnet.<\/p>\n<p>Es gibt eine Funktion um die gedr\u00fcckte Taste auszulesen, diese liefert als R\u00fcckgabewert \u201c0\u2033 falls gar keine Taste gedr\u00fcckt ist. Falls eine Taste (oder mehrere) gedr\u00fcckt sind, wird die Tasten-Nummer der ersten gefundenen Taste zur\u00fcckgeliefert. (Im Beispiel 1 bis 12)<\/p>\n<p>Zum entprellen der Tasten wird kein Timer sondern nur ein Schleifenz\u00e4hler benutzt.<br \/>\n(dieser muss event. bei euch angepasst werden)<\/p>\n<p><em>Hinweis : falls der R\u00fcckgabewert &gt;0 ist auch wenn gar keine Tastatur angeschlossen ist, m\u00fcssen an die Y-Leitungen externe PullUps (4k7) angebracht werden.<\/em><\/p>\n<p><strong>Bilder :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/05\/keymatrix.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3906\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/05\/keymatrix-300x179.jpg\" alt=\"keymatrix\" width=\"300\" height=\"179\" \/><\/a><\/p>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_KeyMatrix_Init(void);    \/\/ zum init der Tastatur-Matrix\r\nuint8_t UB_KeyMatrix_Scan(void); \/\/ zum auslesen der gedrueckten Taste<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 02.05.2014\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der Key-Matrix-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_keymatrix.h\"\r\n#include \"stm32_ub_led.h\"\r\n\r\nint main(void)\r\n{\r\n  uint8_t key_value;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init der LEDs\r\n  UB_Led_Init();\r\n\r\n  \/\/ init der Tastatur-Matrix\r\n  UB_KeyMatrix_Init();\r\n\r\n  while(1)\r\n  {\r\n    \/\/ Tastatur-Matrix abfragen\r\n    key_value=UB_KeyMatrix_Scan();\r\n    \/\/ LEDs je nach Tasten-Nr schalten\r\n    if(key_value==1) UB_Led_On(LED_GREEN); else UB_Led_Off(LED_GREEN);\r\n    if(key_value==2) UB_Led_On(LED_RED); else UB_Led_Off(LED_RED);\r\n    if(key_value==3) UB_Led_On(LED_BLUE); else UB_Led_Off(LED_BLUE);\r\n    if(key_value==4) UB_Led_On(LED_ORANGE); else UB_Led_Off(LED_ORANGE);\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/05\/ub_stm32f4_key_matrix_v100.zip\">ub_stm32f4_key_matrix_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/05\/Demo_83_KEY_Matrix.zip\">Demo_83_KEY_Matrix<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hier eine Library mit der man eine Tastenfeld das als X\/Y-Matrix aufgebaut ist an den STM32F4 anschlie\u00dfen kann. Es spielt keine Rolle wie die Anordnung der Tasten-Matrix ist (3\u00d73, 4\u00d73, 2\u00d75 usw). Es werden auch keine externen Dioden oder PullUps &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=511\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":83,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[16,66,9,7],"class_list":["post-511","page","type-page","status-publish","hentry","category-stm32f4","tag-key","tag-keyboard","tag-library","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=511"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/511\/revisions"}],"predecessor-version":[{"id":1622,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/511\/revisions\/1622"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}