• Sonuç bulunamadı

EFELER MİMAR SİNAN MESLEKİ VE TEKNİK ANADOLU LİSESİ

N/A
N/A
Protected

Academic year: 2022

Share "EFELER MİMAR SİNAN MESLEKİ VE TEKNİK ANADOLU LİSESİ"

Copied!
7
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

MODÜL ADI : PROGRAMLAMA VE KODLAMA DENEY ADI : ARDUİNO TANIMI VE ÖZELLİKLERİ DENEY NO :

AMAÇ

Arduino en temel haliyle elektronik projeler için bir elektronik geliştirme kartıdır. Bu yazılım sayesinde uyumlu projeler geliştirilebilir.

ÖN BİLGİ

Arduino geliştirme kartlarının üzerinde standart giriş ve çıkış pinleri bulunmaktadır, giriş pinleri ile analog ya da dijital çıkışlı sensörlerden gelen verileri Arduino kartlarımıza aktararak çeşitli işlemler gerçekleştirebiliriz. Çıkış pinleri üzerinden ise motor kontrolcü kartlarına, led sürücülerine ve diğer çıkış birimlerine standart çıkış sinyalleri sağlar. Çıkış pinlerinden standartlaştırışmış 3,3V ile 5V sinyal gerilimi çıkar. Arduino yazılımı geliştirme ortamı belli başlı kütüphanelerden oluşur.

Arduino Modelleri:

Arduino Uno: Arduino'nun en popüler karttır. ATMega 328 tabanlı bir mikrodenetleyicidir.

Arduino Mega: ATMega 2560 tabanlı mikrodenetleyiciye sahiptir. 54 adet dijital 16 adet analog bulunmaktadır.

Arduino Nano: Ailenin en küçük kartıdır. 48 mm x 18 mm lik boyutu ile küçük fakat Arduino Uno ile aynı güçte bir mikrodenetleyiciye sahiptir.

(2)

Arduino Leonardo: Diğer kart türlerinden farklı olarak USB bağlantısı için ek bir çipe gerek duyulmaz. Arduino Leonardo ATMega 32u4 tabanlı bir mikrodenetleyiciye sahiptir. Bilgisayara klavye ve fare olarak bağlanabilir.

Arduino LilyPad: LilyPad Arduino da diğer Arduino’lar gibi bir geliştirme kartıdır. Kumaşa dikmek için özel olarak Leah Buechley ve SparkFun tarafından tasarlanmıştır.

Arduino Esplora: Arduino Leonardo 'dan türetilen bir mikrodenetleyici kartıdır. Arduino Esplora 'nın diğer tüm kartlardan farkı kendi üzerinde kullanıma hazır sensörler bulundurmasıdır.

Arduino Üzerindeki Elemanlar:

1:USB jakı

2:Power jakı (7-12 V DC) 3:Mikrodenetleyici

4:Haberleşme çibi 5:16 MHz kristal 6:Reset butonu 7:Power ledi 8:TX / RX ledleri 9:Led

10:Power pinleri 11:Analog girişi pin

12:TX / RX pinleri (seri p.) 13:Dijital giriş / çıkış pin 14:Ground ve AREF pin 15:Seri programlama pin 16:USB arayüzü için ICSP

Saat frekansı: 16 MHz. Mikrodenetleyici: ATmega328. Flash hafıza: 32 KB Tavsiye edilen besleme gerilimi: 7 - 12 V DC

(3)

Haberleşme: Arduino Uno bir bilgisayar ile başka bir Arduino ile ya da diğer mikrodenetleyiciler ile haberleşme için çeşitli imkânlar sunar. ATmega328 mikrodenetleyici, RX ve TX pinlerinden erişilebilen seri haberleşmeyi destekler. RX: Receive X demektir, türkçesi ise (almak) olarak tercüme edilir. TX: Transmit X demektir, bununda türkçesi (iletmek) diye tercüme edilir. Anlaşılan birisi alırken diğeri ileten bir port diyebiliriz.

