{"id":945,"date":"2020-10-20T17:30:33","date_gmt":"2020-10-20T15:30:33","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=945"},"modified":"2025-08-02T14:18:58","modified_gmt":"2025-08-02T12:18:58","slug":"keyboard-3-x-4","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2020\/10\/20\/keyboard-3-x-4\/","title":{"rendered":"Toetsenbord 3 x 4"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">Bij wat complexere projecten wordt wel eens gevraagd om een pincode of andere data in te voeren. Denk aan een beveiligingsconsole, toegangscontrole of het indrukken van de combinatie *99# voor het forceren van een reboot. Hiervoor zijn verschillende numerieke toetsenborden te koop zoals een 3x4 numeriek toetsenbord. <\/pre>\n\n\n\n<p>In dit stappenplan sluiten we een numeriek toetsenbord 3\u00d74 aan op de Raspberry Pi en lezen we het uit met behulp van een Python script.<\/p>\n\n\n\n<p>De methode die we hiervoor gebruiken is erg basic. We gebruiken per rij\/kolom van het keypad \u00e9\u00e9n GPIO poort, wat niet erg effici\u00ebnt is.<\/p>\n\n\n\n<p>Een betere, maar zeker niet de eenvoudigste methode is gebruik te maken van een I\/O Expander, zoals de MCP23008 (I2C). Het alternatief hiervoor is de MCP23S08 (SPI), waardoor er meer vrije GPIO&#8217;s beschikbaar blijven. &nbsp;Voor nu gaan we voor de eenvoudige methode en gebruiken we 7 GPIO headers.<\/p>\n\n\n\n<p><strong>De matrix<\/strong><br>De matrix van het toetsenbord is als volgt opgebouwd; er zijn 3 kolommen en 4 rijen. De kruising van beide wordt door een numerieke toets verbonden. De aansluitingen (1 \u2013 7) komen overeen met de pinnen van het toetsenbord. De buitenste twee soldeereilanden zijn niet aangesloten, we beginnen de telling bij het tweede gat. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"376\" height=\"102\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/11\/image-11.png\" alt=\"\" class=\"wp-image-1368\" style=\"width:266px;height:72px\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/11\/image-11.png 376w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/11\/image-11-300x81.png 300w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/><\/figure>\n<\/div>\n\n\n<p>Onderstaande tabel geeft aan welke pinnen met elkaar verbonden worden indien een toets ingedrukt wordt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"380\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/tabel-keyboard.png\" alt=\"\" class=\"wp-image-949\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/tabel-keyboard.png 819w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/tabel-keyboard-300x139.png 300w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/tabel-keyboard-768x356.png 768w\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" \/><\/figure>\n\n\n\n<p>Uit bovenstaande informatie kunnen we het volgende constateren:<br>&#8211; Kolommen 1, 2, 3 zijn resp. pinnen 3, 1, 5<br>&#8211; Rijen 1, 2, 3, 4, zijn resp. pinnen 2, 7, 6, 4<\/p>\n\n\n\n<p><strong>Aansluittabel<\/strong><br>Het toetsenbord kun je volgens de onderstaande tabel aansluiten op de GPIO interface van de Raspberry Pi. Deze komt overeen zoals de GPIO pinnen in het Python script. De pinnen van het toetsenbord zijn genummerd van links naar rechts met de toetsen naar de voorzijde geplaatst.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"564\" height=\"320\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/keyboard-tabel.png\" alt=\"\" class=\"wp-image-950\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/keyboard-tabel.png 564w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/keyboard-tabel-300x170.png 300w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Python Script<\/h2>\n\n\n\n<p>Je kunt het script dat de toetsen uitleest downloaden met behulp van het <span class=\"has-inline-color has-vivid-cyan-blue-color\">wget<\/span> commando:<\/p>\n\n\n\n<p><span class=\"has-inline-color has-vivid-cyan-blue-color\"><code>wget https:\/\/raspberrytips.nl\/files\/keypad.py<\/code><\/span><\/p>\n\n\n\n<p>Start het Python script met:<\/p>\n\n\n\n<p><span class=\"has-inline-color has-vivid-cyan-blue-color\"><code>python keypad.py<\/code><\/span><\/p>\n\n\n\n<p>Nadat het Python script is gestart kun je op de toetsen van het bord drukken, in het scherm zal de bijbehorende waarde worden weergegeven.<br>De toets die op het bord wordt ingedrukt wordt in het script opgeslagen in de variabele digit na het uitvoeren van <span class=\"has-inline-color has-vivid-cyan-blue-color\">kp.getKey()<\/span>:<\/p>\n\n\n\n<p><span class=\"has-inline-color has-vivid-cyan-blue-color\"><code>digit = kp.getKey()<\/code><\/span><\/p>\n\n\n\n<p>Je kunt de variabele digit gebruiken om deze toe te voegen aan een nieuwe reeks en er daarna een controle op uitvoeren. In het voorbeeld script wordt alleen de waarde van de variabele digit via het print commando op het scherm weergegeven.<\/p>\n\n\n\n<p><em>Veel succes!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Bij wat complexere projecten wordt wel eens gevraagd om een pincode of andere data in te voeren. Denk aan een beveiligingsconsole, toegangscontrole of het indrukken <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2020\/10\/20\/keyboard-3-x-4\/\" title=\"Toetsenbord 3 x 4\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":947,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2020\/10\/keyboard1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=945"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/945\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/947"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}