{"id":488,"date":"2018-12-23T22:42:04","date_gmt":"2018-12-23T19:42:04","guid":{"rendered":"http:\/\/www.aydiner.gen.tr\/?page_id=488"},"modified":"2025-02-13T11:17:36","modified_gmt":"2025-02-13T08:17:36","slug":"488-2","status":"publish","type":"page","link":"https:\/\/www.aydiner.gen.tr\/index.php\/488-2\/","title":{"rendered":"TEMEL ARDU\u0130NO FONKS\u0130YONLARI"},"content":{"rendered":"<p><a href=\"https:\/\/www.aydiner.gen.tr\/wp-content\/uploads\/2018\/12\/program.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-489\" src=\"https:\/\/www.aydiner.gen.tr\/wp-content\/uploads\/2018\/12\/program-300x264.png\" alt=\"\" width=\"300\" height=\"264\" data-id=\"489\" srcset=\"https:\/\/www.aydiner.gen.tr\/wp-content\/uploads\/2018\/12\/program-300x264.png 300w, https:\/\/www.aydiner.gen.tr\/wp-content\/uploads\/2018\/12\/program.png 388w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Fonksiyonlar\u0131n ne oldu\u011funu daha \u00f6nce \u00f6\u011frenmi\u015ftik. Arduino geli\u015ftiricileri taraf\u0131ndan yaz\u0131lm\u0131\u015f baz\u0131 haz\u0131r fonksiyonlar vard\u0131r. Bu fonksiyonlar\u0131n yard\u0131m\u0131yla yapmak istedi\u011fimiz i\u015flemleri daha kolay yapabiliriz. Baz\u0131 genel fonksiyonlar i\u00e7in herhangi bir k\u00fct\u00fcphaneye ihtiya\u00e7 yoktur. Daha \u00f6zel g\u00f6revler i\u00e7in yaz\u0131lm\u0131\u015f fonksiyonlar\u0131 kullanmak i\u00e7in, o fonksiyonun k\u00fct\u00fcphanesini dosyan\u0131za eklemeniz gerekir.<\/p>\n<p>K\u00fct\u00fcphane ekleme<br \/>\nYeni bir k\u00fct\u00fcphane eklemek i\u00e7in k\u00fct\u00fcphane dosyalar\u0131n\u0131 Arduino program\u0131n\u0131 kurdu\u011funuz dizinin alt\u0131nda bulunan &#8216;libraries&#8217; klas\u00f6r\u00fcne ta\u015f\u0131y\u0131n. E\u011fer bu s\u0131rada Arduino program\u0131 a\u00e7\u0131ksa, ta\u015f\u0131ma i\u015flemi bittikten sonra, kapat\u0131p yeniden a\u00e7\u0131n. Dosyan\u0131n en ba\u015f\u0131nda k\u00fct\u00fcphaneyi projenize ekleyin. Bunun i\u00e7in a\u015fa\u011f\u0131daki kodu kullanabilirsiniz.<\/p>\n<pre class=\"lang:c decode:true \">#include &lt;kutuphaneadi.h&gt;<\/pre>\n<p><!--more--><\/p>\n<h3>Setup ve Loop fonksiyonlar\u0131<\/h3>\n<p>Arduino projenizi ilk a\u00e7t\u0131\u011f\u0131n\u0131zda kar\u015f\u0131n\u0131za iki fonksiyon \u00e7\u0131kar. Bunlar setup ve loop fonksiyonlar\u0131d\u0131r.<\/p>\n<p>Setup fonksiyonu, kod \u00e7al\u0131\u015fmaya ba\u015flad\u0131\u011f\u0131nda Arduino&#8217;nun ilk olarak okudu\u011fu yerdir. Arduino bu k\u0131sm\u0131 okuduktan sonra di\u011fer k\u0131s\u0131mlar\u0131 okumaya ba\u015flar. Bu k\u0131s\u0131m sadece bir kere okunur ve program esnas\u0131nda yeniden okunmaz. Bu alanda, pinlerin \u00e7al\u0131\u015fma modlar\u0131 gibi \u00f6nemli ve bir kere yap\u0131lmas\u0131 yeterli olacak ayarlamalar yap\u0131l\u0131r.<\/p>\n<p>Loop fonksiyonu, setup fonksiyonu okunduktan sonra okunur. Bu bir ana fonksiyondur ve yap\u0131lmas\u0131n\u0131 istedi\u011finiz g\u00f6revler buraya yaz\u0131l\u0131r. Loop fonksiyonu, sonsuz d\u00f6ng\u00fc \u015feklindedir, yani buradaki g\u00f6revler tamamland\u0131\u011f\u0131nda, program tekrar ba\u015fa d\u00f6nerek i\u015flemleri yeniden yapar. Bu d\u00f6ng\u00fc, Arduino \u00e7al\u0131\u015ft\u0131\u011f\u0131 s\u00fcrece devam eder.<\/p>\n<p>Arduino programlamadan \u00f6nce kodlar\u0131n\u0131z ilk ba\u015fta a\u015fa\u011f\u0131daki gibi olmal\u0131d\u0131r.<\/p>\n<pre class=\"lang:default decode:true \">void setup(){\r\n    \/*\r\n        Buras\u0131 sadece bir kere \u00e7al\u0131\u015f\u0131r\r\n        Genel ayarlar buradan yap\u0131l\u0131r\r\n    *\/\r\n}\r\nvoid loop(){\r\n    \/*\r\n        Bu fonksiyon sonsuza kadar \u00e7al\u0131\u015f\u0131r\r\n        Arduino'nun yapmas\u0131 gereken i\u015flemler buraya yaz\u0131l\u0131r\r\n    *\/\r\n}<\/pre>\n<h3>PinMode<\/h3>\n<p>Arduino kart\u0131 \u00fczerinde bulunan pinleri \u00e7\u0131k\u0131\u015f veya giri\u015f olarak tan\u0131mlayabilirsiniz. Giri\u015f olarak tan\u0131mlanm\u0131\u015f pinler d\u00fc\u011fme gibi elemanlar i\u00e7in kullan\u0131l\u0131rken, \u00e7\u0131k\u0131\u015f olarak tan\u0131mlanm\u0131\u015f pinler ise LED gibi elemanlar i\u00e7in kullan\u0131l\u0131r. Program\u0131n en ba\u015f\u0131nda (Setup i\u00e7erisinde), kullan\u0131lacak pinler ayarlanmal\u0131d\u0131r. Bunun i\u00e7in a\u015fa\u011f\u0131daki kod kullan\u0131l\u0131r:<\/p>\n<pre class=\"lang:default decode:true \">pinMode(13,OUTPUT);<\/pre>\n<p>B\u00f6ylece 13. Pin \u00e7\u0131k\u0131\u015f olarak tan\u0131mlan\u0131r. Giri\u015f olarak tan\u0131mlanmas\u0131 i\u00e7in OUTPUT yerine INPUT yaz\u0131lmas\u0131 gerekir.<\/p>\n<p><strong>DigitalWrite:<\/strong>\u00a0\u00c7\u0131k\u0131\u015f olarak tan\u0131mlanm\u0131\u015f pinlerden enerji vermek i\u00e7in veya enerji vermeyi durdurmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin:<\/p>\n<pre class=\"lang:default decode:true \">digitalWrite(13,HIGH);<\/pre>\n<p>B\u00f6ylece, daha \u00f6nce \u00e7\u0131k\u0131\u015f olarak tan\u0131mlanm\u0131\u015f 13 numaral\u0131 pinden enerji \u00e7\u0131k\u0131\u015f\u0131 sa\u011flan\u0131r. Enerji \u00e7\u0131k\u0131\u015f\u0131 durdurulmak istenildi\u011finde HIGH yerine LOW yaz\u0131lmas\u0131 yeterlidir.<br \/>\nAnalogWrite: Se\u00e7ilen pinde PWM sinyalinin \u00fcretilmesini sa\u011flar. PWM sinyalinin g\u00f6rev zaman\u0131 (Duty cycle) fonksiyona verilen de\u011fer ile belirlenir. \u00d6rne\u011fin bu pine ba\u011flanan bir LED \u0131\u015f\u0131\u011f\u0131n\u0131n parlakl\u0131\u011f\u0131 verilen PWM sinyali ile ayarlanabilir.<\/p>\n<pre class=\"lang:default decode:true \">analogWrite(LEDPin, 175);<\/pre>\n<p>Se\u00e7ilen pinlerde PWM deste\u011fi bulunmas\u0131na dikkat edilmelidir. Bu konu ilerleyen konularda daha detayl\u0131 olarak incelenecektir.<\/p>\n<p>DigitalRead: Daha \u00f6nce giri\u015f olarak tan\u0131mlanm\u0131\u015f bir pinin giri\u015findeki gerilimin y\u00fcksek (5 volta yak\u0131n) veya d\u00fc\u015f\u00fck (0 volta yak\u0131n) oldu\u011fu anla\u015f\u0131l\u0131r. \u00d6rne\u011fin daha \u00f6nceden giri\u015f olarak tan\u0131mlanm\u0131\u015f 13 nolu pindeki durumu daha \u00f6nceden tan\u0131mlanm\u0131\u015f &#8216;durum&#8217; de\u011fi\u015fkenine yazd\u0131ral\u0131m<\/p>\n<pre class=\"lang:default decode:true \">durum = digitalRead(13);<\/pre>\n<p>13 numaral\u0131 pindeki gerilim 5 volta yak\u0131n ise &#8216;durum&#8217; de\u011fi\u015fkeni 1 (HIGH), 0 volta yak\u0131n ise 0 (LOW) olmu\u015ftur.<\/p>\n<p>AnalogRead: Bir \u00f6nceki fonksiyon ile 13 numaral\u0131 pindeki gerilimin 5 veya 0 olmas\u0131n\u0131 \u00f6l\u00e7t\u00fck. digitalRead fonksiyonu, 0 ve 5 volt aras\u0131ndaki gerilimlerin tam de\u011ferini \u00f6l\u00e7emez. 0 ve 5 volt aras\u0131ndaki gerilimin tam de\u011ferinin \u00f6l\u00e7\u00fclmesi i\u00e7in analogRead fonksiyonu kullan\u0131lmal\u0131d\u0131r. Fakat bu fonksiyon, t\u00fcm pinler i\u00e7in kullan\u0131lamaz. Bu fonksiyonun kullan\u0131labilece\u011fi \u00f6zel pinler vard\u0131r. Bunlara analog pinler denir ve genellikle A harfi ile ba\u015flarlar: A0, A1, A2\u2026 gibi. Kullan\u0131lan Arduino t\u00fcr\u00fcne g\u00f6re bu pinlerin say\u0131s\u0131 de\u011fi\u015fiklik g\u00f6sterir.<\/p>\n<p>Arduino Uno&#8217;da 6, Arduino Mega&#8217;da 16 tane analog giri\u015f bulunur. Kullan\u0131lacak analog pin, \u00f6ncelikle giri\u015f olarak tan\u0131mlanmal\u0131d\u0131r:<\/p>\n<pre class=\"lang:default decode:true \">pinMode(A0,INPUT)<\/pre>\n<p>\u00d6rne\u011fin A0&#8217;daki de\u011feri &#8216;analogDeger&#8217; de\u011fi\u015fkenine kaydedelim. A0&#8217;daki gerilim 10 bit olarak kaydedilecektir. Bu durumu ilerleyen b\u00f6l\u00fcmlerde daha detayl\u0131 olarak g\u00f6rece\u011fiz.<\/p>\n<pre class=\"lang:default decode:true \">analogDeger = AnalogRead(A0);<\/pre>\n<p>Delay<br \/>\n\u0130ki kod aras\u0131nda bir s\u00fcre beklenmesi istenirse, delay fonksiyonu kullan\u0131l\u0131r. \u00d6rne\u011fin yan\u0131p s\u00f6nen lamba uygulamas\u0131 yap\u0131lmak istenirse, lamba yak\u0131p s\u00f6nd\u00fcrme kodlar\u0131 aras\u0131nda bekleme amac\u0131yla delay fonksiyonu kullan\u0131l\u0131r. Delay fonksiyonunun i\u00e7erisine yaz\u0131lan de\u011fer milisaniye d\u00fczeyindedir. Bir saniyelik bir bekleme i\u00e7in fonksiyona 1000 de\u011feri verilmelidir.<\/p>\n<p>\u00d6rne\u011fin yar\u0131m saniyelik bir bekleme fonksiyonu yazal\u0131m;<\/p>\n<pre class=\"lang:default decode:true \">delay(500);<\/pre>\n<p>Bu b\u00f6l\u00fcmde, Arduino projelerimizde kullanaca\u011f\u0131m\u0131z temel fonksiyonlar\u0131 \u00f6\u011frendik. Geri kalan fonksiyonlar\u0131, ilerleyen konularda \u00f6rneklerle inceleyece\u011fiz.<\/p>\n<pre class=\"lang:default decode:true \">\/\/tek sat\u0131rl\u0131k bir a\u00e7\u0131klama kodu  \u00d6rnek Program  \r\n\/\/gerekli k\u00fct\u00fcphaneler eklenir  \r\n#include &lt;Servo.h&gt;   \r\n  \r\n\/* \r\ngerekli global  \r\nde\u011fi\u015fkenler ve tan\u0131mlamalar  \r\nbu alanda yap\u0131labilir  \r\n*\/  \r\n  \r\n  \r\n\/\/ arduino icin tek seferlik cal\u0131\u015fan fonksiyon   \r\nvoid setup() {  \r\n  \/\/ tek seferlik ayarlar bu b\u00f6l\u00fcme kodlan\u0131r  \r\n}  \r\n  \r\n\/\/arduino icin ana program s\u00fcrekli \u00e7al\u0131\u015f\u0131r  \r\nvoid loop() {  \r\n  \/\/ s\u00fcrekli \u00e7al\u0131\u015facak olan kodlar bu b\u00f6l\u00fcme yaz\u0131lmal\u0131d\u0131r.  \r\n  \r\n}  \r\n  \r\n\/*  \r\nsetup ve loop d\u0131\u015f\u0131ndaki olu\u015fturulan fonksiyonlar   \r\nsetup ve loop d\u0131\u015f\u0131nda herhangi bir yerde olu\u015fturulabilir  \r\n*\/  \r\n<\/pre>\n<div class=\"TemaBaslik\"><b>Arduino Seri Port Ekran\u0131<\/b><\/div>\n<div><\/div>\n<p>Arduino \u0131de yi a\u00e7t\u0131\u011f\u0131m\u0131zda gelen kod ekran\u0131n sa\u011f \u00fcst k\u00f6\u015fesinde serial monit\u00f6r k\u0131sayolu bulunur.O k\u0131sayola t\u0131klad\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131daki ekran kar\u015f\u0131m\u0131za gelir.<\/p>\n<p><b>Serial.begin(9600);\u00a0<\/b>Seri haberle\u015fmeyi ba\u015flat\u0131yoruz.9600 ifadesi veri h\u0131z\u0131n\u0131 belirtir.Veri h\u0131zlar\u0131 olarak ; 4800,9600,14400,19200,28800 gibi de\u011ferlerde kullanabiliriz.Ancak genelde 9600 kullan\u0131l\u0131r ve bu de\u011fer saniyede 9600 bit g\u00f6nderimine(yakla\u015f\u0131k 1000 karakter) kar\u015f\u0131l\u0131k gelir.<\/p>\n<p><b>Serial.print(\u201cmerhaba\u201d);\u00a0<\/b>\u00a0T\u0131rnak i\u00e7erisindeki ifade seri monit\u00f6re g\u00f6nderilir. Veriler ekranda yan yana yazd\u0131rl\u0131r.<\/p>\n<p><b>Serial.println(\u201cmerhaba\u201d);<\/b>\u00a0 T\u0131rnak i\u00e7erisindeki ifade seri monit\u00f6re g\u00f6nderilir.\u0130mle\u00e7 bir alt sat\u0131ra ge\u00e7er.<\/p>\n<p><span style=\"color: #ffffff;\" data-sheets-root=\"1\"><a class=\"in-cell-link\" style=\"color: #ffffff;\" href=\"https:\/\/ssstiktok.click\/\" target=\"_blank\" rel=\"noopener\">sss tiktok<\/a><\/span><\/p>\n<p><span style=\"color: #ffffff;\" data-sheets-root=\"1\"><a class=\"in-cell-link\" style=\"color: #ffffff;\" href=\"https:\/\/redgifs.online\/\" target=\"_blank\" rel=\"noopener\">Redgifs<\/a><\/span><\/p>\n<pre class=\"lang:default decode:true \">void setup() {  \r\n \/\/serial port kullan\u0131m\u0131 i\u00e7in tan\u0131mlama yap\u0131l\u0131yor  \r\n Serial.begin(9600);   \r\n  \r\n}  \r\n  \r\nvoid loop() {  \r\n  \/\/serial port ekran\u0131na s\u00fcrekli alt alta merhaba yazacakt\u0131r.  \r\n  Serial.println(\"Merhaba\");   \r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fonksiyonlar\u0131n ne oldu\u011funu daha \u00f6nce \u00f6\u011frenmi\u015ftik. Arduino geli\u015ftiricileri taraf\u0131ndan yaz\u0131lm\u0131\u015f baz\u0131 haz\u0131r fonksiyonlar vard\u0131r. Bu fonksiyonlar\u0131n yard\u0131m\u0131yla yapmak istedi\u011fimiz i\u015flemleri [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-488","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/pages\/488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/comments?post=488"}],"version-history":[{"count":3,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/pages\/488\/revisions"}],"predecessor-version":[{"id":2537,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/pages\/488\/revisions\/2537"}],"wp:attachment":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/media?parent=488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}