Kristal osilatörler: Kuvvetlendirici ve geribesleme kısımlarında oluşan, girişinde herhangi bir işaret yokken çıkışında devrenin kendisi tarafından belirlenmiş dalga formlu işaretli çalışma frekansını üreten elektronik devrelerdir.

AREF: Analog girişler için referans voltajıdır. analogReference() fonksiyonu ile kullanılır.

PWM: (3, 5, 6, 9, 10, 11) Bu pinler analogWrite () fonksiyonu ile PWM sinyali sağlar.

Analog Sinyal: Kısaca sürekli sinyallerdir. Zamanda ileryen ve zamana göre değişkenbir değer alan sinyallerdir. Zamana göre sonsuz değer alır. Arduino Uno’ da analog pinler 0-255 arası değer alır. Minimum değer 0 da pinden 0 volt, maksimum değer 255 de pinden 5 volt geçer.

Digital Sinyal: Kısaca ayrık zamanlı sinyallerdir. Sürekli değildir çünkü sayısaldır.

Sayısallaştırılmış sinyaller olduğu için 1 ve 0 değerleri vardır. ( Binary) 0 değerinde 0 volt, 1 değerinde 5 volt geçer.

PWM ve Digitalden Analoga Dönüşümü: Kartan 5V veya 3,3V çıkışları vererek ledlerden parlaklık alınacaktır.

Buradaki parlaklığı değiştirmek için gerilimi düşürmemiz yeterlidir. İşte bu yüzden PWM (Darbe Genişliği Modülasyonu) tekniği kullanırız. Çıkıştan aldığımız gerilimi belirli zaman aralığında açıp kapatarak 0-5 Volt arasında istediğimiz gerilimi çıkış pininden alınırız. Bu pinler: 3-5-6-9-10-11 PWM özellikli pindir. 2 milisaniyelik (ms) süre içindeki değere bakılacaktır.

(4)

Örnek:

 analogWrite(3,255) yazılırsa: Arduino 3.pininden tam güç verir (%100) yani 5Volt verir.

 analogWrite(5,127) yazılırsa: Arduino 5.pininden yarım güç verir (%50) yani 2,5Volt verir.

 analogWrite(6,63) yazılırsa: Arduino 6.pininden çeyrek güç verir (%25) yani 1,25Volt verir.

NOT: Orjinal Arduino’da USB Serial dönüştürücü Atmega 16U2′dir. Klon modellerinde ise CH340 Serial Dönüştürücü kullanılmıştır. CH340 dönüştürücüsü Atmega 16U2’den çok daha uygun maliyetli olduğu için sadece bu komponentin değişmesi bile fiyata çok etki etmektedir.

Kullanıcılar açısından CH340 Dönüştürücülü Klon Arduino kullanmakla Orjinal Arduino Kullanmak arasında temelde hiç bir fark yoktur. Sadece Klon için CH340 sürücüsünün kurulması ve tanıtılması gerekir.

Arduino Program Yazarken Temel Kavramlar:

void setup(): Bu fonksiyon program yüklenilip enerji verildikten veya reset atıldıktan sonra 1 defa çalışır. Bu fonksiyon içine yazdıklarımız pin modları, kütüphaneyi başlatma ve değişkenlerdir.

void loop(): Setup() fonksiyonumuz tamamlandıktan sonra loop fonksiyonumuza geçer ve burada adından anlaşıdığı gibi sonsuz döngü içinde ilk komuta geri döner ve aynı işleme devam ederek programı çalıştırır.

pinMode(pin, mod): Dijital giriş/çıkış pinlerinden herhangi bir giriş ya da çıkış olarak kullanmak için kullanılır. Pin adı verilen alana dijital pinlerden hangisini modelinden yapılmıştır.

digitalWrite (): DigitalWrite fonksiyonu daha önceden çıkış olarak ayarlanmış pinden güç çıkışı yapmak veya belirtilen pindeki gücü kesme işlemlerini yapar. Pin çıkışı HIGH(+5 V) veya LOW(0 V) atamak için kullanılır.

(5)

