{"id":1915,"date":"2020-10-29T23:17:01","date_gmt":"2020-10-29T20:17:01","guid":{"rendered":"https:\/\/www.mikrobotik.com\/wp2\/?p=1915"},"modified":"2020-10-31T11:46:15","modified_gmt":"2020-10-31T08:46:15","slug":"arduino-ve-pcf8574-lcd-modulunu-dijital-pim-coklayici-olarak-kullanma","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2020\/10\/29\/arduino-ve-pcf8574-lcd-modulunu-dijital-pim-coklayici-olarak-kullanma\/","title":{"rendered":"Arduino ve  PCF8574 LCD mod\u00fcl\u00fcn\u00fc dijital pim \u00e7oklay\u0131c\u0131 olarak kullanma."},"content":{"rendered":"<p style=\"text-align: center;\"><strong>Bu yaz\u0131da kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z konular.<br \/>\n1- Arduino<\/strong> wire k\u00fct\u00fcphanesi kullan\u0131lmas\u0131, ve <strong>PICBASIC<\/strong> ile I2C haberle\u015fmesi<strong><br \/>\n2- <\/strong>PCF8574 ve PCF8574A entegreli I2C LCD Mod\u00fcl adreslemesi,<strong><br \/>\n3- <\/strong>Ayn\u0131 mod\u00fcl\u00fcn <strong>I2C dijital I\/O port \u00e7oklay\u0131c\u0131<\/strong> olarak kullan\u0131lmas\u0131.<br \/>\n<strong><br \/>\nArduino ile PCF8574 I2C LCD mod\u00fcl\u00fcn, I\/O port geni\u015fletici olarak kullan\u0131lmas\u0131.<\/strong><\/p>\n<p>Neden I\/O port geni\u015fleticiye ihtiya\u00e7 duyar\u0131z. Dijital pimlerimiz bazen yetmez. Bundan dolay\u0131 ihtiya\u00e7 duyar\u0131z bazen de yeni bir deneme yapmak istedi\u011fimizde k\u0131sa devre tehlikesi varsa mikrokontrolc\u00fc yanmas\u0131n diyorsak, denemede gerekirse di\u011fer ucuz entegre yans\u0131n diyorsak, yine bu tip \u00e7oklay\u0131c\u0131lara ihtiya\u00e7 duyar\u0131z.<br \/>\n<span style=\"color: #ff6600;\">\u0130ngilizce olarak expander diye ge\u00e7er. Anlam\u0131 geni\u015fletici demektir.<\/span> Bu tip devrelere bizler <span style=\"color: #ff6600;\"><strong>\u00e7oklay\u0131c\u0131<\/strong><\/span> diyebiliriz.<\/p>\n<p><span style=\"color: #ff0000;\"><span style=\"color: #ff6600;\"><strong>Bu tip devreler i\u00e7in bir \u00e7ok entegre var<\/strong>.<\/span> (TCA9539:16 I\/O, MCP2317: 16 I\/O, PCF8575: 16I\/O, TCA6424A: 24 I\/O, PCF8574A: 8 I\/O, PCF8574 : 8 I\/O )<\/span>\u00a0Bu yaz\u0131da avantajlar\u0131ndan dolay\u0131 PCF8574 entegresini se\u00e7tim. Her amat\u00f6r arkada\u015f bir adet \u00e7oklay\u0131c\u0131 bir adet de LCD kontrol mod\u00fcl\u00fc bulundurmas\u0131n diye bu entegrenin kullan\u0131ld\u0131\u011f\u0131 mod\u00fcl\u00fc temel ald\u0131m.<\/p>\n<p>Bu \u00e7oklay\u0131c\u0131lar sadece dijital \u00e7oklay\u0131c\u0131d\u0131r. \u015eayet analog \u00e7oklay\u0131c\u0131 isterseniz, <a href=\"https:\/\/www.mikrobotik.com\/wp2\/2020\/10\/22\/bakis-acinizi-genisletin\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>bu yaz\u0131m\u0131 okuman\u0131z\u0131<\/strong><\/a> \u00f6neririm.<\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2020\/10\/PCF8574_ADAPTER-e1603689654790.jpg\" rel=\"lightbox[1915]\"><img decoding=\"async\" class=\"lightbox aligncenter wp-image-1918 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2020\/10\/PCF8574_ADAPTER-300x144.jpg\" alt=\"\" width=\"615\" height=\"295\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 615px; --smush-placeholder-aspect-ratio: 615\/295;\" \/><\/a><\/p>\n<p><strong>Bu mod\u00fcl ayn\u0131<\/strong> <strong>zamanda LCD kontrol mod\u00fcl\u00fc olarak sat\u0131l\u0131yor<\/strong>. Bizler bu mod\u00fcl\u00fc dijital I\/O port \u00e7oklay\u0131c\u0131 olarak rahatl\u0131kla kullanabiliriz. I2C oldu\u011fu i\u00e7in 2 kablo kullanarak 8 dijital pim daha kazan\u0131r\u0131z. \u0130stersek PCF8575 kullan\u0131p 16 pim kazanma \u015fans\u0131m\u0131z da var tabii ki. <span style=\"color: #ff6600;\">Ayr\u0131ca bir den fazla mod\u00fcl kullanarak ayn\u0131 SDA ve SCL ile ve mod\u00fcl adreslerini ayarlayarak 7 mod\u00fcl kullanabiliriz. Bu da 56 dijital I\/O port fazladan kullanabiliriz demektir.\u00a0 8 Bacakl\u0131 bir entegre ile 56 adet r\u00f6le s\u00fcrd\u00fc\u011f\u00fcn\u00fcz\u00fc hayal edin.\u00a0<\/span><\/p>\n<p>Bu mod\u00fcl\u00fcn \u00e7al\u0131\u015fma \u015fekli baz\u0131lar\u0131n\u0131za ters gelebilir. Mesela bir led yakmak istedi\u011fimizde, genellikle dijital pime 1 diren\u00e7 bir led ba\u011flar\u0131z. Ledin katod ucunu ise \u015faseye ba\u011flar\u0131z ve bu \u015fekilde kullan\u0131r\u0131z. Bu mod\u00fclde Hem input hem output yap\u0131yoruz. Fakat INPUT k\u0131sm\u0131n\u0131 Pim HIGH oldu\u011funda kontrol edece\u011finden, bizim ledlerimiz LOW durumunda \u00e7al\u0131\u015fmal\u0131.\u00a0 <strong><span style=\"color: #ff6600;\">Bu entegreyi kullan\u0131yorsan\u0131z SA\u011eDAK\u0130 gibi ACTIVE LOW \u00e7al\u0131\u015fmas\u0131n\u0131 se\u00e7melisiniz.\u00a0<\/span><\/strong><\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/LED_Active.jpg\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/LED_Active.jpg\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<p>\u00c7al\u0131\u015fma \u015feklini anlatmadan \u00f6nce fiyatlar\u0131ndan da bahsetmek gerekir. Bu mod\u00fcl\u00fcn avantajlar\u0131ndan biri LCD de kullan\u0131lmas\u0131n\u0131n yan\u0131 s\u0131ra hi\u00e7 de\u011fi\u015fiklik yapmadan dijital \u00e7oklay\u0131c\u0131 olarak da kullan\u0131lmas\u0131. Ayr\u0131ca di\u011fer avantaj\u0131 da fiyat\u0131d\u0131r. \u00c7ok \u00fcretildi\u011finden mod\u00fcl\u00fc 5TL civar\u0131na alabiliyorsunuz. Tek ba\u015f\u0131na entegre alay\u0131m deseniz 9Tl civar\u0131ndad\u0131r. Yani fiyat avantaj\u0131 da bulunmaktad\u0131r. Bir LCD mod\u00fcl bir de \u00e7oklay\u0131c\u0131 mod\u00fcl alay\u0131m deseniz en az 15TL.<\/p>\n<p>\u015eimdi de piyasadaki \u00e7oklay\u0131c\u0131 mod\u00fcllere g\u00f6re dezavantaj\u0131n\u0131 g\u00f6relim. Normal dijital \u00e7oklay\u0131c\u0131da bulunan INT baca\u011f\u0131 LCD mod\u00fclde kullan\u0131lmad\u0131\u011f\u0131 i\u00e7in entegre baca\u011f\u0131 bo\u015f b\u0131rak\u0131lm\u0131\u015f. <span style=\"color: #ff6600;\">\u0130htiya\u00e7 duyarsan\u0131z bir kablo lehimleyip alabilirsiniz.<\/span> Bunun d\u0131\u015f\u0131nda bir fark yoktur. Bu u\u00e7 sadece INPUT olarak kullanmak istedi\u011finizde kullan\u0131labilir. O da iste\u011fe ba\u011fl\u0131d\u0131r. Programda rutin olarak INPUT kontrol\u00fc yap\u0131yorsan\u0131z buna gerek kalmayabilir.<\/p>\n<p>\u00d6ncelikle <span style=\"color: #ff6600;\">ARDUINO WIRE k\u00fct\u00fcphanesinin<\/span> nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131na bakal\u0131m. I2C i\u00e7in bu k\u00fct\u00fcphane kullan\u0131lmak zorundad\u0131r. Geli\u015fmi\u015f programc\u0131lar I2C sinyalini kendileri olu\u015fturabilirler. Fakat bizler bunu k\u00fct\u00fcphane olarak kullanmal\u0131y\u0131z. Bu mod\u00fcl\u00fc LCD de kullan\u0131rken, kulland\u0131\u011f\u0131n\u0131z gibi bir k\u00fct\u00fcphane kullanman\u0131za da gerek yok. Sadece I2C i\u00e7in wire k\u00fct\u00fcphanesi yeterlidir.<br \/>\nAyr\u0131ca \u00f6nemli bir nokta SDA ve SCL pimlerine PULL UP diren\u00e7 ba\u011flanmas\u0131d\u0131r. Bu, mod\u00fcl\u00fcn\u00fczde yoksa siz ba\u011flamak zorundas\u0131n\u0131z. Bunun de\u011feri 4K7 -10K aras\u0131ndad\u0131r. Yava\u015f bir haberle\u015fme h\u0131z\u0131 se\u00e7ildiyse 10K, daha h\u0131zl\u0131 bir haberle\u015fme se\u00e7ildiyse 4K7 diren\u00e7 kullanabilirsiniz. ( <span style=\"color: #ff6600;\">LCD mod\u00fcl \u00fczerinde bu diren\u00e7ler yer ald\u0131\u011f\u0131 i\u00e7in bu mod\u00fcl\u00fc kullan\u0131rken ayr\u0131ca diren\u00e7 kullanman\u0131za gerek yoktur.<\/span> )<br \/>\nBu k\u00fct\u00fcphane A4 ve A5 SDA,SCL pimlerine g\u00f6re \u00e7al\u0131\u015f\u0131r. Bir de\u011fi\u015fken de\u011feri g\u00f6nderip almak i\u00e7in 3 sat\u0131rl\u0131k dizilim vard\u0131r.<\/p>\n<p><strong><span style=\"color: #ff0000;\">Bilgi g\u00f6ndermek i\u00e7in :<\/span><br \/>\n<\/strong>Wire.beginTransmission(32); \/\/ transmit to device #4\u00a0 ( 32 ba\u011flant\u0131 kurulacak cihaz\u0131n adresidir )<br \/>\nWire.write(B00001111);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ sends one byte<br \/>\nWire.endTransmission();\u00a0\u00a0\u00a0 \/\/ stop transmitting<br \/>\n<span style=\"color: #ff0000;\"><strong>ya da<\/strong> <\/span><br \/>\nWire.beginTransmission(0x20); \/\/<span style=\"color: #ff6600;\"> transmit to device #4 ( 0x20\u00a0 ba\u011flant\u0131 kurulacak cihaz\u0131n HEX adresidir ) isterseniz desimal ya da HEX olarak verebilirsiniz.<\/span><br \/>\nWire.write(TEMP);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ sends one byte TEMP de\u011fi\u015fken olarak \u00f6nceden tan\u0131mlanmal\u0131.<br \/>\nWire.endTransmission();\u00a0\u00a0\u00a0 \/\/ stop transmitting<\/p>\n<p><strong><span style=\"color: #ff0000;\">Bilgi almak i\u00e7in :<\/span><br \/>\n<\/strong>Wire.requestFrom(0x20, 1);\u00a0 <span style=\"color: #ff6600;\">\/\/ istek yap\u0131l\u0131yor adres bilgisiyle 1= 1 Byte okumak i\u00e7in. Birden fazla\u00a0 byte da okuyabilirsiniz.<\/span><br \/>\ntemp1 = Wire.read();\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \/\/ Temp1 de\u011fi\u015fkeni \u00f6nceden tan\u0131mlanmal\u0131<br \/>\nWire.endTransmission();\u00a0\u00a0 \/\/ Durdurma\u00a0 Bu sat\u0131ra al\u0131rken gerek olmasa da ben yazd\u0131m iste\u011fe ba\u011fl\u0131.<\/p>\n<p><span style=\"color: #ff6600;\">WIRE k\u00fct\u00fcphanesini kullanmak bu kadar basittir.<br \/>\nDetayl\u0131 bilgi : <a href=\"https:\/\/www.arduino.cc\/en\/Reference\/Wire\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.arduino.cc\/en\/Reference\/Wire<\/a><\/span><\/p>\n<p><span style=\"color: #ff6600;\"><strong>PICBASIC\u00a0 te I2C kullanmak isterseniz<\/strong><\/span> A\u015fa\u011f\u0131daki gibi kullanabilirsiniz. \u00d6rnek sayfa i\u00e7in buraya bakabilirsiniz. (<strong><a href=\"https:\/\/melabs.com\/samples\/PBP-mixed\/i2c.htm\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/melabs.com\/samples\/PBP-mixed\/i2c.htm<\/a><\/strong>)<\/p>\n<p>DPIN= SDA , CPIN=SCLK $A0=adres\u00a0 , B0= Cihaz i\u00e7indeki register adresi , [B0] Al\u0131nacak ya da yaz\u0131lacak veridir.<br \/>\nI2C<strong>WRITE<\/strong> DPIN,CPIN,$A0,B0,[B0]\u00a0\u00a0\u00a0 bilgi g\u00f6ndermek i\u00e7in. B0 2 kez kullan\u0131lm\u0131\u015ft\u0131r. Birincisi cihaz i\u00e7erisindeki adresi belirtmek i\u00e7indir. Baz\u0131 cihazlarda hem cihaz adresini vermelisiniz hem de cihaz i\u00e7indeki bilgi yazaca\u011f\u0131n\u0131z adresi g\u00f6ndermeniz gerekebilir. \u0130htiya\u00e7 yoksa buraya sadece<strong><span style=\"color: #ff0000;\"> ,<\/span> <\/strong>koyars\u0131n\u0131z.<br \/>\nI2C<strong>READ<\/strong> DPIN,CPIN,$A0,B0,[B1,B2]\u00a0\u00a0 bilgi almak i\u00e7in. [B1,B2]: \u00a0B0 registerinden itibaren 2 adet de\u011fi\u015fken okunaca\u011f\u0131n\u0131 ve gelen verilerin bu de\u011fi\u015fkenlere aktar\u0131laca\u011f\u0131n\u0131 belirtir.<\/p>\n<p><span style=\"color: #ff6600;\"><span style=\"color: #ff0000;\">Adresleme :\u00a0<\/span><br \/>\n[(D=data) D7:MSB (en y\u00fcksek bit) D0=LSB (en d\u00fc\u015f\u00fck bit) temsil eder. ]<\/span><br \/>\nAdreslemesi ise cihaza \u00f6zel olmakla birlikte, D7-D1 aras\u0131ndakiler de\u011fi\u015fse bile D0 \u00f6zeldir. Bu t\u00fcm cihazlar i\u00e7in b\u00f6yledir. Bundan dolay\u0131 WIRE k\u00fct\u00fcphanesi, g\u00f6ndermek ve almak i\u00e7in D0 bitini otomatik de\u011fi\u015ftirir. Bizler adres olarak sadece 7 bitlik D7-D1 aras\u0131ndaki kodu veririz. Desimal ( DEC ) ya da HEX olarak verebiliriz. Wire k\u00fct\u00fcphanesi okuyacaksa D0 bitini 1 yapar. Yazma i\u015fleminde ise 0 yapar.<br \/>\n<strong>A\u015fa\u011f\u0131daki tabloda PCF8574 ve PCF8574A adresleme bitleri g\u00f6r\u00fcnmektedir.<\/strong><\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/pcf8574_8574A%20adress.png\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/pcf8574_8574A%20adress.png\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<p>Aradaki fark\u0131 g\u00f6rmeniz i\u00e7in PCF8574A entegresi de verilmi\u015ftir. Bu tip mod\u00fcllerin baz\u0131lar\u0131 PCF8574 entegresiyle, baz\u0131 mod\u00fcller ise PCF8574A entegresiyle yap\u0131lm\u0131\u015f olabilir. Elinizdeki mod\u00fcl\u00fcn entegresine bakarak adreslemesini ayarlayabilirsiniz. Buradaki fark sabit yaz\u0131lan slave adresin 4.5.6. bitlerinin fark\u0131d\u0131r. Bu \u015fekilde adres farkl\u0131l\u0131\u011f\u0131 ortaya \u00e7\u0131kmaktad\u0131r. Adres verirken say\u0131 sanki 7 bitlik bir say\u0131 gibi d\u00fc\u015f\u00fcnece\u011fiz. Yukar\u0131daki PCF8574 adreslemesine bakt\u0131\u011f\u0131m\u0131zda 0100xxx say\u0131s\u0131n\u0131 g\u00f6rebiliriz. en sa\u011fdaki biti biz de\u011fil wire k\u00fct\u00fcphanesi yazma ve okumaya g\u00f6re de\u011fi\u015ftirecektir.<br \/>\n\u00d6rnek verelim. mesela A1,A2,A3 u\u00e7lar\u0131n\u0131 GND ye ba\u011flad\u0131k diyelim. Say\u0131m\u0131z Binary olarak 0100000 = 32 (desimal Olarak ) 0x20 (Hex olarak) kar\u015f\u0131m\u0131za \u00e7\u0131kar. K\u00fct\u00fcphane Yazma konumunda en sa\u011fdaki biti de 0 yapt\u0131\u011f\u0131nda 8 bitlik say\u0131m\u0131z \u015fu \u015fekilde olur. 01000000= 64 (Hex 0x40) olacakt\u0131r. Okuma yapmak istersek K\u00fct\u00fcphane en sa\u011fdaki biti 1 yapacakt\u0131r. say\u0131m\u0131z 01000001 = 65 (Hex 0x41) olacakt\u0131r.\u00a0 A\u015fa\u011f\u0131da adres olarak entegrelere g\u00f6re verece\u011finiz de\u011ferler yer alm\u0131\u015ft\u0131r. Burada 7 bit \u00fczerinden hesaplay\u0131p verdi\u011fimiz cihaz adresi vard\u0131r. yazma okuma biti k\u00fct\u00fcphanenin i\u015fi oldu\u011fundan direkt bu de\u011ferleri A1,A2,A3 giri\u015flerinin durumuna g\u00f6re verebilirsiniz.<\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/son_ikili_address_map.png\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/son_ikili_address_map.png\" alt=\"\" width=\"763\" height=\"193\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 763px; --smush-placeholder-aspect-ratio: 763\/193;\" \/><\/a><\/p>\n<figure style=\"width: 337px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/adresleme.jpg\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/adresleme.jpg\" alt=\"\" width=\"337\" height=\"190\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 337px; --smush-placeholder-aspect-ratio: 337\/190;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff6600;\">Benim kulland\u0131\u011f\u0131m mod\u00fclde adresler bu \u015fekildedir. Kendi mod\u00fcl\u00fcn\u00fcze g\u00f6re programlardaki adresleri ayarlayabilirsiniz. <\/span><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"color: #ff6600;\">PCF8574 mod\u00fcl\u00fcn \u00e7al\u0131\u015fmas\u0131n\u0131n nas\u0131l oldu\u011funa bakal\u0131m.<\/span><\/strong><br \/>\n\u00d6ncelikle INT ucundan ba\u015flayal\u0131m. Ne i\u015fe yar\u0131yor. Bu pim, input verildi\u011finde mikrokontrolc\u00fcy\u00fc uyarmak i\u00e7in bir de\u011fi\u015fim yarat\u0131r. Normalde Pull Up direncinden dolay\u0131 HIGH durumundad\u0131r. INPUT geldi\u011finde bir s\u00fcre i\u00e7in LOW duruma ge\u00e7er. Bu \u015fekilde mikrokontrolc\u00fcy\u00fc uyar\u0131r. Biz devaml\u0131 INT ucunu kontrol ederiz. O de\u011fi\u015fti\u011finde birileri butona basm\u0131\u015f demektir. Biz de butonlar\u0131n hangisi bas\u0131ld\u0131 diye kontrol ederiz.\u00a0 Neden Pull up dirence ihtiya\u00e7 var. \u00c7\u00fcnk\u00fc entegrenin bu \u00e7\u0131k\u0131\u015f\u0131 Open Drain denilen bir \u00e7\u0131k\u0131\u015ft\u0131r. Sizin 10K ile buraya +Vcc gerilimini vermeniz gerekir. Bu durumda devaml\u0131 1 durumunda kalacak. INT, LOW oldu\u011funda s\u0131f\u0131ra d\u00fc\u015fecektir. ( Bu bacak LCD mod\u00fclde hi\u00e7 bir yere ba\u011flanmam\u0131\u015ft\u0131r. Kendiniz bir tel lehimleyip alabilirsiniz )<a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/opendrain1.png\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/opendrain1.png\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/opendrain2.png\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/opendrain2.png\" 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;\">Open drain \u00e7al\u0131\u015fma \u015fekli bu \u015fekildedir. R1 pull up direnci konulmas\u0131 zorunludur. <\/span><\/figcaption><\/figure>\n<p>P0-P7 pimleri input\/output\u00a0 (I\/O) pimleridir. SDA ve SCL pimleri I2C pimleridir. INT pimi interrupt (kesme) pimidir. A0-A2 pimleri de cihaz adresleme pimleridir.<br \/>\nBu mod\u00fclde 3 adet kontak b\u0131rak\u0131lm\u0131\u015ft\u0131r. Bu \u00fc\u00e7 konta\u011f\u0131, alt\u0131nda bulunan GND kontaklar\u0131na ba\u011flayarak adres se\u00e7imi yap\u0131l\u0131r. <span style=\"color: #ff6600;\">Ayn\u0131 hatta bir ba\u015fka I2C cihaz ya da devre yoksa bu adreslemeyi ellemeyebilirsiniz.<\/span><br \/>\nAdresleme tablosuna g\u00f6re adresinizi se\u00e7ersiniz. \u015eayet kontaklar\u0131 GND ye birle\u015ftirirseniz 0 olarak kabul etmelisiniz. A\u00e7\u0131k b\u0131rak\u0131rsan\u0131z ya da VCC ye ba\u011flarsan\u0131z 1 olarak kabul edip yukar\u0131daki adresleme tablosuna g\u00f6re adresinizi se\u00e7ebilirsiniz.<br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/PCF8574_ADAPTER_adres.jpg\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/PCF8574_ADAPTER_adres.jpg\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<p><span style=\"color: #ff6600;\">Baz\u0131 ki\u015filer adresi bulmak i\u00e7in program \u00e7al\u0131\u015ft\u0131rmay\u0131 \u00f6nerirler. Fakat bu mod\u00fclde her \u015fey g\u00f6r\u00fcn\u00fcr oldu\u011fundan tabloya g\u00f6re adresinizi belirlersiniz. Bakaca\u011f\u0131n\u0131z yer sadece A0-A2 noktalar\u0131 bir de entegrenin PCF8574 ya da PCF8574A olup olmad\u0131\u011f\u0131d\u0131r.<\/span><\/p>\n<p>Adres de tamam oldu\u011funa g\u00f6re art\u0131k Led yakmaya ba\u015flayabiliriz. \u015eayet Led yakmak istiyorsak yani \u00e7\u0131k\u0131\u015f olarak kontrol etmek istiyorsak, Port pimini 1 yapt\u0131\u011f\u0131m\u0131zda Ledi yakacak ak\u0131m\u0131 sa\u011flayamazs\u0131n\u0131z. Burada Ledi yakmak i\u00e7in Port pimini 0 yapman\u0131z gerekir.<\/p>\n<p><span style=\"color: #ff6600;\">Ledlerin ba\u011flant\u0131s\u0131 sa\u011fdaki ba\u011flant\u0131 gibi olmal\u0131.<\/span> Yani +Vcc den gelip entegrenin baca\u011f\u0131na ba\u011flanmal\u0131. <a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/LED_Active.jpg\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/LED_Active.jpg\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><br \/>\nGenelde Arduino veya di\u011fer entegrelerde INPUT ve OUTPUT olmas\u0131n\u0131 register (Yazma\u00e7) ayar\u0131yla yapt\u0131\u011f\u0131m\u0131zdan OUTPUT yapt\u0131ktan sonra port pimine bir diren\u00e7 koyup Ledin anot ucunu dirence ba\u011flay\u0131p katot ucunu ise GND ye ba\u011flar\u0131z.<br \/>\nFakat bu entegrede INPUT ve OUTPUT i\u00e7in ayr\u0131 bir register (yazma\u00e7) yoktur. Bundan dolay\u0131 okumak i\u00e7in port pimini 1 yaparak okuruz. Bu belki dezavantaj olarak d\u00fc\u015f\u00fcn\u00fclebilir ama bazen de ikili kullan\u0131mda avantaja d\u00f6n\u00fc\u015f\u00fcr. Proteus devresinde ve ger\u00e7ek devrede bu durumu g\u00f6rebilirsiniz.<br \/>\nHem Led hem de Buton ayn\u0131 pime ba\u011fl\u0131 olabiliyor. Beraber \u00e7al\u0131\u015fabiliyorlar.<br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/ikili_baglanti.jpg\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/ikili_baglanti.jpg\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<p>\u0130ki ayr\u0131 Arduino program\u0131 var. <strong>Birinci<\/strong> programda bas\u0131lan butonlar\u0131n kar\u015f\u0131l\u0131\u011f\u0131 olan ledin durum de\u011fi\u015fmesidir.\u00a0 <strong>ikinci<\/strong> Arduino program ise y\u00fcr\u00fcyen \u0131\u015f\u0131k gibi bir animasyon dur.\u00a0 <span style=\"color: #ff6600;\">Programlarda adres ba\u011flant\u0131lar\u0131 farkl\u0131d\u0131r gerekirse d\u00fczeltiniz.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/p3baglanti1.png\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/p3baglanti1.png\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<figure style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/P3_baglanti1.JPG\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/P3_baglanti1.JPG\" 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\"><strong><span style=\"color: #ff6600;\">Mod\u00fcl i\u00e7erisinde P3 ba\u011flant\u0131s\u0131 bu \u015fekildedir. siz Ledin katodunu buraya ba\u011flad\u0131\u011f\u0131n\u0131zda P3 Transist\u00f6r\u00fc, Transist\u00f6r de Ledinizi kontrol edecektir. <\/span><\/strong><\/figcaption><\/figure>\n<p>Ger\u00e7ek devre de sar\u0131 Led p3 portunun Ledidir. Ayr\u0131 olmas\u0131n\u0131n sebebi ise LCD mod\u00fclde P3 portunun LCD ayd\u0131nlatma Ledi olarak ayr\u0131ld\u0131\u011f\u0131 i\u00e7indir. Bundan dolay\u0131 mod\u00fclde LCD pim s\u0131ralamas\u0131n\u0131n sonunda yer alan K yazan katot ucudur. Bu zaten Led a\u00e7 ve kapat i\u015fleminde kullan\u0131ld\u0131\u011f\u0131ndan siz de bu ucu P3 olarak kullanabilirsiniz. Devre \u015femas\u0131nda P3 yerini takip etti\u011finizde transistor \u00fcn BASE baca\u011f\u0131n\u0131 LOW ve HIGH yapmak i\u00e7in kullan\u0131l\u0131r. LOW yapt\u0131\u011f\u0131nda Transist\u00f6r \u00e7al\u0131\u015fmaz ve LED yanmaz. Bundan dolay\u0131 K ucundan bilgi ald\u0131\u011f\u0131n\u0131zda Di\u011fer portlara g\u00f6re ters \u00e7al\u0131\u015facakt\u0131r. Yani di\u011fer portlar LOW oldu\u011funda Led yanarken P3 piminde HIGH oldu\u011funda LED yanar. Hepsi beraber ayn\u0131 formatta yans\u0131n diyorsan\u0131z K ucundan de\u011fil de 4K7 direncinin P3 ucundan bir kablo ba\u011flarsan\u0131z bu da ayn\u0131 olacakt\u0131r.<br \/>\n<span style=\"color: #ff6600;\"><strong>Sak\u0131n yeni lehimleyece\u011finiz hatlar\u0131, Kullan\u0131lmad\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fcz LCD taraf\u0131ndaki D0-D4 u\u00e7lar\u0131na ba\u011flamay\u0131n. Mod\u00fcl taraf\u0131nda kullan\u0131lmasa bile LCD taraf\u0131nda bir yerlere ba\u011fl\u0131 oldu\u011fundan LCD yi \u015fa\u015f\u0131rtabilir. <\/strong><\/span><\/p>\n<p>P3 ucuyla INT u\u00e7lar\u0131n\u0131 pcb \u00fczerinde bir yere yap\u0131\u015ft\u0131rabilece\u011finiz sokete aktarabilirsiniz. Bunlar\u0131 da breadboard \u00fczerinde deneme yaparken rahatl\u0131kla kullanabilirsiniz.<\/p>\n<p><span style=\"color: #ff6600;\"><strong>Buton ba\u011flarken normal devrelerde pull up diren\u00e7 kullan\u0131yorduk. Burada buna da gerek yok. Sadece GND ye direkt ba\u011flayaca\u011f\u0131n\u0131z bir buton i\u015f g\u00f6recektir.<\/strong><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Not:<\/strong><\/span> Benim ald\u0131\u011f\u0131m 2 adet mod\u00fclde Led ayd\u0131nlatma i\u00e7in 2 li pim ve bir jumper kullan\u0131lm\u0131\u015f. Fakat zaten pimler birbirine k\u0131sa devre oldu\u011fundan jumper\u2019a gerek kalm\u0131yor. T\u00fcm mod\u00fcller b\u00f6yle olmayabilir. Kendi mod\u00fcl\u00fcn\u00fczde bu \u015fekilde olup olmad\u0131\u011f\u0131n\u0131 \u00f6l\u00e7ebilirsiniz. Siz devreyi a\u00e7mak i\u00e7in jumper&#8217;\u0131 \u00e7\u0131kard\u0131\u011f\u0131n\u0131zda devre hala \u00e7al\u0131\u015f\u0131yor olabilir.<\/p>\n<p>Bir ba\u015fka akl\u0131n\u0131zda bulunsun diyece\u011fim not ise r\u00f6le ba\u011flant\u0131s\u0131 nas\u0131l yap\u0131laca\u011f\u0131. Bunun i\u00e7in yine LCD ayd\u0131nlatma ledinin bulundu\u011fu transist\u00f6r devresini g\u00f6z \u00f6n\u00fcnde bulundurun. Buradaki K ucu ledin yanmas\u0131n\u0131 sa\u011fl\u0131yorsa K ucuna ba\u011flanacak R\u00f6le de \u00e7al\u0131\u015fabilecektir. Ya da Bu uca optokupl\u00f6r\u00fcn Ledini ba\u011flarsan\u0131z izolasyonlu bir r\u00f6le kontrol devresi de elde edebileceksiniz. Bununla bir entegreyi High olarak tetikleyebilir miyim dedi\u011finizde elbette bu ba\u011flant\u0131yla HIGH olarak tetikleyebilirsiniz. Bunun i\u00e7in K ucuna pull up diren\u00e7 ba\u011flay\u0131n ve OUT ucundan \u00e7\u0131k\u0131\u015f al\u0131n.<br \/>\nTabloda A yerine P3 olarak varsay\u0131n.<\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/inverter_transistor.gif\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/Mikrobotik_Foto\/PCF8574\/inverter_transistor.gif\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><br \/>\nBen bu mod\u00fcle g\u00f6re anlatmaya \u00e7al\u0131\u015ft\u0131m. Piyasadan ba\u015fka tip g\u00f6r\u00fcnse bile PCF8574 ya da PCF8574A, I2C expander mod\u00fcl ald\u0131ysan\u0131z k\u00fct\u00fcphane kullanman\u0131za gerek yok. Rahatl\u0131kla bu bilgilerle onu da kullanabilirsiniz.<\/p>\n<p><strong>T\u00fcm dosyalara bu <a href=\"https:\/\/drive.google.com\/file\/d\/17HTICRWNwvb4yKfPwAcsf9V2HyI9SxlN\/view?usp=sharing\" target=\"_blank\" rel=\"noopener noreferrer\">linkten ula\u015fabilirsiniz.<\/a><\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Not:<\/strong><\/span> Sitemde<span style=\"color: #ff0000;\"><strong> ABONEL\u0130K <span style=\"color: #ff6600;\">yok<\/span>.<\/strong><\/span> Fakat isterseniz <strong><span style=\"color: #ff0000;\"><span style=\"color: #ff6600;\">Video \u00fczerindeki<\/span> \u015e <span style=\"color: #ff6600;\">butonuna basarak<\/span> ve ABONE OL <span style=\"color: #ff6600;\">butonuna basarak<\/span><\/span><\/strong> kolayl\u0131kla <span style=\"color: #ff0000;\"><strong>YOUTUBE<\/strong><\/span> \u00fczerinden <strong><span style=\"color: #ff0000;\">ABONE<\/span><\/strong> olabilirsiniz. Yaz\u0131lar ilk g\u00fcn <strong>YOUTUBE<\/strong> \u00fczerinde yay\u0131nlanacak sonras\u0131nda di\u011fer ortamlarda payla\u015f\u0131lacak.\u00a0 <strong>Yaz\u0131lar\u0131mdan an\u0131nda haberdar olmak isteyenler, <span style=\"color: #ff0000;\">ABONE<\/span> olabilirler.\u00a0<\/strong><\/p>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/x-EsICivwWk\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" data-load-mode=\"1\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start lazyload\">\ufeff<\/span><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131da kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z konular. 1- Arduino wire k\u00fct\u00fcphanesi kullan\u0131lmas\u0131, ve PICBASIC ile I2C haberle\u015fmesi 2- PCF8574 ve PCF8574A entegreli I2C LCD Mod\u00fcl adreslemesi, 3- Ayn\u0131 mod\u00fcl\u00fcn I2C dijital I\/O port&#8230; <\/p>\n","protected":false},"author":1,"featured_media":1918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,3,21],"tags":[],"class_list":["post-1915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-pic","category-proteus"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/1915","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=1915"}],"version-history":[{"count":13,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/1915\/revisions"}],"predecessor-version":[{"id":1937,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/1915\/revisions\/1937"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/1918"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=1915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=1915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=1915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}