{"id":2774,"date":"2024-06-19T13:48:32","date_gmt":"2024-06-19T10:48:32","guid":{"rendered":"https:\/\/www.mikrobotik.com\/wp2\/?p=2774"},"modified":"2024-06-19T13:51:40","modified_gmt":"2024-06-19T10:51:40","slug":"arduino-ya-ps2-turkce-klavye-baglama","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2024\/06\/19\/arduino-ya-ps2-turkce-klavye-baglama\/","title":{"rendered":"Arduino ya PS2 T\u00dcRK\u00c7E KLAVYE BA\u011eLAMA"},"content":{"rendered":"<p>Daha \u00f6nce ESP32 ile USB kablosuz HID klavye yaz\u0131m\u0131 yazm\u0131\u015ft\u0131m.<br \/>\n<strong><a href=\"https:\/\/www.mikrobotik.com\/wp2\/2024\/05\/01\/esp32-wroom-32u-kablosuz-ble-klavye\/\" target=\"_blank\" rel=\"noopener\">ESP32_USB HID KLAVYE yaz\u0131m buradad\u0131r.\u00a0<\/a><\/strong><\/p>\n<p>Bu yaz\u0131mda ise Arduino ya ps2 klavye ba\u011flayarak nas\u0131l kullanabiliriz bunu anlataca\u011f\u0131m.<br \/>\nArduino UNO NANO gibi kartlar, HID \u00f6zellikli HOST \u00f6zellikli bir kart olmad\u0131\u011f\u0131 i\u00e7in USB klavye ba\u011flayam\u0131yoruz. Fakat USB klavyeleri PS2 Adapt\u00f6rlerle, PS2 klavye olarak ba\u011flayabiliyoruz.<\/p>\n<p><span style=\"color: #ff0000;\">\u00d6ncelikle donan\u0131ma bakal\u0131m:<br \/>\n<\/span>Donan\u0131m olarak arduino nano, Di\u015fi ps2 soket, USB klavye kullanacaksan\u0131z USB den PS2 ye \u00e7evirici adapt\u00f6r gerekmektedir.<br \/>\nBu adapt\u00f6r\u00fc kendiniz de yapabilirsiniz sadece kablolama, kolay olsun diye adapt\u00f6r kulland\u0131m. A\u015fa\u011f\u0131da bu adapt\u00f6r\u00fcn ba\u011flant\u0131 \u015femas\u0131n\u0131 g\u00f6receksiniz. ( bu konuda da teredd\u00fctt\u00fcm var. Eski USB klavyeler, PS2 olarak da \u00e7al\u0131\u015f\u0131rken, yeni klavyeler USB PS2 ikili \u00e7al\u0131\u015fmay\u0131 desteklemiyor olabilir)<\/p>\n<figure style=\"width: 315px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/DSC_0615.JPG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/DSC_0615.JPG?raw=true\" alt=\"\" width=\"315\" height=\"151\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 315px; --smush-placeholder-aspect-ratio: 315\/151;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff0000;\"><strong>Pin 5 ps2 data pin, pin 6 clock pin<\/strong><\/span><\/figcaption><\/figure>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Arduinoya 2 kablo ba\u011flant\u0131s\u0131 yetiyor. Di\u011fer 2 kablo ise Klavyenin \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olan +5V ve GND kablolar\u0131d\u0131r. Di\u015fi PS2 soketinin ba\u011flant\u0131s\u0131 da a\u015fa\u011f\u0131dad\u0131r. Buna g\u00f6re ba\u011flaman\u0131z gerek. Klavye adapt\u00f6r\u00fc ya da ps2 klavye konekt\u00f6r\u00fc ERKEK olarak ba\u011flant\u0131 \u015femas\u0131nda bak\u0131lmal\u0131 ve kablolar kar\u0131\u015ft\u0131r\u0131lmamal\u0131d\u0131r. <span style=\"color: #ff6600;\">FEMALE ve MALE oldu\u011funa dikkat edin.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/female_ps2_pinout.png?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/female_ps2_pinout.png?raw=true\" alt=\"\" width=\"359\" height=\"195\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 359px; --smush-placeholder-aspect-ratio: 359\/195;\" \/><\/a><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/usb_and_ps2.jpg?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/usb_and_ps2.jpg?raw=true\" alt=\"\" width=\"602\" height=\"165\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 602px; --smush-placeholder-aspect-ratio: 602\/165;\" \/><\/a><\/p>\n<p>Donan\u0131m basit ama<span style=\"color: #ff6600;\"> dikkat edilmeli.<\/span> Ayr\u0131ca Adapt\u00f6r ile \u00e7al\u0131\u015f\u0131yorsan\u0131z klavye RESET, programda olmas\u0131na ra\u011fmen 5V arduinodan al\u0131nd\u0131\u011f\u0131 i\u00e7in olabilir KLAVYE arduinoya enerji verildi\u011finde ledlerini yakam\u0131yor. Sonradan USB klavye kablosunu \u00e7\u0131kar\u0131p takarsan\u0131z klavye ledleri yan\u0131yor ve klavye \u00e7al\u0131\u015fmaya ba\u015fl\u0131yor. Bu arduino nanodan olabilir, usb klavyeden olabilir adapt\u00f6rle \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in ama ps2 klavye kullan\u0131rsan\u0131z sorun olmayabilir. Yani sizde sorun \u00e7\u0131kmayabilir.<\/p>\n<p>K\u00fct\u00fcphane kullanmayaca\u011f\u0131\u00a0 ben kendim sinyali yakalar\u0131m diyorsan\u0131z da bu bilgiler laz\u0131m olacakt\u0131r.<br \/>\n\u00d6ncelikle 11 bitlik sinyal g\u00f6receksiniz.<\/p>\n<p>1 bit START<br \/>\n8 bit VER\u0130<br \/>\n1 bit ODD PARITY<br \/>\n1 bit STOP<br \/>\nOlmak \u00fczere 11 bittir. Burada PARITY ODD kulland\u0131\u011f\u0131m\u0131z i\u00e7in Parity kontrol biti verilerdeki 1 olanlar\u0131n toplam\u0131na g\u00f6re hesaplan\u0131r. verilerdeki 1 olan bitler \u00e7ift say\u0131 ise o zaman PAR\u0130TY biti =1 durumunda olacakt\u0131r. Tek olursa ise PARITY =0 olacakt\u0131r. Bu sadece ODD parity kulland\u0131\u011f\u0131 i\u00e7in.<br \/>\nsonras\u0131nda ise stop biti gelmektedir.<br \/>\nA\u015fa\u011f\u0131daki sinyal, klavye sinyalini g\u00f6stermektedir. Siz de bu \u015fekilde klavye sinyalini yakalayabilirsiniz. Tarama kodunu elde edebilirsiniz. Tabii ki bir sonraki sinyale bakarak arduinodan klavyeye gidecek olan bilgi i\u00e7inde \u00e7al\u0131\u015fma yapman\u0131z laz\u0131m. Burada ACK sinyali i\u00e7in ayr\u0131 bir inceleme yapman\u0131z laz\u0131m.<br \/>\nKulland\u0131\u011f\u0131m k\u00fct\u00fcphane sadece tarama kodunu g\u00f6sterdi\u011fi i\u00e7in zaten bu \u00e7al\u0131\u015fmay\u0131 yapman\u0131za gerek kalmayacakt\u0131r.<\/p>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/Ysinyal_1.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/Ysinyal_1.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff6600;\">Klavyeden gelen sinyal<\/span><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/signal_3.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/signal_3.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff6600;\">Arduinodan klavyeye gidip gelen sinyaller<\/span><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff6600;\">Programlamaya bakacak olursak.<\/span><br \/>\nBu konuda bir \u00e7ok k\u00fct\u00fcphane bulabilirsiniz. Kendiniz de program yapabilirsiniz.<br \/>\nFakat benim yaz\u0131mda, bu programlamaya ba\u015flad\u0131\u011f\u0131n\u0131zda kar\u015f\u0131n\u0131za \u00e7\u0131kacak sorunlara \u00e7\u00f6z\u00fcm bulundu\u011funu g\u00f6receksiniz.<\/p>\n<p>T\u00fcm ps2 k\u00fct\u00fcphanelerinin neredeyse mant\u0131\u011f\u0131 ayn\u0131. Klavye tarama kodlar\u0131n\u0131 al\u0131r. Kar\u015f\u0131l\u0131k olarak gelen ASCII kodlar\u0131n\u0131 da bir tablodan al\u0131r. Ekrana yazd\u0131r\u0131r.<br \/>\nBu yabloda dikkat edilmesi gereken bu tip tablolarda ilk karakterin s\u0131f\u0131r dan ba\u015flamas\u0131d\u0131r. bundan dolay\u0131 sat\u0131r sonunda 31 yazar. 0-31 aras\u0131 her sat\u0131rda 32 karakter vard\u0131r. 31 yaz\u0131lmas\u0131n\u0131n sebebi budur. buna g\u00f6re ka\u00e7\u0131nc\u0131 karakteri de\u011fi\u015ftirecekseniz onu bulman\u0131z kolay olacakt\u0131r. Siz de tarama koduna g\u00f6re karakter de\u011fi\u015ftirebilirsiniz. Benim klavyemde (&#8220;) i\u015fareti bu tabloya g\u00f6re do\u011frudur ama ya da virg\u00fcl i\u015fareti do\u011frudur fakat sizin klavyenizde farkl\u0131 bir tarama koduna gelebilir. Bu durumda tablodaki o karakteri de\u011fi\u015ftirip kendinize g\u00f6re uyarlayabilirsiniz.<\/p>\n<pre class=\"height-set:true height:300 lang:arduino decode:true\" style=\"background: #222; color: #fff; max-width: 80%;\" title=\"Frekansmetre Arduino Uno\" width=\"80%\">\"Program ad\u0131: ARDUINO PS2 KLAVYE BA\u011eLAMA \";\r\nchar ScancodeToASCII[2][128] = {\/\/ 2 farkl\u0131 dizilim var 127 karakterden olu\u015fur. \r\n                                \/\/ birincisi SHIFT bas\u0131lmadan. \u0130kincisi ise SHIFT bas\u0131ld\u0131\u011f\u0131nda okunur. \r\n  { 0,0,0,0,0,0,0,0,0,0,0,0,0,9,34,0,0,0,0,0,0,113,49,0,0,0,122,115,97,119,50,0,\/\/31 kod\r\n0,99,120,100,101,52,51,0,0,32,118,102,116,114,53,0,0,110,'b',104,103,121,54,0,0,0,109,106,117,55,56,0,\/\/32 kod\r\n0,44,107,0,111,48,57,0,0,46,46,108,148,112,42,0,0,0,132,0,129,45,0,0,0,0,13,43,0,44,0,0,\/\/32 kod\r\n0,60,0,0,0,0,8,0,0,49,0,52,55,0,0,0,48,46,50,53,54,56,27,0,0,43,51,45,42,57,0,0  },\/\/ 32 kod\r\n  { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,0,0,81,33,0,0,0,90,83,65,87,34,0,\/\/31 kod\r\n0,67,88,68,69,36,94,0,0,0,86,70,84,82,37,0,0,78,'B',72,71,89,38,0,0,0,77,74,85,47,40,0,\/\/32 kod\r\n0,59,75,73,79,61,41,0,0,0,58,76,153,80,63,0,0,0,142,0,154,95,0,0,0,0,0,42,0,59,0,0,\/\/32 kod\r\n0,62,0,0,0,0,0,0,0,49,0,52,55,0,0,0,48,46,50,53,54,56,0,0,0,43,51,45,42,57,0,0  } \/\/32 kod\r\n };\r\n\r\n char altgrcodeToASCII[128] = {\r\n  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,'\u00a3',0,\r\n  0,0,0,0,0,36,35,0,0,0,0,0,0,0,'\u00bd',0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,91,0,\r\n  0,0,0,0,0,125,93,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,126,0,92,0,0,\r\n  0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n };\r\n<span style=\"color: #ff0000;\">\/\/ bu karakter tablolar\u0131nda shift tu\u015fu ile bas\u0131lma\r\n shift tu\u015fu olmadan bas\u0131lma ve ALTGR ile bas\u0131lma durumunda ekrana gelmesi gereken\r\n karakterlerin ASCII kodlar\u0131 yer almaktad\u0131r.<\/span>\r\n<\/pre>\n<p>&nbsp;<\/p>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/turkish_kar_utf8.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/turkish_kar_utf8.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff0000;\">T\u00fcrk\u00e7e karakterleri yazd\u0131rmak i\u00e7in UTF-8 kodlar\u0131n\u0131 Serial.Write komutuyla verebilirsiniz.<\/span><\/figcaption><\/figure>\n<p>T\u00fcm mant\u0131k bu olsa da T\u00fcrk\u00e7e karakter sorun \u00e7\u0131karabiliyor. Ya da baz\u0131lar\u0131 tarama kodunu vermiyor her\u015feyi k\u00fct\u00fcphanede halledip sadece ASCII kodunu veriyor de\u011fi\u015ftirmek i\u00e7in k\u00fct\u00fcphanede de\u011fi\u015fiklik yapman\u0131z gerekiyor.<\/p>\n<p>Bu programda ise k\u00fct\u00fcphane size <span style=\"color: #ff6600;\">sadece tarama kodunu veriyor<\/span> siz bu kod ile istedi\u011finiz gibi program\u0131n\u0131z\u0131 yapabiliyorsunuz. Daha fazla hakimiyet ve T\u00fcrk\u00e7e karakter gibi di\u011fer dillerdeki standart olmayan karakterleri de yazd\u0131rabilirsiniz.<br \/>\nHatta <strong><span style=\"color: #ff6600;\">klavyenizi mesle\u011fe y\u00f6nelik bir klavye<\/span><\/strong> olarak kullanabilirsiniz. Ya da bir OYUN kontrol\u00fcnde rahatl\u0131kla Klavyeyi kullanabilirsiniz.<br \/>\nDemek istedi\u011fim \u015fu. ASCII kod tablosunu siz olu\u015fturuyorsunuz. Bu \u015fekilde ekrana bas\u0131labilecek ilk 127 ASCII karakteri ekrana bast\u0131rabiliyorsunuz. \u015eayet istedi\u011finiz karakter<strong><span style=\"color: #ff6600;\"> \u015e<\/span><\/strong> gibi T\u00fcrk\u00e7e karakterse ya da <span style=\"color: #ff6600;\"><strong>Hz<\/strong><\/span> gibi bir <strong><span style=\"color: #ff6600;\">UN\u0130CODE, UTF-8<\/span><\/strong> karakteri olsun istiyorsan\u0131z, bu programla bunu yapabilirsiniz. Di\u011ferleriyle bu zor g\u00f6r\u00fcn\u00fcyor. Ama imkans\u0131z de\u011fil.<\/p>\n<p>Program \u00fczerinde zaten a\u00e7\u0131klamalar\u0131 yapt\u0131m ve videoda da a\u00e7\u0131klamalar\u0131n\u0131 yapaca\u011f\u0131m. Fakat i\u015fin mant\u0131\u011f\u0131 dedi\u011fimizde bunu alg\u0131laman\u0131z laz\u0131m. Sadece tarama kodunu al\u0131r\u0131m. Tablodan kodu yazd\u0131r\u0131r\u0131m. dedi\u011finizde bu i\u015fin bu kadar olmad\u0131\u011f\u0131n\u0131 g\u00f6receksiniz.<br \/>\n<span style=\"color: #ff6600;\">\u00d6ncelikle tarama kodlar\u0131na bakal\u0131m.<\/span><br \/>\nKlavyelerde mesela sol CTRL var. Sa\u011f CTRL var. Bu ikisi ayn\u0131 kodu \u00fcretiyorsa O zaman \u015f\u00f6yle bir yol bulmu\u015flar <span style=\"color: #ff6600;\">E0<\/span> gibi bir kodu \u00f6ne koyarak Sanki EKSTRA bir kod gibi g\u00f6steriliyor.<br \/>\nBunun yan\u0131 s\u0131ra Tu\u015fa bas\u0131ld\u0131\u011f\u0131nda tu\u015f kodu \u00fcretiliyor bu kod <span style=\"color: #ff6600;\">el kald\u0131r\u0131las\u0131ya kadar devam ediyor<\/span> elinizi kald\u0131rd\u0131\u011f\u0131n\u0131zda bu <span style=\"color: #ff6600;\">F0<\/span> gibi bir kod ile kullan\u0131c\u0131ya bildiriyor. Ayn\u0131 zamanda <span style=\"color: #ff6600;\">E0<\/span> ile ba\u015flam\u0131\u015fsa Tu\u015fu b\u0131rakt\u0131\u011f\u0131m\u0131zda <span style=\"color: #ff6600;\">E0<\/span> bir kez daha geliyor kald\u0131r\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6steriyor.<br \/>\nTabii ki sadece bu ayr\u0131mlar yok. program\u0131n\u0131zda shift tu\u015fu ayr\u0131m\u0131 da olacak. SH\u0130FT bas\u0131lsa da bas\u0131lmasa da ayn\u0131 tu\u015f i\u00e7in ayn\u0131 tarama kodu geliyor. Bundan dolay\u0131 shift tu\u015funa bas\u0131lm\u0131\u015fsa 2. tabloyu kullanarak a yerine A harfi bas\u0131l\u0131yor.<br \/>\nSol SHIFT tu\u015fu Hex12 kodunu verirken sa\u011f SHIFT tu\u015fu Hex59 kodunu veriyor. Bunun yan\u0131s\u0131ra CAPSLOCK bas\u0131ld\u0131\u011f\u0131nda SHIFT tu\u015fu devaml\u0131 bas\u0131lm\u0131\u015f gibi oluyor. Bundan dolay\u0131 b\u00fcy\u00fck harf yazd\u0131r\u0131l\u0131yor. Bunlar\u0131n da ayr\u0131lmas\u0131 gerek. Nas\u0131l ay\u0131raca\u011f\u0131m\u0131z\u0131 zaten programdan kolayl\u0131kla anlayabileceksiniz.<br \/>\nBunun yan\u0131s\u0131ra ayn\u0131 kodlu tu\u015flar var dedi\u011fim gibi bunlar\u0131n ba\u015f\u0131na E0 koyarak ay\u0131r\u0131yor. Bir de tu\u015f birle\u015fimleri var. <span style=\"color: #ff6600;\">ALTGR+Q<\/span> gibi. Benim klavyede <span style=\"color: #ff6600;\">@<\/span> i\u015fareti yap\u0131yor. bu i\u015fareti de alg\u0131laman\u0131z laz\u0131m. a\u015fa\u011f\u0131daki resme bakarsan\u0131z tarama kodlar\u0131 tek tek geldi\u011fi i\u00e7in gelen kod aralar\u0131nda yeterli zaman gecikmesi oldu\u011fundan gelen koda g\u00f6re program farkl\u0131 i\u015flevler yapabiliyor. Mesela ALTGR geldi hemen ALTGR de\u011fi\u015fkenini 1 yap\u0131yor. sonras\u0131nda ise bas\u0131lan karakterin kodu geliyor. Bu karakter bulunuyor. Sonras\u0131nda tu\u015ftan elimizi \u00e7ekti\u011fimizde F0 ile bunlar sonland\u0131r\u0131l\u0131yor ALTGR de s\u0131f\u0131rlan\u0131yor. Siz de bu kod aralar\u0131nda istedi\u011finiz i\u015flemi yapabiliyorsunuz.<\/p>\n<p>&nbsp;<\/p>\n<figure style=\"width: 388px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/ALTGR_Q_.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/ALTGR_Q_.PNG?raw=true\" alt=\"\" width=\"388\" height=\"704\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 388px; --smush-placeholder-aspect-ratio: 388\/704;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff6600;\">burada ALTGR+Q tu\u015f bile\u015fimi g\u00f6r\u00fcn\u00fcyor. her kod geldi\u011finde o gelen kod i\u015fleniyor haz\u0131rl\u0131k yap\u0131l\u0131yor sonras\u0131nda gelen karakterde belli oldu\u011funda tablodan hangi karakter geldiyse o ekrana yaz\u0131l\u0131yor. <\/span><\/figcaption><\/figure>\n<p>\u015eimdi de T\u00fcrk\u00e7e karakter ya da di\u011fer deyi\u015fle Unicode UTF-8 karakterini nas\u0131l yazd\u0131rd\u0131\u011f\u0131m\u0131za bakal\u0131m.<br \/>\nYukar\u0131daki t\u00fcrk\u00e7e karakter tablosundan HEX kodlar\u0131n\u0131 \u00f6\u011frenebilirsiniz<\/p>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/turkish_kar_shift_turkish_kar.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/turkish_kar_shift_turkish_kar.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff6600;\">Shift tu\u015funa bas\u0131lmad\u0131ysa \u015f harfi bas\u0131ld\u0131ysa \u015e harfi yaz\u0131l\u0131r. <\/span><\/figcaption><\/figure>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/start_ekran.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/PS2_kbd_arduino\/PICTURE\/start_ekran.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff6600;\">Bu ba\u015flang\u0131\u00e7 ekran\u0131d\u0131r. ilk sat\u0131rdaki t\u00fcrk\u00e7e karakterler Serial.print ile yazd\u0131r\u0131ld\u0131. 2. sat\u0131rdaki ise Serial.write komutu ile t\u00fcrk\u00e7e karakter tablosundaki UTF-8 kodu ile yazd\u0131r\u0131ld\u0131. bunun i\u00e7in komut: Serial.write (0xc5);Serial.write(0x9E); UTF-8 kodu 2 ye ayr\u0131larak arka arkaya verildi.<\/span><\/figcaption><\/figure>\n<p>Bu karakter kodlar\u0131na g\u00f6re Serial.write(0x00);Serial.write(0x01); gibi art arda yollad\u0131\u011f\u0131n\u0131zda bu karakter seri monit\u00f6re yaz\u0131l\u0131yor.<br \/>\nYa da kod ezberlemeyece\u011fim derseniz de Serial.print(&#8220;\u015e&#8221;); derseniz de arduino seri monit\u00f6re direkt UTF-8 olarak bu karakteri yazabilir. Seri monit\u00f6r ile \u00e7al\u0131\u015f\u0131rken kolayl\u0131k fakat ba\u015fka bir ekrana yazd\u0131r\u0131yorsan\u0131z HEX kodlar\u0131na ihtiyac\u0131n\u0131z olabilir. Mesela LCD ekran ise ona Yeni karakter haz\u0131rlad\u0131ysan\u0131z O yeni karakterin hex kodunu vermeniz gerekebilir. ya da ba\u015fka bir monit\u00f6re yaz\u0131yorsan\u0131z HEX kodu gerekebilir.<br \/>\nBundan dolay\u0131 programda test yaz\u0131s\u0131 yaz\u0131ld\u0131\u011f\u0131nda sizin i\u00e7in 2 farkl\u0131 yaz\u0131l\u0131m \u015feklini de ekledim.<br \/>\nT\u00fcrk\u00e7e karakter tarama kodu geldi\u011finde Tabloya gitmiyor. TURKCE alt program\u0131na giderek gelen kodun kar\u015f\u0131l\u0131\u011f\u0131n\u0131 ekrana yazd\u0131r\u0131yor. Bunun nedeni ise T\u00fcrk\u00e7e karakterler ASCII kodlamas\u0131n\u0131n ilk 127 karakter i\u00e7inde de\u011fil. Bu karakterler direkt olarak ekrana bas\u0131lan karakterlerdir. Program\u0131n ayr\u0131 bir yerinde T\u00fcrk\u00e7e karakter yazd\u0131rma alt program\u0131 vard\u0131r.<\/p>\n<p>Bunun yan\u0131s\u0131ra NUMLOCK ve CAPSLOK tu\u015flar\u0131na bast\u0131n\u0131z m\u0131 basmand\u0131n\u0131z m\u0131 bunu g\u00f6steren LEDLER var. Bu ledlerin SET edilmesi de bu programda var. Bu \u015fekilde numlock tu\u015funa bast\u0131\u011f\u0131n\u0131zda Numkey de\u011fi\u015fkeni 1 olur ve Klavyedeki LED&#8217;in yanmas\u0131 i\u00e7in gerekli LEDAYAR alt program\u0131na giderek ledi yakar. Capslock i\u00e7in ve scroll lock i\u00e7in de bu ledlerin kodlar\u0131 var.<\/p>\n<p>LED durumlar\u0131 1 bytel\u0131k register i\u00e7inde B\u0130T leri ayarlayarak LED ler yak\u0131l\u0131p s\u00f6nd\u00fcr\u00fcl\u00fcyor.<br \/>\nBunu Yaparken B\u0130T i\u015flemlerinde<span style=\"color: #ff6600;\"> Bitclear<\/span> ve <span style=\"color: #ff6600;\">Bitset<\/span> kullan\u0131l\u0131yor. \u015eayet 1 4 7 gibi byte i\u015flemi yap\u0131lsayd\u0131 o registerin di\u011fer bitleri de de\u011fi\u015fecekti. Belki de ba\u015fka problem olacakt\u0131. Bundan dolay\u0131 sadece hangi bitler LED i\u00e7in ayr\u0131lm\u0131\u015fsa onlar\u0131 de\u011fi\u015ftiriyoruz.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>SCROLLOCK<\/strong><\/span> i\u00e7in 0. biti de\u011fi\u015ftiriyoruz. 0 s\u00f6n\u00fck 1 yan\u0131k.<br \/>\n<strong><span style=\"color: #ff0000;\">NUMLOCK i<\/span><\/strong>\u00e7in 1. biti de\u011fi\u015ftiriyoruz.<br \/>\n<strong><span style=\"color: #ff0000;\">CAPSLOCK<\/span><\/strong> i\u00e7in 2. biti de\u011fi\u015ftiriyoruz.<br \/>\nBenim klavyeme g\u00f6re bu. Sizler klavyenize g\u00f6re bunlar\u0131 ayarlayabilirsiniz.<\/p>\n<p>Ayr\u0131ca hem KEYPAD dedi\u011fimiz numara tu\u015f tak\u0131mlar\u0131 var hem de buradaki komutlar\u0131n tu\u015flar\u0131 ayr\u0131 olarak var. Mesela PAGE UP gibi ya da Y\u00d6N tu\u015flar\u0131 gibi. Bunlar da Karakter tablosunda yer almaz. Bunlar\u0131 da kod geldi\u011finde h\u0131zl\u0131 bir \u015fekilde IF c\u00fcmleleri ile kontrol eder ve PAGEUP yazar. fakat karakter tablosuna u\u011framaz. Keypad dedi\u011fimiz sa\u011fdaki numaralar\u0131n 2 farkl\u0131 \u015fekilde kullan\u0131m\u0131 i\u00e7in NUMLOCK tu\u015fu kontrol edilir. NUMLOCK 0 oldu\u011funda PAGEUP gibi \u00e7al\u0131\u015f\u0131r NUMLOCK 1 oldu\u011funda 1,3 5 gibi numara tu\u015flar\u0131 \u00e7al\u0131\u015f\u0131r. Hepsinin tarama kodu ayn\u0131d\u0131r. Fakat NUMLOCK bas\u0131ld\u0131ysa siz bunu programdan ay\u0131rt edebiliyorsunuz. Ayr\u0131ca bu KEYPAD \u00fczerindeki tu\u015flar\u0131n ayn\u0131s\u0131 ayr\u0131 olarak da klavyede yer al\u0131r. PAGEUP veya Y\u00d6N tu\u015flar\u0131 gibi. Bu tu\u015flar\u0131nda tarama kodlar\u0131 ayn\u0131d\u0131r. Fakat bunlar ekstra tu\u015flar oldu\u011fu i\u00e7in di\u011ferlerinden ayr\u0131lmas\u0131 i\u00e7in ba\u015f\u0131na E0 konmu\u015ftur. Yani kolayl\u0131kla bu tu\u015flar\u0131 da ay\u0131rt edebiliyorsunuz.<\/p>\n<p>Klavyedeki her tu\u015fun tarama koduna g\u00f6re i\u015flevleri programda mevcut hatta SHIFT, CTRL,ALT,ALTGR tu\u015f bile\u015fimleri de \u00e7al\u0131\u015fmaktad\u0131r. Bunlar bu tip tu\u015flar geldi\u011finde, hemen de\u011fi\u015fkenleri 1 yap\u0131larak IF d\u00f6ng\u00fcs\u00fcnde kontrol edilerek yap\u0131l\u0131r. Sonras\u0131nda TU\u015e bas\u0131lmad\u0131\u011f\u0131nda hepsi s\u0131f\u0131rlan\u0131r.<\/p>\n<p>Ayr\u0131ca Program ba\u015f\u0131nda <span style=\"color: #ff6600;\">KBD_INIT<\/span> alt program\u0131nda bu resetleme yap\u0131l\u0131yor. Normalde 1 kez bile yapsan\u0131z yeterli ama ben 2 kez yapt\u0131rd\u0131m sorun olmas\u0131n diye.<\/p>\n<p>Bununla birlikte Program i\u00e7erisinde KARAKTER kodu diye ekrana yaz\u0131lan yerlerden \u00a0tu\u015f kodlar\u0131n\u0131 al\u0131p kendi PS2 ba\u011flant\u0131l\u0131 programlar\u0131n\u0131zda kullanabilirsiniz. T\u00fcm bu i\u015flemler Sonsuz FOR i\u015flemi i\u00e7inde oldu\u011fundan sizler buradan karakter ald\u0131\u011f\u0131n\u0131zda kendi alt program\u0131n\u0131za gidebilirsiniz. i\u015finizi yap\u0131p tekrar FOR d\u00f6ng\u00fcs\u00fcne d\u00f6nmeniz gerekir.<br \/>\nBunu h\u0131zl\u0131 bir \u015fekilde yapabilirsiniz.<br \/>\n<strong><span style=\"color: #ff6600;\">Klavye 10khz &#8211; 16Khz h\u0131z\u0131nda \u00e7al\u0131\u015f\u0131yor. Arduino 16Mhz h\u0131z\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan i\u015fleminizi yap\u0131p geri d\u00f6necek s\u00fcreniz olacakt\u0131r.<\/span><\/strong><\/p>\n<p><strong><span style=\"color: #ff6600;\">NOT:<\/span> <\/strong>Program i\u00e7erisinde S\u0130ZLER t\u00fcm ekran\u0131 anlayas\u0131n\u0131z diye bir \u00e7ok <strong>SER\u0130AL.PRINT<\/strong> sat\u0131r\u0131 var. Bundan dolay\u0131 haf\u0131za dolabilecektir. Sizler kendi program\u0131n\u0131za adapte edecekseniz bu sat\u0131rlar\u0131 silerek haf\u0131zadan kazanabilirsiniz.<br \/>\nAyr\u0131ca Tablolar\u0131 ise Program haf\u0131zas\u0131na a\u015fa\u011f\u0131daki \u00f6rnekteki gibi yerle\u015ftirebilirsiniz. O da data haf\u0131zas\u0131n\u0131 rahatlatacakt\u0131r. A\u015fa\u011f\u0131da kullan\u0131lan <strong><span style=\"color: #ff0000;\">PROGMEM<\/span><\/strong> komutunun kullan\u0131lmas\u0131na bakman\u0131z\u0131 \u00f6neririm. Benim program\u0131mla alakas\u0131 yoktur. Haf\u0131za kazanman\u0131z i\u00e7in bir yol olarak verilmi\u015ftir.<br \/>\n<strong><a href=\"http:\/\/arduinoproje.com\/komut.aspx?k=progmem\" target=\"_blank\" rel=\"noopener\">Bu adreste<\/a><\/strong> <span style=\"color: #ff0000;\"><strong>PROGMEM<\/strong><\/span> kullan\u0131m\u0131 anlat\u0131lmaktad\u0131r.<br \/>\nAyr\u0131ca yine haf\u0131za kazanmak i\u00e7in Serialprint olarak yazd\u0131r\u0131lan karakterlerin sabit k\u0131s\u0131mlar\u0131<br \/>\n<span style=\"color: #ff0000;\"><strong>F MACRO<\/strong><\/span> ile \u00dcST belle\u011fe aktar\u0131larak Data k\u0131sm\u0131ndan yer a\u00e7\u0131lm\u0131\u015f olacakt\u0131r.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Bu tip metotlarla\u00a0 kendi yapaca\u011f\u0131n\u0131z programa eklemeniz daha kolay olacakt\u0131r. Program ve Data haf\u0131zan\u0131zdaki yeri uygun \u015fekilde kullanabilirsiniz.\u00a0<\/strong><\/span><\/p>\n<pre class=\"height-set:true height:300 lang:arduino decode:true\" style=\"background: #222; color: #fff; max-width: 80%;\" title=\"Frekansmetre Arduino Uno\" width=\"80%\">\"Program ad\u0131: \u00f6rnek tablo_ PROGMEM kodu \u0130sterseniz bu programdaki tabloyu progmem ile Program haf\u0131zas\u0131na ta\u015f\u0131yabilirsiniz. buradaki tablo \u00f6rnektir benim program\u0131mla alakas\u0131 yoktur. \";<\/pre>\n<pre class=\"height-set:true height:300 lang:arduino decode:true\" style=\"background: #222; color: #fff; max-width: 80%;\" title=\"Frekansmetre Arduino Uno\" width=\"80%\">const PROGMEM PS2Keymap_t PS2Keymap_US = {\r\n  \/\/ without shift\r\n\t{0, PS2_F9, 0, PS2_F5, PS2_F3, PS2_F1, PS2_F2, PS2_F12,\r\n\t0, PS2_F10, PS2_F8, PS2_F6, PS2_F4, PS2_TAB, '`', 0,\r\n\t0, 0 \/*Lalt*\/, 0 \/*Lshift*\/, 0, 0 \/*Lctrl*\/, 'q', '1', 0,\r\n\t0, 0, 'z', 's', 'a', 'w', '2', 0,\r\n\t0, 'c', 'x', 'd', 'e', '4', '3', 0,\r\n\t0, ' ', 'v', 'f', 't', 'r', '5', 0,\r\n\t0, 'n', 'b', 'h', 'g', 'y', '6', 0,\r\n\t0, 0, 'm', 'j', 'u', '7', '8', 0,\r\n\t0, ',', 'k', 'i', 'o', '0', '9', 0,\r\n\t0, '.', '\/', 'l', ';', 'p', '-', 0,\r\n\t0, 0, '\\'', 0, '[', '=', 0, 0,\r\n\t0 \/*CapsLock*\/, 0 \/*Rshift*\/, PS2_ENTER \/*Enter*\/, ']', 0, '\\\\', 0, 0,\r\n\t0, 0, 0, 0, 0, 0, PS2_BACKSPACE, 0,\r\n\t0, '1', 0, '4', '7', 0, 0, 0,\r\n\t'0', '.', '2', '5', '6', '8', PS2_ESC, 0 \/*NumLock*\/,\r\n\tPS2_F11, '+', '3', '-', '*', '9', PS2_SCROLL, 0,\r\n\t0, 0, 0, PS2_F7 },\r\n  \/\/ with shift\r\n\t{0, PS2_F9, 0, PS2_F5, PS2_F3, PS2_F1, PS2_F2, PS2_F12,\r\n\t0, PS2_F10, PS2_F8, PS2_F6, PS2_F4, PS2_TAB, '~', 0,\r\n\t0, 0 \/*Lalt*\/, 0 \/*Lshift*\/, 0, 0 \/*Lctrl*\/, 'Q', '!', 0,\r\n\t0, 0, 'Z', 'S', 'A', 'W', '@', 0,\r\n\t0, 'C', 'X', 'D', 'E', '$', '#', 0,\r\n\t0, ' ', 'V', 'F', 'T', 'R', '%', 0,\r\n\t0, 'N', 'B', 'H', 'G', 'Y', '^', 0,\r\n\t0, 0, 'M', 'J', 'U', '&amp;', '*', 0,\r\n\t0, '&lt;', 'K', 'I', 'O', ')', '(', 0, 0, '&gt;', '?', 'L', ':', 'P', '_', 0,\r\n\t0, 0, '\"', 0, '{', '+', 0, 0,\r\n\t0 \/*CapsLock*\/, 0 \/*Rshift*\/, PS2_ENTER \/*Enter*\/, '}', 0, '|', 0, 0,\r\n\t0, 0, 0, 0, 0, 0, PS2_BACKSPACE, 0,\r\n\t0, '1', 0, '4', '7', 0, 0, 0,\r\n\t'0', '.', '2', '5', '6', '8', PS2_ESC, 0 \/*NumLock*\/,\r\n\tPS2_F11, '+', '3', '-', '*', '9', PS2_SCROLL, 0,\r\n\t0, 0, 0, PS2_F7 },\r\n\t0\r\n};\r\n<\/pre>\n<p>A\u015fa\u011f\u0131da \u00e7e\u015fitli tu\u015f kodlar\u0131n\u0131n <strong><span style=\"color: #ff6600;\">\u00f6rnek resimlerinin linki var.<\/span><\/strong> bu resimlerden hangi tu\u015fa bas\u0131lm\u0131\u015f nas\u0131l tepki vermi\u015f g\u00f6rebilirsiniz.<\/p>\n<p><strong><span style=\"color: #ff6600;\">Tu\u015f \u00e7al\u0131\u015fma<\/span> <a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/tree\/main\/PS2_kbd_arduino\/PICTURE\" target=\"_blank\" rel=\"noopener\">resimleri buradad\u0131r.\u00a0<\/a><\/strong><\/p>\n<p><strong><span style=\"color: #ff6600;\">T\u00fcm programlara da<\/span><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/tree\/main\/PS2_kbd_arduino\" target=\"_blank\" rel=\"noopener\"> buradan ula\u015fabilirsiniz.<\/a><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\"><strong>ARDUINO PS2 klavye sim\u00fclat\u00f6r.<\/strong><\/span><\/p>\n<p>Bu sim\u00fclat\u00f6r\u00fc sizlerin PS2 klavyeyi taklit edebilmeniz i\u00e7in yapt\u0131m. Bu \u015fekilde \u00e7ok s\u0131k kullan\u0131lan tu\u015flar\u0131 kendi klavyeniz olarak yapabilirsiniz ve normal klavye kullanman\u0131za gerek kalmaz. Hatta bir sonraki a\u015famada kablosuz klavye \u015fekline bile \u00e7evirebilirsiniz. Bu \u015fekilde uzaktan da istedi\u011finiz tu\u015flar\u0131 kontrol edebilece\u011finiz avu\u00e7 i\u00e7i bir klavyeniz olabilecektir.<\/p>\n<p>Program olduk\u00e7a basit tutuldu. \u00c7\u00fcnk\u00fc sinyal g\u00f6nderimini g\u00f6rmenizi istedim. Sinyal g\u00f6nderirken tu\u015f kodunu binary olarak tersten g\u00f6ndermeniz gerekiyor. Ayn\u0131 zamanda PARITY bitini de ayarlaman\u0131z gerekiyor. yaz\u0131da bunu anlat\u0131m videoda da g\u00f6sterdim bu \u015fekilde ps2 klavyenin kulland\u0131\u011f\u0131 ODD PARITY hesab\u0131n\u0131 yaparak bulabilirsiniz.<br \/>\nT\u00fcm zamanlamalara riayet ederseniz ayn\u0131 arduino k\u00fct\u00fcphanesi normal klavyeyi alg\u0131lad\u0131\u011f\u0131 gibi sizin klavyenizi de alg\u0131layacakt\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki resimde 2 arduino g\u00f6receksiniz. Yukar\u0131daki arduino ana program yani normal klavye kodlar\u0131n\u0131 elde eden program\u0131n ayn\u0131s\u0131d\u0131r.<br \/>\na\u015fa\u011f\u0131daki ise kendi klavyemizi yapabilece\u011fimiz sim\u00fclat\u00f6r program\u0131d\u0131r. Burada bulunan buton say\u0131s\u0131n\u0131 artt\u0131rabilirsiniz. tabii ki sinyal g\u00f6ndermeyi bu \u015fekilde yapabilece\u011finiz gibi istedi\u011finiz gibi k\u0131saltarak da yollayabilirsiniz.<br \/>\nSadece s\u00fcrelere ve parity bitlerine dikkat edin.<\/p>\n<p>Ayr\u0131ca videoda da dile getirdim. ana program ba\u015f\u0131nda klavye reset vard\u0131r. Bundan dolay\u0131 burada ACK sinyali beklemektedir. Sizler 3-4 defa tu\u015fa basarsan\u0131z bu gecikme ve beklemenin \u00f6n\u00fcne ge\u00e7ip normal \u00e7al\u0131\u015fmaya ba\u015flayabilirsiniz. \u00c7\u00fcnk\u00fc klabvye reset ile led yakma k\u0131sm\u0131nda klavyeye bilgi gidiyor ve sonras\u0131nda klavyeden ald\u0131m sinyali gitmesi gerekiyor.<br \/>\nBunun yerine tu\u015fa bir ka\u00e7 kez basarsan\u0131z bu alg\u0131lama yeterli olup normal \u00e7al\u0131\u015fma moduna girecektir.<\/p>\n<p>Proteus 8.6 versiyonu ile bunu haz\u0131rlad\u0131m. sizler 8.6 veya daha y\u00fcksek versiyonla bunu a\u00e7abilirsiniz. ya da pdf dosyas\u0131na g\u00f6re ba\u011flant\u0131 yapabilirsiniz. HEX dosyalar\u0131n\u0131 ise arduino program\u0131nda TASLAK men\u00fcs\u00fcnden DERLENM\u0130\u015e B\u0130NARY \u00c7IKAR se\u00e7ene\u011fine basarak elde edebilirsiniz.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>NOT: Yorumlar\u0131n\u0131z\u0131 yaz\u0131n\u0131n alt\u0131na b\u0131rak\u0131rsan\u0131z sizden sonrakilerde faydalanacakt\u0131r<\/strong><\/span>.<\/p>\n<p>&nbsp;<\/p>\n<p><iframe title=\"ARDUINO ya PS2 Klavye ba\u011flama\" data-src=\"https:\/\/www.youtube.com\/embed\/oFW-YHC2vbQ\" width=\"985\" height=\"522\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Daha \u00f6nce ESP32 ile USB kablosuz HID klavye yaz\u0131m\u0131 yazm\u0131\u015ft\u0131m. ESP32_USB HID KLAVYE yaz\u0131m buradad\u0131r.\u00a0 Bu yaz\u0131mda ise Arduino ya ps2 klavye ba\u011flayarak nas\u0131l kullanabiliriz bunu anlataca\u011f\u0131m. Arduino UNO NANO&#8230; <\/p>\n","protected":false},"author":1,"featured_media":2791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12],"tags":[],"class_list":["post-2774","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-pcprog"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/comments?post=2774"}],"version-history":[{"count":3,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2774\/revisions"}],"predecessor-version":[{"id":2793,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2774\/revisions\/2793"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/2791"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=2774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=2774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=2774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}