digitalRead(pin): Sayısal okuma olarak gelen ifadeyle belirtilen pinden dijital okuma işlemi yapar. Pin Lojik 1 ise geriye “1”, Lojik 0 ise geriye “0” olarak tam sayı değer gönderir.

Örnek kullanım şu şekildedir:

digitalRead(3); // 3 Nolu Pindeki değeri okuyup işlem yaptıracağız.

#define: Ön işlemci komutu olup, Değişken/Sabit tanımlama bir isim yerine başka bir ismi değişimini sağlar. Bazen define komutu yerine ‘’const int’’ komutu ile işlem yapabiliriz.

#include: Emri, daha önceden hazırlanan, standart veya kullanıcı tarafından tanımlanan dosyalarda saklanan, sık kullanılan veri ve fonksiyon bildirimlerini programa dâhil etmede kullanılır.

Delay: Bu komut bekleme için kullanılan bir komuttur. Örneğin projenizde 5 saniye bekleme yapılmasını isterseniz delay(5000) komutu ile bu işlemi yapabilirsiniz.

Serial: Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Programımızda setup() fonksiyonu içerisinde Serial.begin(9600) şeklinde çağırdığımız fonksiyon ile iletişim hızını ayarlıyoruz. Saniyede gönderilen bit sayısı 9600bit olarak ayarlanıyoruz. Seri haberleşmede iletişim hızı “baud” adı verilen bir değerle ifade edilir. Programımızın Serial Monitor’de görüntülenecektir.

Serial.print() ve Serial.println() fonksiyonları ile adından anlaşıldığı gibi print: yazdır komutu ile yazdığımız karakteri serial monitörüne yollayabiliyoruz. İki fonksiyon arasındaki tek fark ‘’/n’’

yani enter karakteri eklenir. Buda karşı tarafta alınan verilerin alt alt gelmesini sağlar.

Serial.read() fonksiyonu, seri porta gelen verileri okumak için kullanılır. Okunan bu verileri bir değişkene atayarak kullanabilirsiniz.

Süslü Parantez ({}): Fonksiyonlarda, döngülerde ve koşullu ifadeleri bildirirken süslü parantez kullanılır. İç içe olan fonksiyonlarda en dıştaki süslü parantezin en baştaki fonksiyona ait olduğu dikkat edilmelidir.

(6)

Noktalı virgul(;): Bizim soyledigimiz şeyin nerede bittigini anlatıyor. Ve ona göre basladığı yer ile bittigi yer (noktali virgul) arasinda kısımdır.

