{"id":1651,"date":"2019-05-01T14:21:37","date_gmt":"2019-05-01T12:21:37","guid":{"rendered":"http:\/\/entropie.org\/3615\/?p=1651"},"modified":"2019-05-02T07:22:00","modified_gmt":"2019-05-02T05:22:00","slug":"clavier-ps-2-et-arduino-sans-bibliotheque-dediee","status":"publish","type":"post","link":"https:\/\/entropie.org\/3615\/index.php\/2019\/05\/01\/clavier-ps-2-et-arduino-sans-bibliotheque-dediee\/","title":{"rendered":"Clavier PS\/2 et Arduino (sans biblioth\u00e8que d\u00e9di\u00e9e)"},"content":{"rendered":"<p><strong>Le montage :<\/strong><\/p>\n<p><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Port_PS\/2\" rel=\"noopener noreferrer\" target=\"_blank\">Port PS\/2<\/a><br \/>\nBroche 1 (data) => Broche 4 de l&rsquo;Arduino<br \/>\nBroche 2 (non connect\u00e9)<br \/>\nBroche 3 => GND de l&rsquo;Arduino<br \/>\nBroche 4 => 5V de l&rsquo;Arduino<br \/>\nBroche 5 (clock) => Broche 3 de l&rsquo;Arduino<br \/>\nBroche 6 (non connect\u00e9)<\/p>\n<p><strong>Le code Arduino :<\/strong><\/p>\n<pre>\r\n<font color=\"#434f54\">&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;<\/font>\r\n\r\n<font color=\"#00979c\">const<\/font> <font color=\"#00979c\">int<\/font> <font color=\"#ffffff\">DATA_PIN<\/font> <font color=\"#434f54\">=<\/font> <font color=\"#ffffff\">4<\/font><font color=\"#ffffff\">;<\/font>\r\n<font color=\"#00979c\">const<\/font> <font color=\"#00979c\">int<\/font> <font color=\"#ffffff\">CLOCK_PIN<\/font> <font color=\"#434f54\">=<\/font> <font color=\"#ffffff\">3<\/font><font color=\"#ffffff\">;<\/font>\r\n\r\n<font color=\"#434f54\">&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;<\/font>\r\n\r\n<font color=\"#00979c\">void<\/font> <font color=\"#5e6d03\">setup<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">)<\/font> <font color=\"#ffffff\">{<\/font>\r\n &nbsp;<font color=\"#d35400\">pinMode<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">DATA_PIN<\/font><font color=\"#434f54\">,<\/font> <font color=\"#00979c\">INPUT<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#434f54\">&#47;&#47; C&#39;est le clavier qui g\u00e9n\u00e8re l&#39;horloge de synchronisation<\/font>\r\n &nbsp;<font color=\"#d35400\">pinMode<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#434f54\">,<\/font> <font color=\"#00979c\">INPUT<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<b><font color=\"#d35400\">Serial<\/font><\/b><font color=\"#434f54\">.<\/font><font color=\"#d35400\">begin<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">9600<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n<font color=\"#ffffff\">}<\/font>\r\n\r\n<font color=\"#434f54\">&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;<\/font>\r\n\r\n<font color=\"#00979c\">void<\/font> <font color=\"#5e6d03\">loop<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">)<\/font> <font color=\"#ffffff\">{<\/font>\r\n &nbsp;<b><font color=\"#d35400\">Serial<\/font><\/b><font color=\"#434f54\">.<\/font><font color=\"#d35400\">println<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">dataRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">)<\/font><font color=\"#434f54\">,<\/font><font color=\"#00979c\">HEX<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n<font color=\"#ffffff\">}<\/font>\r\n\r\n<font color=\"#434f54\">&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;<\/font>\r\n\r\n<font color=\"#00979c\">int<\/font> <font color=\"#ffffff\">dataRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">)<\/font> <font color=\"#ffffff\">{<\/font> <font color=\"#434f54\">&#47;&#47; La trame est de 11 bits<\/font>\r\n<font color=\"#95a5a6\">&#47;*<\/font>\r\n<font color=\"#95a5a6\"> &nbsp;Si la pression est maintenue, le code est envoy\u00e9 environ toutes<\/font>\r\n<font color=\"#95a5a6\"> &nbsp;les 100 ms (make code). Quand la touche est relach\u00e9e, le clavier<\/font>\r\n<font color=\"#95a5a6\"> &nbsp;envoie le code F0 suivi du code de la touche relach\u00e9e (break<\/font>\r\n<font color=\"#95a5a6\"> &nbsp;code), sauf pour quelques touches particuli\u00e8res (voir le fichier<\/font>\r\n<font color=\"#95a5a6\"> &nbsp;PDF correspondant ci-dessous).<\/font>\r\n<font color=\"#95a5a6\">*&#47;<\/font>\r\n &nbsp;<font color=\"#00979c\">byte<\/font> <font color=\"#ffffff\">data<\/font> <font color=\"#434f54\">=<\/font> <font color=\"#ffffff\">0<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">DATA_PIN<\/font><font color=\"#ffffff\">)<\/font> <font color=\"#434f54\">&amp;&amp;<\/font> <font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#434f54\">&#47;&#47; 1 bit de start : La ligne de transmission des donn\u00e9es est<\/font>\r\n &nbsp;<font color=\"#434f54\">&#47;&#47; pass\u00e9e au niveau bas et un signal d&#39;horloge est engendr\u00e9 :<\/font>\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#434f54\">!<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#434f54\">&#47;&#47; 8 bits de donn\u00e9es (bit de poids faible (LSB) en premier)<\/font>\r\n &nbsp;<font color=\"#5e6d03\">for<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#00979c\">int<\/font> <font color=\"#ffffff\">d<\/font><font color=\"#434f54\">=<\/font><font color=\"#ffffff\">0<\/font><font color=\"#ffffff\">;<\/font> <font color=\"#ffffff\">d<\/font><font color=\"#434f54\">&lt;=<\/font><font color=\"#ffffff\">7<\/font><font color=\"#ffffff\">;<\/font> <font color=\"#ffffff\">d<\/font><font color=\"#434f54\">++<\/font><font color=\"#ffffff\">)<\/font> <font color=\"#ffffff\">{<\/font>\r\n &nbsp;&nbsp;&nbsp;<font color=\"#434f54\">&#47;&#47; Les donn\u00e9es sont valables sur le front descendant<\/font>\r\n &nbsp;&nbsp;&nbsp;<font color=\"#434f54\">&#47;&#47; du signal d&#39;horloge<\/font>\r\n &nbsp;&nbsp;&nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;&nbsp;&nbsp;<font color=\"#ffffff\">data<\/font> <font color=\"#434f54\">=<\/font> <font color=\"#ffffff\">data<\/font> <font color=\"#434f54\">|<\/font> <font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">DATA_PIN<\/font><font color=\"#ffffff\">)<\/font> <font color=\"#434f54\">&lt;&lt;<\/font> <font color=\"#ffffff\">d<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;&nbsp;&nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#434f54\">!<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#ffffff\">}<\/font>\r\n &nbsp;<font color=\"#434f54\">&#47;&#47; 1 bit de parit\u00e9<\/font>\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#434f54\">!<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#434f54\">&#47;&#47; 1 bit de stop<\/font>\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r\n &nbsp;<font color=\"#5e6d03\">while<\/font> <font color=\"#ffffff\">(<\/font><font color=\"#434f54\">!<\/font><font color=\"#d35400\">digitalRead<\/font><font color=\"#ffffff\">(<\/font><font color=\"#ffffff\">CLOCK_PIN<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">)<\/font><font color=\"#ffffff\">;<\/font>\r\n &nbsp;<font color=\"#5e6d03\">return<\/font> <font color=\"#ffffff\">data<\/font><font color=\"#ffffff\">;<\/font>\r\n<font color=\"#ffffff\">}<\/font>\r\n\r\n<font color=\"#434f54\">&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;<\/font>\r\n<\/pre>\n<p><strong>Les codes obtenus avec le programme Arduino ci-dessus :<\/strong><\/p>\n<p><a href=\"http:\/\/entropie.org\/3615\/wp-content\/uploads\/2019\/05\/Clavier-PS2.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">Clavier PS\/2<\/a> (fichier PDF)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le montage : Port PS\/2 Broche 1 (data) => Broche 4 de l&rsquo;Arduino Broche 2 (non connect\u00e9) Broche 3 => GND de l&rsquo;Arduino Broche 4 => 5V de l&rsquo;Arduino Broche 5 (clock) => Broche 3 de l&rsquo;Arduino Broche 6 (non connect\u00e9) Le code Arduino : &#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47;&#47; const int DATA_PIN = 4; const int CLOCK_PIN = &hellip; <a href=\"https:\/\/entropie.org\/3615\/index.php\/2019\/05\/01\/clavier-ps-2-et-arduino-sans-bibliotheque-dediee\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Clavier PS\/2 et Arduino (sans biblioth\u00e8que d\u00e9di\u00e9e)&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,5],"tags":[],"class_list":["post-1651","post","type-post","status-publish","format-standard","hentry","category-arduino","category-tutoriels"],"_links":{"self":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts\/1651"}],"collection":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/comments?post=1651"}],"version-history":[{"count":12,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts\/1651\/revisions"}],"predecessor-version":[{"id":1663,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/posts\/1651\/revisions\/1663"}],"wp:attachment":[{"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/media?parent=1651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/categories?post=1651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/entropie.org\/3615\/index.php\/wp-json\/wp\/v2\/tags?post=1651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}