( // ) İşareti: Bu işaretten sonra yazılan kısımlar programa dâhil edilmeyen sadece programla ilgili açıklama yapılan sonradan bakıldığı zamanlarda ne yapılmak istendiğini daha rahat anlamamızı sağlayan ifadedir.

Önemli Veri Tipi Dönüşümler:

char: karakter (%c) float: ondalıklı gerçek sayı (6.basamağa kadar hassasiyet) (%f) int: tamsayılar (%d) double: ondalıklı gerçek sayı (10. basamağa kadar hassasiyet) byte: arası pozitif tamsayılar (0-225) boolean: Mantıksal veriler (0 veya 1)

String: Metinsel ifadeleri saklamak için kullanılan veri tipidir. String değişkenine atayacağımız değerleri çift tırnaklar içine yazmalıyız. (örnek: “yazilim”)

Pull Up ve Pull Down Direnci: Genellikle lojik sitemlerde kullanılır. Asıl amacı lojik sistemler bir arada çalışırken voltaj ve akım uyumsuzluklarını dengelemektir. Bu nedenle mikro- denetleyicilerde ve entegrelerde sıklıkla kullanılırlar. Devrenin voltaj kaynağı arasına bağlanan

dirençlerdir. Bu yöntemde kullanılan 10K’ lık direnç Pull-Down direnci olarak isimlendirilir.

Pull Up direncinin bağlantı şeması yukarıda verildiği gibidir. Kısaca özetlemek gerekirse butona basılı değilken entegre Vin (5V) kadar enerjilenirken butona basıldıktan sonra Vin girişi daha az direnç olan yolu tercih edeceği için toprağa gidecektir ve entegre üzerine 0 volt seviyesinde bir gerilim düşecektir. Butona basılınca Arduino pinine Lojik0(LOW) gönderilir. Pull Up direnci lojik devrelerde veya lojik sistemlerde umulan lojik seviyelerde kalmasını sağlar.

Pull Down direncine ait devre şeması yukarıda gösterildiği gibidir.

Burada lojik sistemin girişi toprağa bir direnç ile bağlanmıştır. Bu nedenle lojik sistemin girişine 0 Volt uygulanmaktadır. Dışarıdan bir sistem veya bir

(7)

buton ile +5 Volt verdiğimizi varsayarsak 0 Volt seviyesinde olan lojik sistemimizin girişi +5 Volt’a çekilecektir. Özetle Arduino pininin sürekli Lojik0 (LOW) konumunda tutulması sağlanır. Butona basılınca Arduino pinine Lojik1(HIGH) gönderilir.

ŞEMA

Led yakıp Sönmesi:

void setup() // Arduino Çalıştığında:

{

pinMode(13, OUTPUT); // 13. pini çıkış olarak tanımlıyoruz.

digitalWrite(13, LOW); // 13. pini söndür.

}

void loop() // Arduino Çalıştığı sürece:

{

digitalWrite(13, HIGH); //13. pine elektrik gönder.

delay(1000); // 1 saniye bekle.

digitalWrite(13, LOW); // 13. pine giden elektriği kes.

delay(1000); // 1 saniye bekle.

}

Potansiyometre ile Değer okuma:

const int POT=0; // pot 0 nolu analog girişe bağlı

int deger=0; // başlangıç değeri 0 olan değer değişkeni tanımlıyoruz

void setup() {

Serial.begin(9600); /* serial monitörden potun değerini görebilmek için bu komut satırını ekleyerek 9600 baud hızına ayarlıyoruz */

Serial.println("Pot Deger Okuma"); //Seri monitörde bir kez gönderilen bir mesaj tanımlıyoruz

}

void loop() {

deger=analogRead(POT); /*pottan okunan değeri ‘’deger’’ değişkenine dijitale çevrilmiş halde aktarıyoruz*/

Serial.println(deger); /* deger değişkeninin içerisindeki değeri PC ortamında

gözlemliyoruz */

delay(1000); //Bu işlem 100 milisaniye aralıklarla yapılır

}

Referanslar

Benzer Belgeler

Bütün üretim şekillerinde pozitif yükler bir kutupta, negatif yükler bir kutupta sürekli kalıyorlarsas, bir doğru gerilim kutupların yük cinsleri (Polaristesi)

Proses (İşlem), Endüstriyel ve Bina Otomasyonunda Kullanılan Programlanabilir Kontrolörler (PLC), Döngü Kontrolörleri, Dağıtılmış Kontrol Sistemleri (DCS), I/O

Kızılötesi ışınım yapacak olan ledler TS EN 120002 ‘ İnfrared ışık yayan diyotlar, infrared ışık yayan diyot dizileri’, alıcı devre olarak fototransistörler

Yurtiçinde ise Ağustos ayı işsizlik rakamının çift haneye çıkması ve para piyasasındaki sıkışıklık ile kısa vadeli tahvil ihalesine ilginin

Ekim ve Kasım aylarında halen üçüncü çeyreğin altında seyretse de endeksin yönünü yukarı çevirmiş olması kayda değer gelişme.. ZEW endeksi yaklaşık

Veri gündemi açısından sakin bir günde ABD fabrika siparişleri %-1 ile beklenti olan %-0,9 oranından sınırlı da olsa daha kötü geldi.. Akşam saatlerinde konuşan

Yurtdışına baktığımızda geçtiğimiz Çarşamba günü akşamı şahin FED sonrasında ABD’den gelen veriler bir miktar da olsa beklentilerin atında kalırken, Avro

Stanley Fisher ve William Dudley de Yellen’in şahinvari açıklamalarını destekleyici beyanat verdiler.. Açıklamalar sonrasında Dolar endeksi (DXY) son üç ayki en