SlideShare a Scribd company logo
1 of 125
Download to read offline
Arduino İle Programlama
Aslı Ergün
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.1: MİKRODENETLEYİCİ NEDİR?
• Genel olarak mikrodenetleyici giriş
portlarından aldığı veriyi kendisine
verilen komutlar dahilinde işleyerek
çıkış portlarına ileten, bir çok defa
programlanabilen bir
mikroişlemcidir. Mikrodenetleyiciler
çalışmak için kendilerine yüklenen
program haricinde bilgisayarlar gibi
bir işletim sistemine ihtiyaç
duymazlar.
• Günümüzde çok çeşitli
mikrodenetleyici marka ve modelleri
mevcuttur, fakat bu dersin konusu
Arduino mikrodenetleyicilerin
özellikleri ve programlamasını
kapsamaktadır.
Bölüm 1: MİKRODENETLEYİCİ VE
ELEMANLARI
Konu 1.1.1: ARDUINO NEDİR?
• Arduino, kullanımı kolay, açık kaynak
kodlu yazılım ve donanıma sahip bir
mikrodenetleyici prototipleme
platformudur. Açık kaynak ifadesi,
yazılımın kaynak koduna ve donanım
bilgilerine erişiminin serbest olması
ve isteğe göre değiştirilebilmesi
anlamındadır.
• Baskılı devresi, şematik tasarımı, PC
üzerinde çalışan derleyicisi,
kütüphaneleri ve tüm detayları ile
internet ortamında paylaşılmaktadır.
• Arduino platformunda Atmega
ailesinden mikrodenetleyiciler
kullanılır.
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.1.1: ARDUINO NEDİR?
• Arduino platformu, alt seviye mikroişlemci bilgisi
gerektirmemesi ve zengin bir kütüphane desteği
olması sebebiyle kolaylık sağlar.
• http://arduino.cc/ Arduino platformunun resmi
web sitesidir.
• Arduino programlamada C/C++/ Java tabanlı bir
dil kullanmaktadır.
• Baş tasarımcılarının (Massimo Banzi ve David
Cuartielles) İtalyan olmaları nedeniyle cihazın adı
da doğal olarak İtalyancadan seçilmiş. Kelime
“Sıkı arkadaş” anlamına gelen bir erkek ismidir.
Wikipedia kaynağına göre Arduino'ya ilham veren
Wiring platformu, Ivrea Tasarım Enstitüsü'nde
Hernando Barragan tarafından geliştrilmiş. Ivrea'lı
Arduin ise bu enstitünün bulunduğu kasabaya ait
tarihi bir karakterdir.
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.2: ARDUINO İLE NE YAPABİLİRSİNİZ?
Giyilebilir Uygulamalar
(Bisikletçinin arkasındaki
dönüş sinyalleri.
Robotik Uygulamalar
Medikal Uygulamalar
(Kalp sinyali izleme)
Askeri Uygulamalar
(Mini drone’lar)
Ev Güvenliği ve Otomasyonu
Uygulamaları
Tarımsal Uygulamalar
Mobil Uygulamalar
RFID Uygulamalar
(Kimlik Giriş Sistemleri)
3 Boyutlu Yazıcı
Uygulamaları
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.3: NEDEN ARDUINO KULLANMALIYIZ?
• Hem donanımı, hem de yazılımı açık
kaynaklıdır, bu sebeple ucuzdur ve
erişilebilirdir, deneysel amaçlı yapılacak
işler için uygun fiyatlı geliştirme ortamı
sunar.
• Zengin kütüphane desteği sayesinde ileri
teknolojileri Arduino Boarda kolayca
entegre edebilirsiniz. USB ve Bluetooth
gibi evrensel iletişim haberleşme
sistemlerini kullanabilir.
• İşlemci ile veri giriş çıkışları kolaylıkla
sağlanabilir. Bu ise, serigrafi ile kart
yapma ihtiyacını ortadan kaldırmıştır.
• Alt seviye mikroişlemci bilgisi
gerektirmez.
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Diecimila
Arduino Duemilanove
Arduino Mega
Arduino Nano
Arduino Uno
Arduino LilyPad
Revize edilen bu kartların özellikleri Arduino https://www.arduino.cc/en/Main/Boards ve
http://arduinoturkiye.com/kategori/arduino-cesitleri/ websayfasında verilmiştir. Her ne kadar Arduino kartlar çok çeşitli
görünse de, yapısal mantığı ve programlama yaklaşımları aynıdır..
Arduino Mini
Arduino Primo
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Uno
• 14 adet dijital giriş / çıkış, bu çıkışlardan 6
tanesi PWM çıkışı olarak kullanılır. Bunun
yanı sıra, 6 adet analog giriş vardır.
• ATMega328 işlemcisi kullanır. USB-seri
iletişim dönüştürücü olarak FTDI entegre
kullanmaz, onun yerine dönüştürme işini
ATmega8U2 yapar. Bu durum, daha hızlı
aktarım olanak sağlar.
• FTDI chipi kullanılmamış olmasının verdiği
başka bir özellik de Arduino Uno”yu
klavye, mouse, joystick vs. olarak
tanıtabilme ve sistemde bu şekilde
kullanabilme kolaylığıdır.
• Çok popüler ve uygun fiyatlı olmasından
dolayı Arduino Uno ile yapılmış proje
örnekleri çokça bulunabilir.
Arduino Uno
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Duemilanove
• ATMega328 işlemcisini kullanır.
Donanım özellikleri olarak Arduino
Uno”nun neredeyse aynısıdır,
Uno”dan farkı USB-seri iletişim
dönüştürücü olarak FTDI
entegresinin olmasıdır.
• Duemilanove”da yeni bir özellik
olarak otomatik güç algılama sistemi
bulunur. Bu sistem gücü USB”den
veya adaptör girişinden kendisi seçer.Arduino Duemilanove
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Diecimila
• Temel Arduino USB kartının bir
önceki versiyonudur.
• Diğerlerine göre daha yavaş,
ATmega168 işlemcisini kullanır.
• 14 adet dijital giriş / çıkış, bu
çıkışlardan 6 tanesi PWM çıkışı olarak
kullanılır. Bunun yanı sıra, 6 adet
analog giriş vardır
Arduino Diecimila
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Mega
• Atmega2560 işlemcisini kullanır.
• Daha fazla dijital çıkışı (54 adet) ve
bunlar içinde 14 PWM çıkışı vardır.
• USB-seri iletişim dönüştürücü olarak
ATmega8U2 veya ATmega16U2 kullanır.
Bu daha hızlı aktarıma olanak sağlar.
• Bellek olarak daha yüksektir.
ATmega2560 “ya yükseltilmesi
sayesinde 256k flash memory”ye
yükselmiştir.
Arduino Mega
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino LilyPad
• Giyilebilir uygulamalar için
geliştirilmiş. Kumaş üzerine dikilebilir.
• Aynı zamanda yıkanabilir.
• Kendine has aksesuar sınıfı vardır.
Yani sadece LilyPad için tasarlanmış
Arduino eklentileri, switchleri,
kabloları vardır.
• Dahili USB girişi var.
Arduino LilyPad
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Nano
• Breadboard üzerinde kullanılmak üzere
tasarlanmış bir kompakt bir karttır. DC
güç girişi yoktur ve USB Mini-B
kablosuyla bilgisayara bağlanır.
• Arduino Nano, Atmega328 işlemcisi
kullanır.
• 14 adet dijital giriş / çıkış, bu çıkışlardan
6 tanesi PWM çıkışı olarak kullanılır.
Bunun yanı sıra, 8 adet analog giriş
vardır.
• Boyutları 1.8cm x 4.3cm olması
sebebiyle küçük boyutlu prototiplemede
kullanılır.
Arduino Nano
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Mini
• Sadece 1.8cm x 3.3cm boyutlarında
en küçük Arduino kartıdır. Kullanım
boyutunun küçük olması istenen
yerlerde tercih edilir.
• Dahili USB girişi yok, bu yüzden
bilgisayara harici USB-TTL arabirimi -
Mini USB Adaptör ile bağlanabilir.
• ATmega328 çipi kullanır.
• Düşük voltajla çalıştığından, özellikle
pil ile çalışması gereken
uygulamalarda düşük güç tüketimi
sayesinde tercih edilir.
Arduino Mini
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino Primo
• Nordic nRF52 işlemcisi kullanır.
• Espressif ESP8266 for WiFi modülü
içerir.
• İçerisinde bluetooth modülü içerir.
• Az enerji harcadığından düşük güç
tüketimi isteyen uygulamalarda
kullanılır.
Arduino Primo
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.5a: ARDUINO UNO DONANIM YAPISI
• 1 : USB jakı
• 2 : Power jakı (7-12 V DC)
• 3 : Mikrodenetleyici ATmega328
• 4 : Haberleşme çipi
• 5 : 16 MHz kristal
• 6 : Reset butonu
• 7 : Power ledi
• 8 : TX / NX ledleri
• 9 : Led
• 10 : Power pinleri
• 11 : Analog girişleri
• 12 : TX / RX pinleri
• 13 : Dijital giriş / çıkış pinleri (yanında ~ işareti
olan pinler PWM çıkışı olarak kullanılabilir.)
• 14 : Ground ve AREF pinleri
• 15 : ATmega328 için ICSP
• 16 : USB arayüzü için ICSP
Yukarıdaki şekilde görülen ATmega328 mikrodenetleyicisi
kullanan Arduino Uno Kartı çeşididir. 14 dijital giriş/çıkış
pini bulunur, bunlardan 6’sı PWM çıkışı olarak
kullanılabilir ve dijital dalga genişliği ayarlanarak analog
değerler elde edilebilir. 6 analog giriş pinine sahiptir. 16
MHz kristal osilatörü, USB bağlantısı, 2.1mm güç girişi,
ICSP başlığı ve reset butonu vardır. Mikroişlemciyi
destekleyecek herşeye sahiptir. Çalıştırmak için DC 7~12V
güç kaynağına bağlamak yeterlidir
İşlemci Özellikleri:
Flash: 32KB (0.5KB bootloader için kullanılır)
SRAM: 2KB
EEPROM: 1KB
Saat frekansı: 16MHz
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.5b: ARDUINO MEGA DONANIM YAPISI
Bölüm 1: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 1.6: ARDUINO GÜÇ BESLEME KAYNAKLARI
Arduino UNO’nun pille çalıştırılması
Arduino harici besleme kaynaklarıyla da çalıştırılabilir. Bunun için Arduino üzerinde birbirine bağlı iki farklı giriş bulunmaktadır.
Bu girişlerden ilki, yukarıdaki şekilde 2 numara ile gösterilen jak girişidir. Bu girişe 7 ile 12 Volt arasındaki gerilimler
uygulanabilir.
Arduino üzerinde bulunan 'Vin' pini, Arduino'nun jak girişine bağlı bir pindir. Bu pine uygulanan gerilim, Arduino'ya ulaşmadan
önce bu pine bağlı regülatör yardımıyla Arduino için uygun gerilime düşürülür. 'Vin' girişine 7 ile 12 Volt arasındaki gerilimler
uygulanmalıdır. Pilin artı (+) ucu 'Vin' pinine bağlandıktan sonra, pilin eksi (-) ucu Arduino'nun 'GND' yani toprak ucuna
bağlanmalıdır. 'Vin' pini önceki slayttaki şekilde 3 numara ile gösterilmiştir.
Eğer bu girişlere 12 Volt üzerinde bir gerilim uygulanırsa Arduino zarar görebilir.
Arduino UNO’nun 5 Volt pininden beslenmesi
Arduino üzerinde bulunan 5 Volt pini de Arduino'yu beslemek için kullanılabilir. Bu pine 5 Volt geriliminden fazla bir gerilim
uygulanması, Arduino'nun bozulmasına neden olabilir. 5 Volt gerilim veren bir kaynağın artı (+) ucunu Arduino'nun 5 Volt, eksi
(-) ucunu da Arduino'nun 'GND' pinine bağlanabilir.
Bu pin önceki slattaki şekilde 4 numara olarak gösterilmiştir.
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.6: SHIELDS (Katman veya Zırh)
• Shield (Zırh) : Arduino kartı üzerindeki devre
eklentileridir. Bu eklentiler ile kartın
kapasitesi veya işlevselliğini arttırılabilirsiniz.
• Çok sayıda ucuz maliyetli katmanlar ve
bunların kütüphaneleri mevcuttur.
http://arduino.cc/en/Main/ArduinoShields
http://shieldlist.org
Motor kontrolü için kullanılan Arduino Motor
Shield R3 un ön ve arka görünüşü.
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI
Arduino katmanlarının üst üste montajlanması
-Arduino mikrodenetleyicilerin işlevselliğini
arttıran giriş ve çıkış portlarının gelen bilgiyi
işleme kapasitesini arttıran modüller
mikrodenetleyici kartının üzerine katman olarak
ilgili bağlantı jaklarından bağlanarak eklenebilir.
Böylelikle kompakt yapıda ve hem işlevselliği
hem de kapasitesi arttırılmış modüller elde
edilebilir.
-Örneğin Arduino mikrodenetleyici kartı
üzerindeki dijital çıkışların akım kapasiteleri
genellikle bir servo veya step motor sürmeye
yetmez dolayısıyla bir sürücü katmanı
mikrodenetleyiciye eklenebilir.
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.7: ARDUINO DONANIMI NASIL TEMİN EDİLİR?
Aşağıda Arduino donanımlarını satın alabileceğiniz sitelerin listesi
verilmiştir.
http://www.robotistan.com/
http://www.robotshop.com/arduino-2.html
http://direnc.net
http://arduino.cc/en/Main/Buy
http://dx.com/s/Arduino
http://www.ebay.com
http://tr.aliexpress.com/promotion/electronic_arduino-uno-
promotion.html
http://gittigidiyor.com
http://www.robitshop.com/
Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI
Konu 1.8: ARDUINO REFERANS KAYNAKLARI
http://blog.robomore.com/?cat=6&paged=2
https://labitat.dk/wiki/Arduino_beginners_workshop
http://coopermaa2nd.blogspot.com/
http://arduino.cc/en/Tutorial/HomePage
http://shieldlist.org/
Fritzing- Çizim programı: Fritzing- Çizim programı:
http://fritzing.org/download/
http://www.123dapp.com/circuits
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.2: ARDUINO PROGRAMININ
KURULMASI(WINDOWS)
Arduino yazılımı ile Arduino boardınızı programlamak için, Windows, Mac ve
Linux işletim sistemleri kullanılabilir. Yükleme işlemi, her üç platform için de farklıdır.
Yazılımı yüklemek için bir takım ayarlamalar yapmak gereklidir. Herhangi bir yükleyici
(setup) programı yoktur. Arduino programı klasör içinde sıkıştırılmış durumdadır.
Kullanıcı herhangi bir yere Arduino klasörü oluşturabilir. Bu dosyaları bir
sıkıştırma programı ile istenilen yere açabilir.
Ayrı bir adımda, Arduino UNO board için gerekli olan USB sürücülerini
yüklemeniz gerekir. Bu adıma Arduino.cc web sitesini ziyaret ederek başlayın. Arduino
UNO boardın USB sürücüsü için bu yazıyı okuduğunuz zaman, en son sürümünü
yükleyebilirsiniz.
https://www.arduino.cc/en/Main/Software
Yukarıdaki linkten, Windows için ZIP dosyasını bilgisayarınıza indirin. Yazılım
yalnızca Windows XP den Windows 10‘ a kadar bütün Windows yazılımlarında
kullanılabilir.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.2: ARDUINO PROGRAMININ
KURULMASI(WINDOWS)
Zip dosyası indirildiğinde,
dosya üzerinde sağ tıklayınız. Açılan
menüden 'Extract All...' komutunu
çalıştırınız.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.2: ARDUINO PROGRAMININ
KURULMASI(WINDOWS)
Açılmış olan klasörü, istediğiniz yere taşıyabilirsiniz. Ancak; şu
anda masaüstünde tutun. Arduino klasörü içinde, hem programın kendisi,
hem de Arduino Board için sürücüler(drivers) vardır. Bu sürücüler(drivers)
Arduino kartınızın, USB kablosu ile bilgisayarınıza bağlanmasını sağlar.
Arduino yazılımını çalıştırmadan önce, USB sürücülerini yüklemeniz
gereklidir.
USB kablosunun ucunu Arduino kartınıza, diğer ucunu
bilgisayarınızdaki bir USB soketine takın. LED güç ışığı yanar ve
Windows işletim sisteminde, 'Yeni Donanım Bulundu' mesajı ekranda
görünür. Bu mesajı iptal tuşuna basarak yok sayınız. Windows’ un
sürücüleri otomatik olarak sürücüleri yüklemesini engelleyiniz. Sürücüler
manuel olarak yüklenecektir.
USB sürücüleri yükleyerek en güvenilir yöntem Aygıt Yöneticisi
kullanmaktır. Aygıt yöneticisine Windows’ un sürümüne bağlı olarak farklı
şekillerde erişilir. Windows 7’de , ilk önce Denetim Masası'nı açın, sonra
simgeleri görüntüleyin ve listede Aygıt Yöneticisini bulunuz.
'Diğer Aygıtlar' bölümünün altında, küçük sarı uyarı üçgeni ile
'bilinmeyen aygıt' isimli bir simge göreceksiniz. Bu; sizin Arduino
kartınızdır.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.2: ARDUINO PROGRAMININ
KURULMASI(WINDOWS)
Uptade Driver Software (...
Sürücü Yazılımını
Güncelleştir) sol tıklayın ve
üst menü seçeneği seçin.
Daha sonra ya
'güncelleştirilmiş sürücü
yazılımı için otomatik arama'
veya 'Sürücü yazılımı için
bilgisayarıma gözat' istenir.
Sürücüler  arduino-
1.0.2-windows  arduino1.0.2
içindedir.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.2: ARDUINO PROGRAMININ
KURULMASI(WINDOWS)
'İleri' tıklayın ve bir güvenlik uyarısı
alabilirsiniz. Eğer bu güvenlik mesajı çıkarsa,
yazılım yüklenmesine izin verin. Yazılım
kurulduktan sonra, bir onay mesajı alırsınız.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.2: ARDUINO PROGRAMININ
KURULMASI(WINDOWS)
Artık Arduino UNO board’ı kullanmak için
hazırsınız.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.3: ARDUINO PROGRAMININ KURULMASI(MAC ve
LINUX)
Arduino.cc web sitesini ziyaret ediniz ve işletim sisteminiz için uygun IDE indirerek başlayın. Mart
2016 itibariyle v1.6.8 olarak bulabilirsiniz. Bu yazıyı okuduğunuz zaman bu versiyon artık yoksa yeni
versiyonu deneyebilirsiniz.
Yükleme yazılımını masaüstüne veya herhangi bir yere kaydediniz.
MAC Arduino yazılımı yüklemek, PC'ye yüklemekten çok daha
kolaydır. Daha önce olduğu gibi, ilk adım ZIP dosyasını indirmektir. Yukarıda
MAC zip dosyası görülüyor
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.3: ARDUINO PROGRAMININ KURULMASI(MAC ve
LINUX)
Bir kere indirildikten sonra, zip dosyasını
çift tıklayın. Bu durumda 'Arduino.app'
adında tek bir dosya oluşacaktır. Bu
dosyayı Uygulamalar Klasörünün içine
sürükleyin. Bu sizin Arduino
uygulamanızdır.
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.3: ARDUINO PROGRAMININ KURULMASI(MAC ve
LINUX)
Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI
Konu 2.4: ARDUINO KARTININ TESTİ
Arduino kartınızı, USB kablosu ile bilgisayarınızın USB
girişine takın ve 'Arduino Kart Tipi' ve 'Seri Portun' doğru
ayarlanmış olup olmadığını kontrol edin. Eğer sorun çıkarsa, 2.
Dersin ilk konusuna geri dönmeniz gerekebilir.
Arduino IDE penceresinin alt kısmındaki pano, sizin için
geçerli ayarları gösterir.
Bilgisayarınız ile Arduino kartınız iletişim kurduğu anda, sağ alt köşedeki Arduino Uno on COM4 ifadesine
dikkat ediniz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu: GİRİŞ
• Arduino Programlama dili basitleştirilmiş
C++ veya C kullanır. Burada genel olarak tüm
Arduino komutları ve operatörleri ele
alınmayacaktır. Daha ziyade yeni başlayanlar
için en çok kullanılan fonksiyonlar ve
operatörler ele alınacaktır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.1: C PROGRAMLAMA DİLİNİN GENEL YAPISI
• Programdaki açıklamalar // veya /* */
işaretleri kullanılarak belirtilir.
• Program başında sistem tanımlı komutların
bulunduğu kütüphaneler ve kullanıcıların
sonradan tanımlayabileceği komutların
bulunduğu kütüphaneler #include komutuyla
eklenir.
• Tüm komutlar ; ile biter. Komutlar bloklar
içine alınmak istenirse {} içene yazılırlar.
• Ana program içinden çağrılacak fonksiyonlar
yazılabilir. Bu fonksiyonların fonksiyon
prototip tanımları ana programdan önce,
fonksiyonların kendisi ana programdan sonra
yazılır. Fonksiyonlara parametre
gönderilecekse () arasına yazılır.
• Programdaki sabit değerler #define ve const
tanımlarıyla belirtilir, değişeken değerler ise
değişken veri türleri ile belirtilirler.
// Program tanim ve aciklamasi
#include <stdio.h> /* sistem tanımlı kütüphane dosyalari */
#include "mystuff.h" /* kullanıcı tanımlı kütüphane dosyalari */
#define CONST 2000 /* macro ve sabit tanımları */
int m,n; float x,y; /* global değişken tanımları */
double fn1(double x, int y); /* fonksiyon prototipleri */
int main(argv, char **argc) { /* ana program baslangici */
int i,j; char str[128]; /* lokal değişkenler */
const int ci = 123; /* sabit tanımları */
j = 17; /* ana program */
for (i=0; i<j; i++) {
.....}
...
return 0;
}
double fn1(double x, int y) /* kullanıcı tanımlı fonksiyonlar */
{ float u;
//program ...
return x*u;
}
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.2: Arduino Programlama Taslağı (Sketch)
• Arduino programlarına ‘sketch’ adı verilir.
• Bir Arduino taslağı (programı) genel olarak üç
bölümden oluşur:
-Tanımlamalar (defines),
-Kurulum( setup) ve
-Ana program bloğu (loop).
• Tanımlamalar en başta yapılırsa global
tanımlamalar, setup veya loop veya kullanıcı
tanımlı başkafonksiyon içinde yapılırsa lokal
tanımlamalar denir.
• Setup fonksiyonu, program çalışmaya
başladığını ilk kısımdır. Bu kısım sadece bir kere
okunur ve program esnasında yeniden
okunmaz. Bu alanda, pinlerin çalışma modları,
seri iletişim başlatılması gibi önemli ve bir kere
yapılması yeterli olacak ayarlamalar yapılır.
• Loop fonksiyonu, setup fonksiyonu okunduktan
sonra başlar. Buraya yapılmasını istenen
görevler yazılır. Loop fonksiyonu, sonsuz döngü
şeklindedir, yani buradaki görevler
tamamlandığında, program tekrar başa dönerek
işlemleri yeniden yapar. Bu döngü, Arduino
çalıştığı sürece devam eder.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.3: SABİT TANIMLAMALAR(DEFINES)
Sabit tanımlamalarında kullanılan «define» komutu, bazı değerleri sabitlemek, pin ayarlarını yapabilmek için
kullanılır. #define tanımlamalara örnek verecek olursak; örneğin dijital bir çıkış numarasına isim verebiliriz.
Böylece Her seferinde çıkış numarasını hatırlamak zorunda kalmayız. Bunun haricinde sabit sayılara da
tanımlama yapılabilir. Her tanımlamanın başında # işaretini kullanmalısınız.
#define ledPin 3 // Bu şekilde kullanılırsa derleyici program her ledPin deyimini görünce bunu 3 sayısı ile
eşleştirir.
#define ledPin 3 ; // kullanılırsa hata mesajı alınır. Çünkü define dan sonra ; kullanıldı.
#define ledPin = 3 // Bu da hatalı bir tanımlamadır.
Veya Sabit Tanımlama
const float pi = 3.14; // Dikkat edilirse const tanımlamasından sonra ; kullanılmıştır. Const tan sonra ;
kullanılır.
#define BENIM_LEDIM 8 // Bu da doğru bir tanımlamadır. 8 sayısı ile BENIM_LEDIM deyimi eşleştirilir. Derleyici
BENIM_LEDIM olarak yazılan bütün ifadeleri 8 sayısı olarak algılar.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.4:DEĞİŞKENLER (VARIABLES) ÇEŞİTLERİ
Fonksiyonlar Konusunu işlemeden önce, uygulamalarımızda çok sık kullanacağımız değişkenler
konusundan burada bahsedilecektir.
C dilinde çok önem arzeden değişkenler konusu aynı önemi Arduino ile program yazılımı konusunda da
göstermektedir.
Bir değeri veya karakteri daha sonra tekrardan kullanmak/değiştirmek için hafızada tutabilirsiniz. Bu
değerler değişkenlerde tutulur. Hafızada tutacağınız değerin türüne göre değişken tanımlanması
gerekir.
Aşağıdaki tabloda, Arduino'da kullanılan değişken türlerini ve tutabilecekleri değerleri görebilirsiniz.
Değişken Boyut Açıklama
byte 1 byte 0 – 255 arası işaretsiz sayılar.
boolean 1 byte 0 (FALSE) veya 1 (TRUE) değerini alır.
char 1 byte -128 ile 127 arasındaki değerleri alır. Tek bir karakterin saklanması için kullanılır.
string 1 byte Metin işlemleri için kullanılır (char dizisi)
int 2 byte
İşaretli sayılar için -32.768 – 32.767
İşaretsiz sayıları için 0 – 65,535
long 4 byte
İşaretli sayılar için -2.147.483.648 – 2.147.483.647
İşaretsiz sayılar için 0 – 4.294.967.295
float 4 byte İşaretli ondalıklı sayılar -3,4028235E – 3,4028235E
double 4 byte
3,4028235E+38 ile -3,4028235E+38 arasında
hassasiyeti yüksek kesirli sayılar barındırır
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: İLK PROGRAM:
LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
Bu derste, program Arduino kartınızda, yerleşik bulunan LED’i yakıp
söndürme uygulamasını öğreneceğiz.
Arduino Uno R3- 1 Adet
USB Kablosu Tip A to B – 1 Adet
Arduino kartının, elektronik elemanlara bağlanması için, her iki tarafında dizi halinde
konnektörler mevcuttur. Aynı zamanda, bu konnektörlere ‘kalkan’ (shield) adı verilen uyumlu
elektronik cihazlar takılabilir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
MALZEME LİSTESİ
MALZEME LİSTESİ
Ayrıca, Arduino’da sizin
programlarınızda kullanmanız için devre içi
bir Led bulunuyor. Bu LED Arduino UNO
kartın üzerinde bulunmaktadır. Genellikle
bu LED, 'L' harfi ile devre üzerinde
işaretlenmiştir.
Arduino Kartınızı bilgisayarın USB
çıkışına bağladığınızda 'L' LED’ inin,
yanıp söndüğünü görebilirsiniz. Arduino
Boardları genellikle, örnek 'Blink' taslağı
(sketch) ile önceden yüklenmiş olarak
gelir.
Bu derste, kendi Blink programınız
ile Arduino’ yu programlayıp ve daha sonra
'L' LED’ inin yanma sönme hızını
değiştireceksiniz
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
Arduino IDE kurulumunu yaptınız ve Arduino
kartına bağlanmak için doğru seri bağlantı
noktası kullandığınızdan emin oldunuz.
Arduino taslağınızı (Sketch) mikrodenetleyiciye
gönderme zamanı geldi.
Arduino IDE’ de, Dosya→ Örnekler→
Basics menüsü altında, Blink isimli taslağı
editör alanına yükleyin.
Taslak (Sketch) penceresi açıldığında bütün
programı görebilecek şekilde, pencereyi
ekran boyutuna büyütünüz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
UYGULAMANIN ARDUINO IDE ORTAMINA ÇAĞRILMASI
Arduino IDE ile birlikte gelen örnek taslaklar (sketch) 'salt okunur' dosyalardır. Yani bir
Arduino örnek taslağını yukarıdaki gibi yükleyebilirsiniz , ancak bu dosyalarda değişiklik
yaparsanız, farklı bir dosya olarak kaydetmeniz gerekir. Arduino örnek dosyalarının salt okunur
özelliğinden dolayı, aynı dosya üzerine kayıt yapamazsınız.
Arduino IDE’nin Dosya menüsünden 'Farklı Kaydet..' seçeneğini seçin ve ardından
'MyBlink' adı ile yeni çalışmanızı kaydedin.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
UYGULAMANIN KAYIT EDİLMESİ
Taslak defterine 'Blink' dosyasının bir kopyasını kaydettiniz. Bu çalışmayı tekrar yüklemek için
Dosya → Taslak Defteri(Sketchbook) menü seçeneğinden MyBlink üzerine tıklayınız.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
UYGULAMANIN KAYIT EDİLMESİ
Arduino kartınızı, USB kablosu
ile bilgisayarınızın USB girişine takın
ve 'Arduino Kart Tipi' ve 'Seri Portun'
doğru ayarlanmış olup olmadığını
kontrol edin.
Eğer sorun çıkarsa, 2. Derse tekrar
geri dönmeniz gerekebilir.
Arduino IDE penceresinin alt
kısmındaki pano, sizin için geçerli
ayarları gösterir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
UYGULAMANIN ARDUINO KARTINA YÜKLENMESİ
Bir programı makine diline çevirmek
için «Derle» butonuna tıklayın, eğer
derleme hataları varsa düzeltin. Daha
sonra, makine diline çevrilen kodu Arduino
ortamına göndermek için, 'Yükle'
butonuna tıklayın.
Araç çubuğunda derleme ve yükleme
butonları yandaki şekilde gösterilmiştir.
Eğer IDE programlama ortamının
altt bulunan durum alanını izlerseniz, bir
ilerleme çubuğu ve bir dizi mesaj
göreceksiniz.
İlk başta 'Taslak Derleniyor
..'('Compiling Sketch..') diyecektir. Bu
aşamada taslak çalışmanız, Arduino
kartınıza yüklemesi için uygun formata
dönüşmektedir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
UYGULAMANIN ARDUINO KARTINA YÜKLENMESİ
Sonraki durumda IDE üzerindejki yazı 'Yükleniyor'-('Uploading') olarak değişecektir. Bu
noktada, Arduino LED'ler, taslak çalışmanızın yüklenmesi esnasında, yanıp sönmeye
başlayacaktır.
Son olarak, yükleme durumu 'Bitti'
olarak değişecektir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
ARDUINO KARTA YÜKLEME
Taslak çalışmamızda 32256 byte kullanılabilir alan olduğu ve 1084 byte alan kullanıldığı
görülmektedir. Taslağınızın derlenmesinden sonra aşağıdaki hata iletisini alabilirsiniz.
Yukarıdaki pencerede ipucu pencerenin üst kısmındadır.
Muhtemelen Arduino Kartınız hiç bağlı değildir, ya da sürücüleri
yüklü değildir. Ya da yanlış seri port seçili olduğundan anlamına
gelir.
Bu iletiyi alırsanız, Arduino Kart kurulumunu kontrol edin.
Yükleme tamamlandıktan sonra, Arduino Kartınız yeniden
başlar ve port 13’e bağlı L’LED’inin yanıp sönmeye başlaması
gerekir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
ARDUINO KARTA YÜKLEME
Bu kısımda BLINK program parçasının çalışması incelenecektir.
/*
LED yakma söndürme (Blink)
Bir saniye boyunca bir LED i yakma ve söndürme işlemini tekrarlayarak yapar
Aşağıdaki kod açık erişimdedir.
*/
// Pin 13 Arduino uno kartında bir LED e bağlıdır.
// bir isim verin:
int led = 13;
// reset butonuna bastığınızda setup döngüsü çalışır:
void setup() {
// Dijital pin i çıkış olarak tanımla
pinMode(led, OUTPUT);
}
// döngü sonsuza kadar çalışır:
void loop() {
digitalWrite(led, HIGH); // LED yanar (HIGH gerilim seviyesidir)
delay(1000); // bir saniye bekle
digitalWrite(led, LOW); // gerilimi LOW yaparak LED i söndür
delay(1000); // bir saniye bekle
}
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) TASLAĞI NASIL
ÇALIŞIR?
// döngü sonsuza kadar çalışır:
void loop() {
digitalWrite(led, HIGH); // LED yanar (HIGH gerilim seviyesidir)
delay(1000); // bir saniye bekle
digitalWrite(led, LOW); // gerilimi LOW yaparak LED i söndür
delay(1000); // bir saniye bekle
}
Döngü (Loop) işlevi şöyle işlemektedir. İlk komutta LED pini dijital 1-(HIGH) yapılır, sonra 1000
milisaniyelik (1 saniye) 'gecikme' yapılır, daha sonra LED pinini dijital 0-(LOW) yapılır ve son
olarak tekrar 1000 milisaniyelik (1 saniye) 'gecikme' yapılır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) TASLAĞI NASIL
ÇALIŞIR?
Programda / * ve * / sembolleri arasındaki arasında karakterler açıklama, Arduino IDE
tarafından derlenmez. // ile başlayan satırlar, satır sonuna kadar yorum olarak kabul edilir.
Sonrasında , 'setup' fonksiyonu vardır. Yorumların açıkladığı gibi reset düğmesine
basıldığında kod, buradan çalıştırılır. Kartınız herhangi bir nedenle resetlenirse program yine
ilk satırdan çalışmaya başlayacaktır. Örneğin kartın enerjilenmesi veya taslak çalışmanızın
yeniden yüklenmesi RESET durumuna yol açacaktır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.6: GECİKME VE ZAMAN FONKSİYONLARI
Delay() : milisaniye cinsinden gecikme sağlar
delayMicroseconds(us_gecikme) : Microsaniye cinsinden gecikme sağlar.
millis() fonksiyonu Arduino’nun çalışmasından itibaren geçen süreyi ms cinsinden döndürür. Dönüş değeri
yüksek bir değer olabileceğinden “unsigned long” tipi kullanılmalıdır. ( unsigned long –işaretsiz long tipindeki
sayıdır. Alabileceği değerler 0 – 4.294.967.295 arasındadır)
Aşağıda gecikme ile ilgili örnek program parçacıkları görülüyor.
delay(1000); // 1000 Ms (1 Saniyelik) gecikme sağlar.
Serial.print("Time: "); // Bilgisayar ekranında “Time:” yazısını göster.
time = millis(); //Arduino programının çalışmasından itibaren geçen süreyi miliSaniye
Serial.println(time); // mS cinsinden geçen zamanı gösterir.
delayMicroseconds(50); // 50 microsaniyelik gecikme sağlar.
LED’i daha hızlı yakıp söndüreceğiz. Tahmin edebileceğiniz gibi, anahtar komut delay() dir.
'delay' komutu içindeki (1000) parametresi değiştirilmelidir.
Gecikme süresi milisaniye cinsindendir. LED’ in iki kat daha hızlı yanıp sönmesini
istiyorsanız 1000 değerini 500 olarak değiştiriniz.
Tekrar taslak çalışmanızı (programınızı) Arduino kartınıza yükleyiniz. LED’ iniz daha
hızlı yanıp sönmeye başlayacaktır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.6: LEDİ DAHA HIZLI YAKIP SÖNDÜRME
Bu uygulama için gereken malzemeler aşağıda
listelenmiştir:
Arduino UNO R3 board -1 adet Yarı-boyutlu Breadboard- 1 adet
Led – 1 adet
470 Ω Direnç (Sarı, mor, kahverengi )- 1 Adet
Bağlantı kabloları – 2 Adet
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7: HARİCİ LED YAKIP SÖNDÜRME UYGULAMASI
MALZEME LİSTESİ
Breadboard, elektronik devreleri pratik olarak kurmak
ve test etmek için kullanılan kullanışlı bir
ekipmandır. Breadboard üzerinde devre kurarken
bağlantı kablolarını ve komponentleri birbirine
lehimlemek zorunda kalmazsınız. Komponentleri
birbirine ve iletkenlere bağlamak oldukça kolaydır.
Lehimleme gerekmediği için komponenetleri rahatça
sökebilir ve tekrar bağlayabilirsiniz, bu sayede
elemanlar ve breadboard hiçbir zarar görmez.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7.1: DENEY MALZEMELERİNİN TANITILMASI
-BREADBOARD
Yandaki resimde breadboard'un iç yapısı açıkça
görülüyor. Metal iletken dizileri için genellikle iletkenliği,
korozyona karşı dayanıklılığı ve esnekliği sayesinde nikel-
gümüş tercih edilir.
Breadboard, plastik bir kasanın içine dizilmiş ve
birbirilerinden yalıtılmış iletkenler dizisidir. Breadboard'un
üzerinde belirli sayıda delikler vardır ve komponentler bu
delikler aracılığıyla iletkenlere temas ederler.
Breadboard tipik olarak iki çeşit iletken dizimi içerir.
Bus dizisi ve soket dizisi. Bus dizisi genellikle devreye gerilim
sağlamak için kullanılır. Yatay olarak sıralanmış iki adet bus
dizisi vardır. Bunlardan birisi devreye gerilim bağlamak (Kırmızı
hat) için kullanılır, diğeri ise güç kaynağının şasesi (Mavi hat)
içindir.
Soket dizisi breadboard'un üzerinde dikey olarak
sıralanmıştır. Uygulamaya göre değişmekle beraber tipik bir
breadboard'da 5 ayrı delikten oluşan, 32 soket sütunu
bulunur. 5'li sütundaki soketler birbirine bağlıdır ancak farklı
sütunlar birbirinden izoledir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7.1: DENEY MALZEMELERİNİN TANITILMASI
-BREADBOARD
LED'lerden gösterge ışıkları yapabilirsiniz. Elektrik tüketimleri çok azdır ve ömürleri
çok uzundur.
Bu derste, muhtemelen en çok en yaygın olan 5mm kırmızı LED kullanacaksınız.
5mm., LED’ in dış çapını ifade eder. 5mm’lik LED’lerin yanı sıra, 3 mm ve 10 mm. çaplarında
LED’ler de mevcuttur.
LED’ inizi, doğrudan bir pil veya gerilim kaynağına bir bağlayamazsınız.. LED’ in Anod
ve Katod uçları vardır ve Anot ucuna (+) ve Katod ucuna (-) bağlanmalıdır. Aksi durumda LED
ışık yaymaz. Kırmızı LED’ in çalışma gerilimi 1.5 Volttur. LED’in çalışma gerilimini
sınırlandırmak için, ön direnç takılmalıdır. Aksi takdirde LED hasar görebilir.
Eğer bir LED ile bir direnç kullanmazsanız, LED
üzerinden çok fazla akım akacaktır. Doğal olarak, LED
üzerinde aşırı ısı üretilir. LED; hemen tahrip olabilir.
LED’ in, Anot(+) ve Katod(-) uçlarını bulmak için,
iki yol vardır. İlk olarak, Anot(+) ucu daha uzundur.
Katod(-) ucu kısadır.
İkincisi; Katod(-) ucuna LED’ in şeffaf tarafından
bakarsak, düz ve geniş bir kısım görürüz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7.1: DENEY MALZEMELERİNİN TANITILMASI
-LED
Led’in katod ucunu Arduino una kartının GND
portuna bağlantı kablosu ile bağlayalım.
Led’in anot ucunu 470 Ω direnç ve bağlantı
kablosu ile Arduüno uno kartının digital 3
portuna bağlayalım.
Dirençler elektrik akımını sınırlar. Daha yüksek
bir değerli bir direnç, daha az elektrik akımı
akacaktır. LED’ in ne kadar parlaklık vereceği
LED’ e takılan seri direncin değerine bağlıdır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7.2: BREADBOARD DÜZENİ
Direnç değeri neyi değiştirir?
270 Ω’luk direnç ile LED oldukça parlak ışık verir. Eğer 270 Ω’ luk
direnci 470 Ω’luk direnç ile değiştirirsek, o zaman LED biraz
sönük görünür. 2.2kΩ direnci LED ile seri bağlarsak LED
oldukça sönük ışık verir. Son olarak, yerinde 10 kΩ direnç ile
deneme yaparsak LED sadece görünür şekilde çok az ışık verir.
Kırmızı kabloyu Breadboard’dan çıkartıp boş bir deliğe takarsak,
tıpkı bir anahtar gibi davranır ve LED söner.
Yüksek dirençten daha az akım geçer. (OHM KANUNU)
Kırmızı renkli LED için LED gerilimi 1,5 volt alınır.
I1=(U-ULED)/R1= (5-1,5)/270= 13 miliAmper
I2=(U-ULED)/R2= (5-1,5)/470= 7 miliAmper
I3=(U-ULED)/R3= (5-1,5)/2200= 1,5 miliAmper
I4=(U-ULED)/R4= (5-1,5)/10000= 0,3 miliAmper
I4 < I3 < I2 < I1
I1 Akımı en yüksektir. Akım ne kadar yüksekse; LED o derece
parlak yanacaktır.
Bu durumda LED’ e seri bağlanacak en uygun direnç 270 ohm olarak görülmektedir.
Arduino IDE ile «MyBlink» adı ile kaydettiğimiz taslağı açalım ve aşağıda görüldüğü
şekilde düzeltelim:
int led=3; // değişken tanımlama: led
değişkenine ledin anodunun bağlı olduğu
3 nolu port değeri atanır.
Setup bloğunda:
pinMode (led, OUTPUT); // ledin bağlı
olduğu 3 nolu port çıkış olarak ayarlanır.
Loop bloğunda:
digitalWrite (led,HIGH); // 3 nolu porta
+5V değeri atanır. Böylece Led yanar.
delay(500); //500 milisaniye beklenir.
digitalWrite (led,LOW); // 3 nolu porta 0V
değeri atanır. Böylece Led söner.
delay(500); //500 milisaniye beklenir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7.3: «Blink» Taslağının Uyarlanması
Tekrar taslak çalışmanızı (programınızı) Arduino
kartınıza yükleyiniz. Harici LED’ iniz yanıp sönmeye
başlayacaktır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.7.3: «Blink» Taslağının Karta Yüklenmesi
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.8.1:ANALOG GİRİŞ/ÇIKIŞ FONKSİYONLARI
Bu bölümde başlıca fonksiyonlara yer verilecektir. Daha ayrıntılı bilgi için
https://www.arduino.cc/en/Reference/HomePage
ANALOG I/O FONKSİYONLARI
analogReference()
Analog giriş için referans gerilimini ayarlar.
analogRead()
Belirtilen analog pin değerini okur.
analogWrite()
Ayarlanan pinden analog çıkış almayı sağlar. 0 ile 255 arasında değer
kabul eder. LED parlaklığı, motor hızı ayarlama gibi işlemlerde kullanılır.
Bu uygulama için gereken malzemeler aşağıda
listelenmiştir:
Arduino UNO R3 board -1 adet Yarı-boyutlu Breadboard- 1 adet
Led – 1 adet
470 Ω Direnç (Sarı, mor, kahverengi )- 1 Adet
Bağlantı kabloları – 2 Adet
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.8.2: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA
UYGULAMASI MALZEME LİSTESİ
Led’in katod ucunu Arduino una kartının GND
portuna bağlantı kablosu ile bağlayalım.
Led’in anot ucunu 470 Ω direnç ve bağlantı
kablosu ile Arduüno uno kartının digital 3
portuna bağlayalım.
Dirençler elektrik akımını sınırlar. Daha yüksek
bir değerli bir direnç, daha az elektrik akımı
akacaktır. LED’ in ne kadar parlaklık vereceği
LED’ e takılan seri direncin değerine bağlıdır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.8.3: BREADBOARD DÜZENİ
PWM TEORİSİ : Darbe Genişlik Modülasyonu (PWM), elektrik gücünü kontrol etmek için
kullanılan bir tekniktir. Biz LED'lerin parlaklığını kontrol etmek için, Arduino Uno kartının 3 nolu
PWM portunu kullandık.
Aşağıdaki diyagram, Arduino PWM çıkışlarından birinin sinyalini göstermektedir.
Kabaca her 1/500 saniyede, PWM çıkışı bir darbe
üretecektir. Bu darbenin uzunluğu 'analogWrite' fonksiyonu ile
kontrol edilir. Yani 'analogWrite(0)' kodu herhangi bir darbe
üretmeyecektir. 'analogWrite (255)' komutu ise yeni darbe
gelene kadar çıkışı 5 Volt seviyesinde tutacaktır.
Eğer ‘analogWrite’ komutuna, 0 ile 255 arasında bir
değer ataması yaparsak, atadığımız değere göre bir darbe
üretilecektir. Arduino çıkışımızın 5 Voltta kalma süresini, bir
PWM peryodunun %5’ i olarak ayarlarsak, çıkışımıza sadece
% 5 oranında elektriki güç aktarmış oluruz.
PWM peryodunun %90’ ı süresince çıkışımızı
enerjilendirirsek, bu durumda çıkışa bağlı yükümüz elektriki
gücün %90’ ını alacaktır. Biz LED’ in bu kısa süre içerisinde
yanıp söndüğünü göremeyiz. Bize göre; sadece LED’in
parlaklığı değişiyormuş şeklinde görülür
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.8.4: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA
Arduino IDE ile «MyBlink» adı ile kaydettiğimiz taslağı açalım ve aşağıda görüldüğü
şekilde düzeltelim:
int led=3; // değişken tanımlama: led değişkenine ledin
anodunun bağlı olduğu 3 nolu port değeri atanır.
Setup bloğunda:
pinMode (led, OUTPUT); // ledin bağlı olduğu 3 nolu port
çıkış olarak ayarlanır.
Loop bloğunda:
analogWrite (led,0); // 3 nolu porta 0 değeri atanır. Böylece
Led söner.
delay(500); //500 milisaniye beklenir.
analogWrite (led,80); // 3 nolu porta 80 değeri atanır.
Böylece Led yanar.
delay(500); //500 milisaniye beklenir.
analogWrite (led,160); // 3 nolu porta 160 değeri atanır.
Böylece Led daha parlak yanar.
delay(500); //500 milisaniye beklenir.
analogWrite (led,255); // 3 nolu porta 255 değeri atanır.
Böylece Led en parlak durumda yanar.
delay(500); //500 milisaniye beklenir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.8.5: «Blink» Taslağının Uyarlanması
Tekrar taslak çalışmanızı (programınızı) Arduino
kartınıza yükleyiniz. Harici LED’ in parlaklığının 3
kademeli olarak değiştiğini göreceksiniz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.8.6: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA
UYGULAMASININ ARDUINO UNO KARTINA YÜKLENMESİ
Aynı breadboard düzenini kullanarak devam
ediyoruz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.9.1: BREADBOARD DÜZENİ
Arduino IDE ile «MyBlink» adı ile kaydettiğimiz taslağı açalım ve aşağıda görüldüğü
şekilde düzeltelim:
int led=3; // değişken tanımlama: led değişkenine
ledin anodunun bağlı olduğu 3 nolu port değeri
atanır.
İnt i=0; // değişken tanımlama: i isminde tam sayı
(integer) türünde bir değişken tanımlanıp ilk
değeri 0 olarak atanır.
Setup bloğunda:
pinMode (led, OUTPUT); // ledin bağlı olduğu 3
nolu port çıkış olarak ayarlanır.
Loop bloğunda:
for (i=0;i<256;i++){ //i değişkeni 0’dan 255’e
kadar birer birer arttırılır.
analogWrite(led, i); //her i değişkeni ledin bağlı
olduğu 3 nolu porta atanır. Böylece ledin
parlaklığı ayarlanır.
delay(20); // 20 milisaniye beklenir.
}
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.9.1: «Blink» Taslağının Uyarlanması
Tekrar taslak çalışmanızı (programınızı) Arduino
kartınıza yükleyiniz. Harici LED’ in parlaklığının düzgün
bir şekilde arttığını göreceksiniz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.9.1: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA
UYGULAMASININ ARDUINO UNO KARTINA YÜKLENMESİ
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.10:DEĞİŞKENLER (VARIABLES) ÇEŞİTLERİ
Fonksiyonlar Konusunu işlemeden önce, uygulamalarımızda çok sık kullanacağımız değişkenler
konusundan burada bahsedilecektir.
C dilinde çok önem arzeden değişkenler konusu aynı önemi Arduino ile program yazılımı konusunda da
göstermektedir.
Bir değeri veya karakteri daha sonra tekrardan kullanmak/değiştirmek için hafızada tutabilirsiniz. Bu
değerler değişkenlerde tutulur. Hafızada tutacağınız değerin türüne göre değişken tanımlanması
gerekir.
Aşağıdaki tabloda, Arduino'da kullanılan değişken türlerini ve tutabilecekleri değerleri görebilirsiniz.
Değişken Boyut Açıklama
byte 1 byte 0 – 255 arası işaretsiz sayılar.
boolean 1 byte 0 (FALSE) veya 1 (TRUE) değerini alır.
char 1 byte -128 ile 127 arasındaki değerleri alır. Tek bir karakterin saklanması için kullanılır.
string 1 byte Metin işlemleri için kullanılır (char dizisi)
int 2 byte
İşaretli sayılar için -32.768 – 32.767
İşaretsiz sayıları için 0 – 65,535
long 4 byte
İşaretli sayılar için -2.147.483.648 – 2.147.483.647
İşaretsiz sayılar için 0 – 4.294.967.295
float 4 byte İşaretli ondalıklı sayılar -3,4028235E – 3,4028235E
double 4 byte
3,4028235E+38 ile -3,4028235E+38 arasında
hassasiyeti yüksek kesirli sayılar barındırır
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.11: KONTROL YAPILARI- KARAR YAPILARI
Bu fonksiyonlar C dilinde kullanıldığı şekli ile kullanılır.
IF/ELSE YAPISI
Arduino Programlama temel karar komutudur. “IF” ‘ten sonra verilen koşul doğru ise IF
bloğundaki işlemler çalıştırılır, yanlış ise “ELSE” bloğundaki işlemler çalıştırılır.
if (X < 500)
{ // X sayısı eger 500’den küçük ise LEDpin1= HIGH
digitalWrite(LEDpin1, HIGH);
}
else if (X > 1000)
{ // X sayısı eger 1000’ den büyük ise LEDPIN2= HIGH
digitalWrite(LEDpin2, HIGH);
}
else
{ // if ve else if’ deki şart sağlanmadı ise o halde
//aşağıdaki işlemi yürüt.
LEDPIN3= HIGH
digitalWrite(LEDpin3, HIGH);
}
if (koşul)
{
// Koşul sağlanıyor
//ise yapılacak işlem
}
else if (koşul)
{// Koşul sağlanıyor
//ise yapılacak işlem}
else
{
// Koşullar
//sağlanmıyor
//ise yapılacak işlem
}
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.11: KONTROL YAPILARI – KARAR YAPILARI
SWITCH/CASE YAPISI
Seçim yapılarak, program akışının
istenilen bloklara atlamasını sağlar.
“SWITCH” ‘teki değişken, “CASE”
teki hangi değeri alırsa,
karşılığındaki işlem yapılır.
switch (seçim değişkeni) {
case 1:
// Seçim değişkeni 1 olduğunda yapılacak
işlem
break;
case 2:
// Seçim değişkeni 2 olduğunda yapılacak
işlem
break;
default:
// Varsayılan bağımsız işlem (isteğe bağlı)
}
BREAK, bir döngüyü veya switch komutunu sonlandırmak için kullanılır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.12: KONTROL YAPILARI –DÖNGÜ YAPILARI
SWITCH/CASE YAPISI ÖRNEĞİ
switch (degisken) {
case 1:
// degisken=1 ise o halde 1. pindeki ledi enerjilendir.
digitalWrite(LEDpin1, HIGH);
break;
case 2:
// degisken=2 ise o halde 2. pindeki ledi enerjilendir.
digitalWrite(LEDpin2, HIGH);
break;
case 3:
// degisken=3 ise o halde 3. pindeki ledi enerjilendir.
digitalWrite(LEDpin3, HIGH);
default:
// Eger değişken yukarıdaki 1, 2 ve 3 değerleri ile
// eşlenmez ise
// o halde default’dan sonraki satırları işlet. 4.
pindeki // ledi enerjilendir.
digitalWrite(LEDpin4, HIGH);
break;
}
!! Switch case fonsiyonunda her case’
den sonra mutlaka break deyimi
kullanılmalıdır. Aksi takdirde diğer
case durumları ve default durumu
işletilir. Bu da programınızda
istenmeyen durumlara ve hatalara
sebebiyet verir. !!
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.12: KONTROL YAPILARI-DÖNGÜ YAPILARI
FOR YAPISI
Arduino Programlama dilinde temel döngü komutudur. “FOR” içinde yer alan koşul doğru olduğu
sürece, döngüdeki işlemler gerçekleştirilir.
for (başlangıç değeri; koşul; artım) {
//işlemler
}
void setup()
{ int i;
Serial.begin(9600); // seri haberleşme için ayarlama fonksiyonu
}
loop() {
for (i = 0; i < 10; i++) // FOR döngüsü için başlangıç değeri 1’
//dir. İ sayısının değeri 10 olana kadar i’ nin değerini 1 artır.
{
Serial.print("i = "); // i= yazısını ekrana yazdır.
Serial.println(i); // Değerleri bilgisayar ekranına yazdır yeni
// satıra geç.
delay(1000);// 1 saniye aralıklarla yazdır.
}
}
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.12: KONTROL YAPILARI – DÖNGÜ YAPILARI
WHILE YAPISI
“While” ile belirtilen koşul doğru olduğu sürece, döngü içindeki işlemler gerçekleştirilir.
while(koşul){
// Koşul doğru olduğu sürece yapılacak işlemler
}
DO-WHILE YAPISI
“while” ile belirtilen koşul doğru olduğu sürece, döngüdeki işlemler yapılır.
do
{
// Koşul doğru olduğu sürece yapılacak işlemler
} while (test koşulu);
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.12: KONTROL YAPILARI – DÖNGÜ YAPILARI
WHILE ve DO-WHILE YAPISI İLE ÖRNEKLER
var = 0;
while(var < 200){
// buraya yazacağınız kodlar 200 kez işletilir.
var++; // var’ ın değerini her seferinde 1
artır.
}
do
{ delay(50); // wait for sensors to stabilize
x = readSensors(); // readSensors fonksiyonundan gelen
değeri // x’ e yazdır.
}
while (x < 100); //x değeri 100’ den küçük olduğu sürece “do”
//içindeki deyimleri işlet.
DO - WHILE
WHILE
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.13: OPERATÖRLER
C dilinde kullanılan operatörler kullanılır.
Matematiksel Karşılaştırma Mantıksal
= Eşitlik = = İki değişkeni karşılaştırır. && VE
+ Toplama != İki değişkenin eşit olmama
durumunu karşılaştırır.
|| VEYA
– Çıkarma < Küçüktür karşılaştırması ! DEĞİL
* Çarpma > Büyüktür karşılaştırması
/ Bölme <= Küçük eşit
% Yüzde >= Büyük eşit
İşlemleri belirten sembollere, bilgisayar dilinde “operatör” denir. Tabloda temel
operatörler ve tooltip gösterimli olarak karşılıkları verilmiştir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
Bu bölümde başlıca fonksiyonlara yer verilecektir. Daha ayrıntılı bilgi için
https://www.arduino.cc/en/Reference/HomePage
DİJİTAL I/O FONKSİYONLARI
pinMode()
Pinleri giriş veya çıkış olarak yapılandırma işlemi yapar.
digitalWrite()
Çıkış olarak ayarlanan pinlerin değerlerini, HIGH veya LOW olarak ayarlar.
digitalRead()
Belirtilen digital pin değerini okur.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
Bu bölümde başlıca fonksiyonlara yer verilecektir. Daha ayrıntılı bilgi için
https://www.arduino.cc/en/Reference/HomePage
ANALOG I/O FONKSİYONLARI
analogReference()
Analog giriş için referans gerilimini ayarlar.
analogRead()
Belirtilen analog pin değerini okur.
analogWrite()
Ayarlanan pinden analog çıkış almayı sağlar. LED parlaklığı, motor hızı
ayarlama gibi işlemlerde kullanılır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR – GIRDI ÇIKTI KOMUTLARI
Seri Monitör I/O FONKSİYONLARI
Serial.begin(9600)
Monitörü seri iletişimle bağlantıya açar.
Serial.print() , Serial.println()
Seri monitöre değer yazar.
Serial.read(), Serial.readBytes(),
Serial.readString(), Serial.readBytesUntil(),
Serial.parseInt(), Serial.parseFloat(),
Seri monitörden değer okur.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
ARDUINO FONKSIYONLARINA DAHA DETAYLI BAKIŞ
Arduino Fonksiyonlarının işletilmesi C dilindeki fonksiyon yapısı ile çok benzerlik gösterir.
Arduino programlarımızı tek bir fonksiyon (loop()) içerisinde yazabileceğimiz gibi onları küçük
birimlere de ayırabiliriz. Örneğin Delay() fonksiyonu parametre alan ama değer döndürmeyen
bir fonksiyondur.
Bölüm 14: ARDUINO PROGRAMLAMA DİLİ
Konu: FONKSIYON PARAMETRELERİ
• Arduino Programlama dili c,c++ yapısında
fonksiyonlar kullanır. Burada fonksiyon
parametre alabilir, ve çağrıldığı yere değer
döndürebilir.
Değer döndürmeyen fonksiyonların dönüş değer tipi “void” dir. Void kelime anlamı olarak hükümsüz
anlamına gelir. Fonksiyonların parametre almaları ve değer döndürmeleri zorunlu değildir.
Fonksiyonlar parametre alıp almadıklarına veya değer döndürüp döndürmemelerine göre gruplanabilir:
1- Parametre alan ve dönüş değeri olan
2- Parametre almayan ve dönüş değeri olan
3- Parametre alan ve dönüş değeri olmayan
4- Parametre almayan ve dönüş değeri olmayan
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR PARAMETRELER
Fonksiyonlar tanımlanırken hangi tip parametre alacakları belirtilir. Fonksiyonlara verdiğimiz
girişlere “parametre” denilir. Fonksiyonları tekrar edilen işlemler için kullanabiliriz.
!! VOID: Fonksiyonun başındaki void ifadesi bunun bir değer döndürmeyeceğini belirtir.
!! INT: Fonksiyonun başındaki int ifadesi bunun bir tamsayı değeri döndüreceğini belirtir.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
FONKSİYON ÇAĞIRMA
/* Seri haberleşme üzerinden “Arduino”
yazdıran fonksiyon saniyede 1 kez çağırılıyor. Bilgisayar
Ekranindan Arduino IDE monitorunu açınız. Arduino yazısı 1 Sn
aralıklarla gorulebilir.Seri Haberleşme örneği (UART)
Baud rate = 9600 olarak ayarlandi. IDE ortamındaki Seri monitor’
un de default değeri 9600’ dur. */
void setup()
{
Serial.begin(9600);
}
void loop()
{
ArduinoYazdir(); // Fonksiyon çağrısı
delay(1000); // Bir saniye bekle
}
Void ArduinoYazdir() ; // Bizim tanımladığımız fonksiyon
{
/* Aşağıdaki fonksiyon Arduino IDE de mevcuttur */
Serial.println (“Arduino”); // Bir saniye bekle
}
Yukarıda ArduinoYazdir isimli fonksiyon bizim tarafımızdan yazılmış olup Loop fonksiyonu
içerisinden çağrılmaktadır.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
- Fonksiyon yazma işleminde, fonksiyonda kullanılacak değişken tanımlamalarına ve fonksiyonda yapılacak işlem
sonucunun hangi türde olacağına dikkat edilmelidir.
- Fonksiyonun türü, işlem sonucunda döndürülecek değişken ile aynı tipte olmalıdır.
- Eğer fonksiyon, hiçbir değer döndürmeyecekse 'void' olarak tanımlanmalıdır.
Örneğin toplama işlemi yapan ve sonucu “int” geri döndüren bir fonksiyon yazalım. Fonksiyon a ve b adında “int” tanımlı iki
sayı almaktadır. a ve b’ yi toplayıp sonucu geri döndürmektedir.
int toplama(int a, int b)
{ int sonuc;
sonuc = a + b;
return sonuc; }
Burada oluşturulan sonuç değişkeni sadece fonksiyon içerisinde geçerlidir. Fonksiyonun görevi bittikten sonra sonuç
değişkeni kaybolur. Bu fonksiyonu programınızın gerekli yerinde kullanmak için;
int islemSonucu;
islemSonucu = toplama(2 + 3);
şeklinde fonksiyonu çağırmanız yeterli olacaktır.
YUKARIDAKİ FONKSİYON BU NOKTADA ÇAĞRILIYOR.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
ARDUINO DİLİ MATEMATİK FONKSİYONLARI
Temel matematik işlemleri matematik operatörleriyle gerçekleştirebiliyoruz. Karekök alma,
trigonometrik hesaplamalar gibi işlemler için matematik kütüphanesi fonksiyonlarını
kullanabiliriz.
https://www.arduino.cc/en/Reference/HomePage
Matematik kütüphanesi fonksiyonlarından belli başlıcaları aşağıda sıralanmıştır.
min(x, y): İki sayıdan küçük olanını bulur. Fonksiyon değeri olarak küçük sayının değerini
döndürür.
max(x, y): ): İki sayıdan büyük olanını bulur. Fonksiyon değeri olarak büyük sayının değerini
döndürür.
abs(x) : Sayının mutlak değerini hesaplar.
pow(base, exponent): Üs alma fonksiyonudur. (Base= sayının tabanı, exponent = sayının
üssü)
sqrt(x): Sayının karekökünü hesaplar.
Val = min(Val, 100); // Val değeri ile 100 sayısını karşılaştırır hangisi
// küçükse Val Değerine atama yapar.
// Sonuç Hiç bir zaman 100 değerinden büyük olamaz.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.14:FONKSİYONLAR
MATEMATİK FONKSİYONLARI İLE BAZI ÖRNEKLER
Val = max(Val, 20); // Val değeri ile 20 sayısını karşılaştırır. hangisi
büyükse // Val Değerine atama yapar.
// Sonuç hiç bir zaman 20 değerinden küçük olamaz.
abs(a); // a değişkeninin mutlak değerini hesaplar.
a++; // Sonra a’ nın değerini “1” artır.
sqrt(val); // Sayının karekökünü hesaplar. Dönen değer Double sayı
// tipindedir.
https://www.arduino.cc/en/Reference/HomePage
Daha fazla Bilgi için aşağıdaki linke bakınız.
Bölüm 3: ARDUINO PROGRAMLAMA DİLİ
Konu 3.15:ARDUINO’ DA KÜTÜPHANE (LIBRARY) KULLANIMI
Arduino platformunda diğer programlama platformları gibi, kütüphanelerin kullanımı mevcuttur.
Kütüphaneler, taslaklarınıza ekstra işlevsellik kazandırabilir. Bir taslağınızda kütüphane kullanmak için,
Sketch> Import Library komutunu seçiniz.
IDE ile yüklü gelen Kütüphaneler vardır, ama aynı zamanda kendi kütüphanelerizi oluşturabilirsiniz.
Aşağıdaki listede bir kısım Arduino kütüphanlerinin kullanımını göreceksiniz.
Standart Arduino Kütüphaneleri
EEPROM – EEPROM entegreden veri okuma ve veri yazma
Ethernet - Arduino Ethernet Shield aracılığıyla internete bağlanmak
Firmata – Standart seri bağlantı aracılığıyla bilgisayar uygulama
GSM - GSM shield ile GSM/GRPS networkunu kullanmak.
LiquidCrystal – LCD ekran kullanımı.
SD - SD kartlara okumak ve yazmak.
Servo - Servo motor kullanımı.
SPI - Serial Peripheral Interface (SPI) cihazlarla haberleşme.
SoftwareSerial – Herhangi bir dijital pinden seri iletişim gerçekleştirme.
Stepper – Step motor kontrolü.
TFT - Arduino TFT ekran ile şekiller ve resimler oluşturmak.
WiFi - Arduino WiFi shield ile internete bağlanmak.
Wire – (TWI/I2C) I2C cihazlarla bağlantı.
Daha fazla bilgi için aşağıdaki linke bakınız.
https://www.arduino.cc/en/Reference/Libraries
Arduino kartın dijital girişlerine buton bağlayacağız ve butonlar ile LED’ i yakıp söndüreceğiz.
Breadboardın üst kenarındaki butona basıldığı zaman;
LED yanacak, alttaki butona bastığımızda, LED
sönecektir.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1: BUTON İLE LED YAKIP SÖNDÜRME
Jumper tel paketi - 1 Adet
Arduino Uno R3 – 1 Adet
Yarım boy BreadBoard – 1 Adet
Baskı devre tipi buton – 2 Adet
270 Ω Direnç (kırmızı, mor,
kahverengi çizgili) – 1 Adet
5mm Kırmızı LED – 1 Adet
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1.1: BUTON İLE LED YAKIP SÖNDÜRME MALZEME LİSTESİ
Butonlar gerçekten basit elektriki elemanlardır. Düğmesine bastığınızda iki kontak
birbirine birleşir ve elektrik akımı akmaya başlar. Bıraktığınız da ise kontaklar arası bağlantı
kesilir dolayısıyla elektrik akımı da kesilir.
Bu derste kullanılan baskı devre tipi butonlar, biraz kafa karıştırıcı olabilir, dört adet
bağlantı noktası vardır.
Şekilde görüldüğü gibi A ve D uçları ile B ve C uçları buton içinde birbirine bağlıdır.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1.1.1: BUTONLAR
Butonların şekli kare olmasına rağmen, butonlardaki kontaklar çapraz bir şekilde
bulunur. Aşağıdaki şekilde görüldüğü gibi birbirine çapraz pinler normalde açık buton olarak
kullanılmıştır.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1.2: BUTON İLE LED YAKIP SÖNDÜRME BREADBOARD
DÜZENİ
Arduino kartınıza aşağıdaki programı yükleyiniz. A butonuna basınca LED ışık verecektir, B
butonuna basınca ise LED sönecektir.
/*
Inputs
*/
int ledPin = 5;
int buttonApin = 9;
int buttonBpin = 8;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
}
Bu program ise üç kısımdan oluşmaktadır. İlk kısım
tahmin edileceği gibi tanımlamalar (Defines) kısmıdır.
Burada kolaylık olması bakımından Arduino Uno
kartının çıkışı ve girişi için tanımlama yapılmıştır.
int ledPin = 5; // LedPin’i 5 değerine atama yapar.
// buttonApin’i 9 değerine atama yapar.
int buttonApin = 9;
// buttonBpin’i 8 değerine atama yapar.
int buttonBpin = 8;
// Bu durumda artık rakamlar yerine
// isimleri kullanabilirsiniz. Bu rakamlar giriş ve
// çıkış pinlerini belirtir. Rakamları
// aklınızda tutmak zorunda değilsiniz.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1.3: BUTON İLE LED YAKIP SÖNDÜRME ARDUINO
TASLAĞI
Programın ilk bölümü kullanılacak üç pin için, üç değişkeni tanımlar. 'LedPin' çıkış pini,
'buttonApin' A butonu ve 'buttonBpin' ise B butonunun olduğu giriş pinidir.
'Setup' fonksiyonunda, ledPin çıkış (OUTPUT) olarak tanımlanmıştır. Buna karşın, iki
adet pin de giriş olarak tanımlanacaktır. Bu durumda, pinMode komutu ile girişleri
'INPUT_PULLUP' olarak ayarlayalım.
pinMode(ledPin, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
INPUT_PULLUP direktifi ile buttonApin ve buttonBpin, PULL-UP giriş olarak
tanımlanmıştır. Bunun anlamı girişe herhangi bir seviyedeki gerilim bağlı değil ise, girişin
durumu dijital olarak 1-HIGH seviyesinde kalacaktır. Bu butona basılınca, girişin durumu GND
seviyesine çekilir. Bu durumda girişin durumu dijital olarak 0-LOW seviyesine çekilmiş olur.
INPUT_PULLUP direktifi ile mikrodenetleyici içerisindeki PULL-UP dirençleri aktif
yapılmaktadır. Bu dirençler mikrodenetleyici içerisinde +5V hattına otomatik bağlanmaktadır.
Giriş; PULLUP komutundan dolayı, normal durumda HIGH konumunda kalacaktır.
Sadece butona basıldığında LOW durumuna düşebilir. Bu durumu 'loop' fonksiyonu içinde ele
alacağız.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1.3: BUTON İLE LED YAKIP SÖNDÜRME ARDUINO
TASLAĞI
void loop()
{
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
} 'Loop' fonksiyonunda, her butona
ait bir 'if' ifadesi vardır. Hangi giriş GND
hattına bağlanırsa, girişle alakalı
'digitalWrite' komutu çalıştırılır.
Eğer A butonuna basılırsa, ledPin
HIGH yapılmaktadır. B butonuna basılırsa,
ledPin LOW yapılmaktadır.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.1.3: BUTON İLE LED YAKIP SÖNDÜRME ARDUINO
TASLAĞI
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.1:ARDUINO UNO ISI KONTROL UYGULAMASI MALZEME
LİSTESİ
Bu bölümde Arduino Uno kartı ile basit bit Isı Kontrol Uygulaması yapılacaktır.
Yukarıdaki bilgilerimize dayanıp, aşağıdaki elemanları sırası ile çalışma ekranımıza taşıyalım.
Arduino UNO R3 bir – 1 Adet
TMP36 sıcaklık sensörü -1 Adet
LED (Kırmızı-Sarı Yeşil) – Her birinden 1’er Adet olmak üzere toplamda 3 adet
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.1.1:TMP35/36/37 SICAKLIK SENSÖRLERİ
Bu veriler TMP veya LM kodlu sıcaklık sensörleri içindir. TMP36 kodlu sensör bu
uygulamada seçilmiştir. (-40 dan 150 CO’ ye kadar ölçüm yapabilir.)
LM35 / TMP35 (Celsius çıkış) ve LM37 / TMP 37 (Fahrenheit çıkış) TMP36’ya çok
benzer. TMP36 kullanmamızın ana nedeni sıcaklık ölçme aralığının yüksek olması ve 0 CO’ nin
altındaki sıcaklıklarda, negatif gerilim kaynağına ihtiyaç duymamasıdır.
Yukarıdaki farklılıklar hariç, TMP 35/36/37 ve LM 35/36/37’ nın işlevleri aynıdır.
TMP36 sıcaklık sensörü verileri aşağıda listelenmiştir.
Boyutu: TO-92 paket
Sıcaklık aralığı: -40 ° C ila 150 ° C
Çıkış aralığı: 0,1V (-40 ° C), 2.0V (150 ° C), fakat doğruluk 125 ° C
sonra azalır
Güç kaynağı: 2.7V-5.5V çalışma geriliminde sadece 0,05 mA’lik bir
akım çeker.
Daha detaylı bilgiler için TMP36 veri yapraklarına bakınız. (TMP36
Datasheet)
TMP36 ile 34 ve 35 serisini daha iyi karşılaştırmak için aşağıdaki şekli inceleyiniz.
Şekilde görüldüğü üzere X ekseni ısıyı ve Y ekseni ise ısı sensörlerinin çıkış gerilimini
göstermektedir. “b” eğrisi, TMP36 sensörüne aittir.
Gerilimi sıcaklığa dönüştürmek için aşağıdaki formülü
kullanacağız. (LM36 veya TMP36 sensörü için geçerli.)
SICAKLIK(°C ) = [(Çıkış Gerilimi Volt) – 0.5] * 10
Örneğin Çıkış Gerilimi 1V ise sıcaklık şu şekilde hesaplanır.
((1V -0.5) * 10) = 50 ° C
Görüldüğü gibi 1V=1000 mV’ luk gerilim için ölçülen sıcaklık 50
°C’ dir.
Eğer LM35 veya TMP35 kullanıyorsanız, yukarıdaki şekilde “a”
eğrisine denk gelir. Bu durumda formül:
SICAKLIK(°C ) = (Çıkış Gerilimi Volt) * 10
olacaktır.
Bu uygulamada Arduino UNO R3 ve TMP36 sıcaklık sensorü
kullanılarak sıcaklık ölçümü yapılıp, Arduino'nun serial monitor
kısmında görüntülenmiştir. BreadBoard’daki LED’ ler ise aşağıdaki
durumlarda ışık verecektir.
Sarı LED: 0 OC’ nin altındaki sıcaklıklar
Yeşil LED: 0 ile 40 OC arasındaki sıcaklıklar
Kırmızı LED: 40 OC nin üzerindeki sıcaklıklar
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.1.1:TMP35/36/37 SICAKLIK SENSÖRLERİ
TMP36 sıcaklık sensorunun 3 adet bağlantı pini vardır,
Soldaki: +5V
Ortadaki :Sinyal ucu Arduino'nun analog 0. pine bağlanacaktır.
Sağdaki :GND
TMP36 sıcaklık sensoru çalışma voltajı 2,7-5,5V arasındadır, Arduino üzerinden
rahatlıkla beslenebilir. TMP36'nın sinyal pini Arduino'nun analog 0. bitine bağlanacaktır. Program
yazma esnasında ölçümler için yukarıdaki formül kullanılacaktır.
LED’ leri sırası (SARI-YEŞİL-KIRMIZI) ile 13, 12, 11 nolu dijital çıkış pinlerine
bağlayınız. Şimdi New Electronics Lab çalışma alanına dönüp aşağıdaki bağlantıları yapınız.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.2: BREADBOARD DÜZENİ
Devrenin şemasını görmek için Schematic View Butonuna tıklayınız. Aşağıdaki gibi bir görüntü
ile karşılaşacaksınız.
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.2: BREADBOARD BAĞLANTISI
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.3: TASLAK (SKETCH) YAZIMI ve ARDUINO KARTINA YÜKLENMESİ
Code Editor butonuna tıklayınız. Aşağıdaki taslak çalışmasını “Code Editor” penceresine yazınız. Her yaptığınız işlem “New Electronics Lab”
tarafından otomatik olarak internette kayıtlı hesabınıza kayıt edilecektir. Bir dahaki New Electronics Lab oturumunda çalışmanızın en son halini
göreceksiniz.
//Çıkış Pin Değişkenleri
int ledYellow = 13;
int ledGreen = 12;
int ledRed = 11;
//TMP36 Pin Değişkenleri
int sensorPin = 0; // Analog pin 0’ a TMP36'nın Vout (sense) ucu //bağlanmalıdır.
/*
Bilgisayarla seri iletişim yapabilmek için Setup’ da aşağıdaki tanımlama yapılır.
*/
void setup()
{
pinMode(ledYellow, OUTPUT); // Ledlerin bağlanacağı
pinMode(ledGreen, OUTPUT); // çıkışları ayarla
pinMode(ledRed, OUTPUT); //
Serial.begin(8600); //Bilgisayarla seri iletişimi başlat.
//sonuçları görmek için serial monitoru açınız.
}
void loop() // Loop fonksiyonuna giriş
{
//Sıcaklık sensöründen alınan ham değer
int reading = analogRead(sensorPin);
// Bu noktada Oran-Orantı yöntemi ile A0 analog girişine uygulanan gerilimin değerini
//hesaplıyoruz.
float voltage = reading * 5.0;
voltage = voltage / 1024.0;
// ilk önce ham reading değeri gönderilir.
Serial.print("Ham deger="); Serial.println(reading);
// TMP36'nın sinyal ucundaki gerilim
Serial.print(voltage); Serial.println(" volt");
// Şimdi de sıcaklığı gösterelim.
float temperatureC = (voltage - 0.5) * 100 ;
// MiliVolt cinsinden gerilimi sıcaklık değerine çevirmek için bu
// formül kullanılır.
//500 mVolt 0 C için offset değeridir.
Serial.print(temperatureC); Serial.println(" derece C");
// Sıcaklık değerine bağlı olarak ilgili LED' in yakılması
if (temperatureC < 0) // Sıcaklığın 0' ın altında olması durumu
{digitalWrite(ledYellow, HIGH);digitalWrite(ledGreen, LOW);digitalWrite(ledRed, LOW);}
else if (temperatureC >= 0 && temperatureC <= 40 ) // Sıcaklığın 0 ila 40 derece arasında
olması
{digitalWrite(ledYellow, LOW);digitalWrite(ledGreen, HIGH);digitalWrite(ledRed, LOW); }
else if (temperatureC > 40 ) // Sıcaklığın 40 Derecenin üstünde olması durumu
{digitalWrite(ledYellow, LOW);digitalWrite(ledGreen, LOW);digitalWrite(ledRed, HIGH); }
delay(200); //200 mS bekle
}
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.3: TASLAK (SKETCH) YAZIMI ve ARDUINO KARTINA YÜKLENMESİ
Bölüm 3: ARDUINO PROJELERİ
Konu 4.2.4: SİMULASYONUN ÇALIŞTIRILMASI
Bu aşamada yaptığınız devreyi ve yazdığınız taslak programı çalıştırınız. Sağ üst köşedeki
“Start Simulation” butonuna basarak simulasyonu başlatın ve çalışmanızı test ediniz. TMP36
sensörünün üzerindeki Sıcaklık Değiştirme çubuğunu 0 ila 125 OC arasında değiştirerek hangi
LED’ in yandığını gözlemleyiniz. Yukarıdaki taslakta Ayrıca Serial monitörden sırası ile Analog
Giriş 0’ ın Ham Değeri (reading), Ham Değerin gerilime (voltage) dönüştürülmüş hali ve son
olarak Sıcaklık Değeri(temperatureC) gözlemlenebilir.
24 C0 deki ham Analog
değer ve gerçek gerilim
değeri (serial monitor
aracılığı ile)
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
Bu derste, direncin farklı değerleri kullanılarak, bir LED’in parlaklığını
değiştirmeyi öğreneceksiniz.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.1: MALZEME LİSTESİ
Bu derste anlatılan deneyleri uygulamak için, aşağıdaki parçalar gereklidir.
Parça-Adet
5mm Kırmızı LED- 1 Adet 270 Ω Direnç (kırmızı, mor, kahverengi çizgili) – 1 Adet
470 Ω Direnç (sarı, mor, kahverengi çizgili) -1 Adet 2.2 kΩ Direnç (kırmızı, kırmızı, kırmızı çizgili) -1 Adet
10 kΩ Direnç (kahverengi, siyah, turuncu çizgili) 1 Adet
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.1: MALZEME LİSTESİ
Yarı-Boy Breadboard – 1 Adet Arduino Uno R3 - 1 Adet
Bağlantı kabloları – 1 Adet
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.2: LED’LER
LED'lerden gösterge ışıkları yapabilirsiniz. Elektrik tüketimleri çok azdır ve ömürleri
çok uzundur.
Bu derste, muhtemelen en çok en yaygın olan 5mm kırmızı LED kullanacaksınız.
5mm., LED’ in dış çapını ifade eder. 5mm’lik LED’lerin yanı sıra, 3 mm ve 10 mm. çaplarında
LED’ler de mevcuttur.
LED’ inizi, doğrudan bir pil veya gerilim kaynağına bir bağlayamazsınız.. LED’ in Anod
ve Katod uçları vardır ve Anot ucuna (+) ve Katod ucuna (-) bağlanmalıdır. Aksi durumda LED
ışık yaymaz. Kırmızı LED’ in çalışma gerilimi 1.5 Volttur. LED’in çalışma gerilimini
sınırlandırmak için, ön direnç takılmalıdır. Aksi takdirde LED hasar görebilir.
Eğer bir LED ile bir direnç kullanmazsanız, LED
üzerinden çok fazla akım akacaktır. Doğal olarak, LED
üzerinde aşırı ısı üretilir. LED; hemen tahrip olabilir.
LED’ in, Anot(+) ve Katod(-) uçlarını bulmak için,
iki yol vardır. İlk olarak, Anot(+) ucu daha uzundur.
Katod(-) ucu kısadır.
İkincisi; Katod(-) ucuna LED’ in şeffaf tarafından
bakarsak, düz ve geniş bir kısım görürüz.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.3: DİRENÇLER
Adından da anlaşılacağı gibi, dirençler elektrik akımını
sınırlar. Daha yüksek bir değerli bir direnç, daha az elektrik akımı
akacaktır. Biz LED’ den geçecek olan akımı direnç ile
sınırlandıracağız. LED’ in ne kadar parlaklık vereceği LED’ e
takılan seri direncin değerine bağlıdır.
Direnç birimi, genellikle Yunancada Omega-Ω harfi ile
kısaltılır. Ohm şeklinde okunur. Bir Ohm’un as katları çok fazla
kullanılmaz. Genelde Kilo ohm (1000 Ω) ve Mega ohm (1000.000
Ω) gibi üst katları kullanılır.
Bu derste, direnç, 270Ω, 470Ω, 2.2kΩ ve 10kΩ dört farklı
değerleri kullanacağız. Üzerlerinde farklı renkli şeritler olması
dışında bu dirençleri hepsi aynı görünüyor. Bu şeritler size
direncin değerini söyler.
Direnç üzerinde üç renkli çizgili renk kodu ve ve
devamında altın şerit bulunur. Aşağıdaki gibi her renge ait bir
numara vardır:
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.3: DİRENÇLER
RENKLER
KATSAYI değeri
Çarpan Tolerans
Sıcaklık
katsayısı1. band 2. band 3. band
Siyah 0 0 1
Kahverengi 1 1 1 10 ± %1 100 ppm
Kırmızı 2 2 2 100 ± %2 50 ppm
Turuncu 3 3 3 1k 15 ppm
Sarı 4 4 4 10k 25 ppm
Yeşil 5 5 5 100k ± %0.5
Mavi 6 6 6 1M ± %0.25
Mor 7 7 7 10M ± %0.10
Gri 8 8 8 ± %0.05
Beyaz 9 9 9
Altın 0.1 ± %5
Gümüş 0.01 ± %10
Renksiz ± %20
Yandaki tablonun kolay ezberlenmesi
açısından bir heceleme geliştirilmiştir.
SoKaKTa SaYaMaM GiBi (Ama Görürüm..)
Burada dikkat edeceğiniz gibi ilk iki kelimenin
sessiz harfleri sırası ile renk kodlarını (Siyah, Kahverengi,
Kırmızı, Turuncu, Sarı, Yeşil, Mavi Mor, Gri, Beyaz ), son
iki kelimenin baş harfleri ise Altın ve Gümüş'ü anımsatmak
için kullanılmıştır. S K K T S Y M M G B FORMÜL BU!
Örneğin yukarıdaki gibi dört bantlı bir direncimiz
olsun. Direnç resminden görüleceği üzere direncimizin
renkleri Kırmızı-Mor –Kahverengi – Altın şeklindedir.
Tablodan görüleceği üzere Kırmızının değeri 2 ve Morun
değeri 7’ dir. 2 ve 7 sayılarının yan yana getiriyoruz. Bunu
çarpan rengi ile çarpıyoruz. Çarpan rengimiz ise
Kahverengidir. Kahverenginin çarpan değeri ise 10’ dur. Bu
durumda direncimizin değerinin 27x10= 270 Ω olduğu
buluruz.
Çizgili kahverengi, siyah, turuncu bir direnç yani 10 k
10 ve üç sıfır yani 10.000 Ω olduğunu.
Renk şeritleri Kahverengi- Siyah-Turuncu-Altın
olan bir direncin değeri ise 10X1KΩ yani 10.000 Ω’ dur.
LED'ler gibi, dirençler yönlü elemanlar değildir. Her
iki yönlü bağlanabilirler.
Bu slayt glossary’de olsun.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.4: BREADBOARD DÜZENİ
270 Ω direnci ve LEDİ kullanarak, aşağıda gösterildiği gibi, Breadboard üzerinde bağlantı
yapınız.
Arduino kartı, LED’in ve direncin kullanacağı
5 Volt gerilim için, uygun bir kaynaktır. Arduino
kartınızın USB kablosunu bilgisayarınıza
takınız, Arduino kartı size 5 Voltluk gerilim
sağlayacaktır.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.4: BREADBOARD DÜZENİ
270 Ω’luk direnç ile LED oldukça parlak ışık verir. Eğer 270 Ω’ luk
direnci 470 Ω’luk direnç ile değiştirirsek, o zaman LED biraz
sönük görünür. 2.2kΩ direnci LED ile seri bağlarsak LED
oldukça sönük ışık verir. Son olarak, yerinde 10 kΩ direnç ile
deneme yaparsak LED sadece görünür şekilde çok az ışık verir.
Kırmızı kabloyu Breadboard’dan çıkartıp boş bir deliğe takarsak,
tıpkı bir anahtar gibi davranır ve LED söner.
Yüksek dirençten daha az akım geçer. (OHM KANUNU)
Kırmızı renkli LED için LED gerilimi 1,5 volt alınır.
I1=(U-ULED)/R1= (5-1,5)/270= 13 miliAmper
I2=(U-ULED)/R2= (5-1,5)/470= 7 miliAmper
I3=(U-ULED)/R3= (5-1,5)/2200= 1,5 miliAmper
I4=(U-ULED)/R4= (5-1,5)/10000= 0,3 miliAmper
I4 < I3 < I2 < I1
I1 Akımı en yüksektir. Akım ne kadar yüksekse; LED o derece
parlak yanacaktır.
Bu durumda LED’ e seri bağlanacak en uygun direnç 270 ohm olarak görülmektedir.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.5: BREADBOARD ÜZERİNDEKİ LEDİ ARDUINO
BOARD İLE YAKIP SÖNDÜRMEK
Breadboard basit bir değişiklik ile, LEDi Arduino kartımızın bir çıkış pinine bağlayabiliriz.
Aşağıda gösterildiği gibi, kırmızı bağlantı telini, Arduino kartınızın +5V konnektöründen D13
portuna taşıyınız.
int led = 13;
LED 13 nolu çıkıştan yanıyor
Bir sonraki aşamada çıkış
numarasının değiştirilmesi
görülecektir.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.3.5: BREADBOARD ÜZERİNDEKİ LEDİ ARDUINO
BOARD İLE YAKIP SÖNDÜRMEK
Şimdi 4.Derste 'Blink' örnek taslağını(programını) Arduino kartına yükleyiniz. Hem
Arduino kartına da yerleşik olan 'L' LED’ inin, hem de BreadBoardda bulunan LED’in yanıp
söndüğünü göreceksiniz.
Arduinonun farklı bir pinini kullanmayı deneyiniz. Bu pin D7 olacaktır. Kırmızı bağlantı
kablosunu, D13 pininden D7 pinine taşıyınız. Taslak çalışmanız (Programınız) üzerinde
aşağıdaki değişikliği yapınız.
int led = 13;
Yukarıdaki satırı aşağıdaki gibi değiştiriniz.
int led = 7;
Değiştirilmiş programınızı Arduino Kartınıza yükleyiniz. LED’iniz yine yanıp sönecektir. Ama bu
kez D7 pini üzerinden çalışmaktadır.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4: ARDUINO İLE RGB LED UYGULAMASI
Bu derste, Arduino ile RGB LED (Kırmızı Yeşil Mavi) kullanmayı öğreneceksiniz. LED’in rengini
kontrol etmek için, Arduino IDE’ de bulunan `analogWrite` fonksiyonu kullanılır.
Görünüş olarak RGB (Kırmızı, Yeşil, Mavi)
LED'ler, normal LED’ lere benzer. Ancak LED paketi
içinde, üç farklı LED barındırır. Kırmızı, yeşil ve de mavi
olmak üzere 3 LED vardır. Her bir LED için, ayrı bir bacak
mevcuttur. Her LED'in parlaklığını kontrol ederek, hemen
hemen istediğiniz herhangi bir rengi elde edebilirsiniz.
Normal şartlar altında LED’ e seri bağlanan
direncin değerini değiştirip, LED’ lerin parlaklığını
ayarlayabiliriz. Fakat bu yöntem çok zordur. Her seferinde
renk ayarlamak için direnç değerlerini değiştirmek zorunda
kalırsınız!
Neyse ki; Arduino IDE’de `analogWrite`
fonksiyonu yardımıyla renk değiştirme işini kolaylıkla
yapabilirsiniz. `AnalogWrite` komutu ile, RGB LED’in, her
üç LED’ine de istediğiniz miktarda değişken elektrik akımı
gönderebilirsiniz.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4: ARDUINO İLE RGB LED UYGULAMASI
PWM TEORİSİ : Darbe Genişlik Modülasyonu (PWM), elektrik gücünü kontrol etmek için
kullanılan bir tekniktir. Biz LED'lerin parlaklığını kontrol etmek için, burada PWM tekniğini
kullanacağız.
Aşağıdaki diyagram, Arduino PWM çıkışlarından birinin sinyalini göstermektedir.
Kabaca her 1/500 saniyede, PWM çıkışı bir
darbe üretecektir. Bu darbenin uzunluğu 'analogWrite'
fonksiyonu ile kontrol edilir. Yani 'analogWrite(0)' kodu
herhangi bir darbe üretmeyecektir. 'analogWrite (255)'
komutu ise yeni darbe gelene kadar çıkışı 5 Volt
seviyesinde tutacaktır.
Eğer ‘analogWrite’ komutuna, 0 ile 255
arasında bir değer ataması yaparsak, atadığımız
değere göre bir darbe üretilecektir. Arduino çıkışımızın 5
Voltta kalma süresini, bir PWM peryodunun %5’ i olarak
ayarlarsak, çıkışımıza sadece % 5 oranında elektriki
güç aktarmış oluruz.
PWM peryodunun %90’ ı süresince çıkışımızı
enerjilendirirsek, bu durumda çıkışa bağlı yükümüz
elektriki gücün %90’ ını alacaktır. Biz LED’ in bu kısa
süre içerisinde yanıp söndüğünü göremeyiz. Bize göre;
sadece LED’in parlaklığı değişiyormuş şeklinde görülür
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.1: MALZEME LİSTESİ:
Bu derste anlatılan projeyi uygulamak için, aşağıdaki parçalar gerekecektir.
Parçalar-Adet
Diffuse RGB 10mm LED - 1 Adet
270 Ω Direnç (kırmızı, mor, kahverengi
çizgili) - Biraz sönük olmasını isterseniz
1KΩ’ luk direnç kullanabilirsiniz – 3 Adet
Yarım boy BreadBoard – 1 Adet
Arduino Uno R3 Kartı – 1 Adet Jumper tel paketi – 1 Adet
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.2. BREADBOARD BAĞLANTISI
RGB LED’ in dört bacağı vardır. LED paketi içindeki her bir LED' in Anod(+) bacakları dışarıya
çıkarılmıştır. Katod (-) uçları ise, LED paketi içinde birbirine bağlanmış ve tek bir bacak olarak
LED paketinin dışına çıkarılmıştır.
Ortak Katod(-) uç; LED paketinin düz tarafından bakıldığında
ikinci bacaktır. Aynı zamanda, bu dört bacak içindeki en uzun bacaktır.
Bu bacağı Arduino kartınızda GND ucuna bağlayacaksınız.
LED’ den geçen akımı sınırlandırmak için
270Ω direnç kullanmak gereklidir. Arduino
kartındaki 9,10 ve 11 numaralı çıkışları, 270Ω’
luk dirençler üzerinden, RGB LED'in üç
Anod(+) ucuna bağlayınız. Arduino Kartınızın
9,10 ve 11 nolu uçları PWM çıkışı
üretmektedir. PWM hakkında daha ayrıntılı
bilgi için PWM TEORİSİ konusuna bakınız.
Uyarı: Eğer Ortak Anodlu(+) LED
kullanıyorsanız uzun bacağı GND’ ye değil,
+5V ucuna bağlayınız.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.2: BREADBOARD BAĞLANTISI
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.3: RGB RENKLERİ
Kırmızı, yeşil ve mavi ışık miktarlarını değiştirerek istediğiniz herhangi bir renk elde
etmemizin nedeni, gözümüzün içinde üç tür ışık reseptörü olmasıdır (kırmızı, yeşil ve mavi).
Gözünüz ve beyniniz kırmızı, yeşil ve mavi renklerinin miktarları işler, ve bu miktarları bir renk
yelpazesine dönüştürür.
Bir bakıma, üç LED kullanarak, biz gözlerimizi kandırıyoruz. Aynı düşünceyi, kırmızı,
yeşil ve mavi renk noktaları(pikselleri) kullanan LCD ekranlar ve TV'ler de kullanılır.
Her üç LED parlaklığını da, aynı olacak şekilde ayarlarsak,
gözümüze görünen ışığın rengi beyaz olacaktır. Mavi LED’in enerjisini
keserseniz, sadece kırmızı ve yeşil LED'ler ışık verir. Bu durumda renk açık
sarı görünür.
Kırmızı, yeşil ve mavi LED’lerin parlaklığını ayrı ayrı kontrol
edersek, herhangi bir renk karışımını elde edebiririz.
Siyah bir renk olarak kabul edilmez. Daha ziyade ışık yokluğu
olarak kabul edilebilir. Eğer bütün LED’ lerimizi kapatırsak siyah renk elde
edebiliriz.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI)
Aşağıdaki test programında renkler sırası, kırmızı, yeşil, mavi, sarı, mor, ve aqua olarak
görünecektir. Bu renkler, standart bilgisayar renkleridir.
/*RGB LED*/
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
//Ortak Anodlu LED kullanılıyorsa aşağıdaki
// komut satırını aktif yapınız.( uncomment)
//#define COMMON_ANODE
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
setColor(255, 0, 0); // red
delay(1000);
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Bu örnekte #ifdef #endif ve #define gibi önişlemci
(preprocessor) deyimleri kullanılmıştır.
#define komutu ile COMMON_ANODE satırı aktif
yapılırsa red, green, ve blue değerleri 255
sayısından çıkarılmaktadır.
Burada #ifdef #endif ve #define kullanımının tek
amacı; programcının donanımda yapacağı bir
değişiklikte ( Ortak Anodlu LED kullanmak),
programın da buna kolaylıkla adapte olabilmesini
sağlamaktır.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI)
Bu taslağı deneyiniz. Bu taslağı parçalayıp ayrıntılı bir şekilde inceleyeceğiz. Taslak;
Arduino pinlerinden hangisinin, hangi renk için kullanılacağını belirlemekle başlar.
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
Bir sonraki adım 'setup' fonksiyonunu yazmaktır. Daha önce derslerde gördüğünüz gibi, 'setup'
fonksiyonu sadece resetten sonra bir kez çalıştırılır. Bu durumda, yapmak zorunda olduğunuz
görev, üç kart pinini çıkış olarak tanımlamaktır.
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI)
'loop' fonksiyonuna göz atmadan önce, taslağımızdaki en son fonksiyona bir göz gezdirelim.
void setColor(int red, int green, int blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Bu fonksiyon, üç argüman içerir. RED ,GREEN ve BLUE LED'lerin parlaklığı için
kullanılır. Her renk için 0 sayısı, LED sönük anlamına gelir ve 255 maksimum parlaklık anlamına
gelir. Bu durumuda ‘setcolor’ fonksiyonuna atayacağımız sayı aralığı 0-255 arasında olacaktır.
‘setcolor’ fonksiyonu çalıştırıldığı zaman, her bir LED’ in parlaklığını ayarlamak için
'analogWrite' fonksiyonunu çağırır. Dikkat edilirse ‘setcolor’ fonksiyonu kullanıcı tarafından
oluşturulmuş bir fonksiyondur.
Eğer 'loop' fonksiyonuna bakarsak, bir saniye aralıklarla hangi rengin görüntülenmek
istendiğini görürsünüz. `Setcolor` fonksiyonunun, `loop` fonksiyonu içerisinden çalıştırılması ile
RED, GREEN, BLUE değerlerini değiştirerek birer saniye aralıklarla istediğiniz rengi elde
edersiniz.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI)
void loop()
{
setColor(255, 0, 0); // red
delay(1000);
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0);// yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255);// aqua
delay(1000);
}
Taslak programınıza yeni renkler
eklemeyi deneyin. LED’ lerdeki Renk efektinin
değiştiğini göreceksiniz.
Uyarı:
Ortak Anot(+) RGB LED
kullanıyorsanız doğru rengi elde etmek için
‘AnalogWrite’ fonksiyonunun değerlerini
değiştirmek zorundasınız. Bu durumda
girdiğiniz renk değeri 255’ den çıkarılır. (red =
255 - red; gibi)
Eğer ortak Katod(-) RGB LED
kullanıyorsanız, aşağıdaki satırı yorum
karakterlerini ( // ) kullanarak iptal ediniz!
// #define COMMON_ANODE
Satırın sol tarafındaki // işaretleri, bu
satırın Arduino IDE derleyicisi tarafından
dikkate alınmayacağını gösteriyor.
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.5: RENKLERİ ARDUINO RGB LED
UYGULAMASI İLE GERÇEKLEŞTİRMEK
İnternet sayfalarında ve bilgisayarımızda oluşan bütün renkler daha önce de belirtildiği
gibi üç temel rengin (RGB) karışımı ile oluşur.
Ayrıntılı bilgi için aşağıdaki linke bakınız: https://tr.wikipedia.org/wiki/Web_renkleri
Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal
siyah #000000 gümüş #c0c0c0 bordo #800000 kırmızı #ff0000
lacivert #000080 mavi #0000ff menekşe #8f00ff galibarda #ff00ff
yeşil #008000 çimen #00ff00 kahve #964B00 sarı #ffff00
teal #008080 cyan #00ffff gri #808080 beyaz #ffffff
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.5: RENKLERİ ARDUINO RGB LED
UYGULAMASI İLE GERÇEKLEŞTİRMEK
Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal
siyah #000000 gümüş #c0c0c0 bordo #800000 kırmızı #ff0000
lacivert #000080 mavi #0000ff menekşe #8f00ff galibarda #ff00ff
yeşil #008000 çimen #00ff00 kahve #964B00 sarı #ffff00
teal #008080 cyan #00ffff gri #808080 beyaz #ffffff
Yukarıdaki tabloda görüldüğü gibi, renkler Hexadecimal(Onaltılık sayı sistemi) ile
gösterilmiştir. Burada görüldüğü gibi, kırmızı rengi elde etmek # FF0000 değerini girmek
gerekir. FF hexadecimal değeri, Decimal sayı sisteminde 255 değerine denk gelir.
Arduino kartınızda, bu renklerden birini deneyelim. ‘setColor’ fonksiyonuna bu değerleri
hexadecimal sayı sisteminde gireceğiz. ( 0x karakterleri Arduino IDE programına girilen sayının
hexadecimal karakterde olduğunu söyler.)
Menekşe rengini elde etmek için, kırmızı, yeşil ve mavi değerleri (Hexadecimal olarak)
sırasıyla 8F, 00 ve FF olmalıdır. Böylece 'setColor' fonksiyonunun içine bu değerleri
aktarabilirsiniz:
setColor(0x8F, 0x0, 0xFF); // Menekşe rengi hexadecimal değerleri
Bölüm 4: ARDUINO PROJELERİ
Konu 4.4.5: RENKLERİ ARDUINO RGB LED
UYGULAMASI İLE GERÇEKLEŞTİRMEK
Renk değerlerinin önüne '0x' koyarak renk değerleri için Hexadecimal(onaltılık sayı
sistemi) giriş yapmış olduk.
‘Loop' fonksiyonuna yukarıdaki renklerden üç renk eklemeyi deneyin. Her bir renkten
sonra bir gecikme eklemeyi ihmal etmeyin.

More Related Content

Similar to Arduinoİle Programlama

Android ve Arduino ile Bluetooth üzerinden uzaktan kumandalı araba
Android ve Arduino ile Bluetooth üzerinden uzaktan kumandalı arabaAndroid ve Arduino ile Bluetooth üzerinden uzaktan kumandalı araba
Android ve Arduino ile Bluetooth üzerinden uzaktan kumandalı arabaMuharrem Tac
 
Donanim
DonanimDonanim
Donanimniyazi
 
Arduino eğitimleri 2 - arduino platformuna giriş
Arduino eğitimleri   2 - arduino platformuna girişArduino eğitimleri   2 - arduino platformuna giriş
Arduino eğitimleri 2 - arduino platformuna girişCoşkun Taşdemir
 
Arduino- Potansiyometre
Arduino- PotansiyometreArduino- Potansiyometre
Arduino- PotansiyometreFatma Cnblt
 
Seden çakmak
Seden çakmakSeden çakmak
Seden çakmakseden186
 
Güneş Takip Sistemleri ve Güneşli Pişiriciler
Güneş Takip Sistemleri ve Güneşli PişiricilerGüneş Takip Sistemleri ve Güneşli Pişiriciler
Güneş Takip Sistemleri ve Güneşli PişiricilerMuhammed Hatal
 
ferhat gör
ferhat görferhat gör
ferhat görferhat36
 
Temel plc komutlarına giriş
Temel plc komutlarına girişTemel plc komutlarına giriş
Temel plc komutlarına girişEmreYlmaz84
 
Mezura.net - Schneider Electric - SmartStruxure Lite Çözümü
Mezura.net - Schneider Electric - SmartStruxure Lite ÇözümüMezura.net - Schneider Electric - SmartStruxure Lite Çözümü
Mezura.net - Schneider Electric - SmartStruxure Lite Çözümücengizakm
 
Led'lerle havaya yazı yazma
Led'lerle havaya yazı yazmaLed'lerle havaya yazı yazma
Led'lerle havaya yazı yazmaProje Okulu
 
Pic programlama-hocasi
Pic programlama-hocasiPic programlama-hocasi
Pic programlama-hocasisersld90
 
Arduino' nun temel kavramları
Arduino' nun  temel kavramlarıArduino' nun  temel kavramları
Arduino' nun temel kavramlarıFatma Cnblt
 
Anakartlar ve önbellekler
Anakartlar ve önbelleklerAnakartlar ve önbellekler
Anakartlar ve önbelleklerselimcihan
 
Android ve Elektronik
Android ve ElektronikAndroid ve Elektronik
Android ve ElektronikMuharrem Tac
 
Arduino eğitimleri 1 - giriş
Arduino eğitimleri   1 - girişArduino eğitimleri   1 - giriş
Arduino eğitimleri 1 - girişCoşkun Taşdemir
 
Digigram aqord link tr
Digigram aqord link trDigigram aqord link tr
Digigram aqord link trRadikal Ltd.
 

Similar to Arduinoİle Programlama (20)

Android ve Arduino ile Bluetooth üzerinden uzaktan kumandalı araba
Android ve Arduino ile Bluetooth üzerinden uzaktan kumandalı arabaAndroid ve Arduino ile Bluetooth üzerinden uzaktan kumandalı araba
Android ve Arduino ile Bluetooth üzerinden uzaktan kumandalı araba
 
Donanim
DonanimDonanim
Donanim
 
Arduino eğitimleri 2 - arduino platformuna giriş
Arduino eğitimleri   2 - arduino platformuna girişArduino eğitimleri   2 - arduino platformuna giriş
Arduino eğitimleri 2 - arduino platformuna giriş
 
Arduino- Potansiyometre
Arduino- PotansiyometreArduino- Potansiyometre
Arduino- Potansiyometre
 
Seden çakmak
Seden çakmakSeden çakmak
Seden çakmak
 
Güneş Takip Sistemleri ve Güneşli Pişiriciler
Güneş Takip Sistemleri ve Güneşli PişiricilerGüneş Takip Sistemleri ve Güneşli Pişiriciler
Güneş Takip Sistemleri ve Güneşli Pişiriciler
 
ferhat gör
ferhat görferhat gör
ferhat gör
 
Temel plc komutlarına giriş
Temel plc komutlarına girişTemel plc komutlarına giriş
Temel plc komutlarına giriş
 
Anakartlar
AnakartlarAnakartlar
Anakartlar
 
Mezura.net - Schneider Electric - SmartStruxure Lite Çözümü
Mezura.net - Schneider Electric - SmartStruxure Lite ÇözümüMezura.net - Schneider Electric - SmartStruxure Lite Çözümü
Mezura.net - Schneider Electric - SmartStruxure Lite Çözümü
 
Led'lerle havaya yazı yazma
Led'lerle havaya yazı yazmaLed'lerle havaya yazı yazma
Led'lerle havaya yazı yazma
 
Pic programlama-hocasi
Pic programlama-hocasiPic programlama-hocasi
Pic programlama-hocasi
 
Arduino' nun temel kavramları
Arduino' nun  temel kavramlarıArduino' nun  temel kavramları
Arduino' nun temel kavramları
 
Anakartlar ve önbellekler
Anakartlar ve önbelleklerAnakartlar ve önbellekler
Anakartlar ve önbellekler
 
Android ve Elektronik
Android ve ElektronikAndroid ve Elektronik
Android ve Elektronik
 
Tcl alcatel-mv40v
Tcl alcatel-mv40vTcl alcatel-mv40v
Tcl alcatel-mv40v
 
Arduino eğitimleri 1 - giriş
Arduino eğitimleri   1 - girişArduino eğitimleri   1 - giriş
Arduino eğitimleri 1 - giriş
 
Arduino hakkında
Arduino hakkındaArduino hakkında
Arduino hakkında
 
Digigram aqord link tr
Digigram aqord link trDigigram aqord link tr
Digigram aqord link tr
 
İşlemciler
İşlemcilerİşlemciler
İşlemciler
 

More from HARUN PEHLIVAN

İNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARI
İNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARIİNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARI
İNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARIHARUN PEHLIVAN
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to PythonHARUN PEHLIVAN
 
Classic to Modern Migration Tool for UiPath Orchestrator
Classic to Modern Migration Tool for UiPath OrchestratorClassic to Modern Migration Tool for UiPath Orchestrator
Classic to Modern Migration Tool for UiPath OrchestratorHARUN PEHLIVAN
 
Build a Full Website using WordPress
Build a Full Website using WordPressBuild a Full Website using WordPress
Build a Full Website using WordPressHARUN PEHLIVAN
 
Borusan Teknoloji Okulu
Borusan Teknoloji OkuluBorusan Teknoloji Okulu
Borusan Teknoloji OkuluHARUN PEHLIVAN
 
Nasıl İhracatçı Olunur?
Nasıl İhracatçı Olunur?Nasıl İhracatçı Olunur?
Nasıl İhracatçı Olunur?HARUN PEHLIVAN
 
Collaborating w ith G Su ite Apps
Collaborating w ith G Su ite AppsCollaborating w ith G Su ite Apps
Collaborating w ith G Su ite AppsHARUN PEHLIVAN
 
CS120 Bitcoin for Developers I
CS120 Bitcoin for Developers ICS120 Bitcoin for Developers I
CS120 Bitcoin for Developers IHARUN PEHLIVAN
 
ANORMAL SİZİ ANORMAL GÖSTERİR
ANORMAL SİZİ ANORMAL GÖSTERİRANORMAL SİZİ ANORMAL GÖSTERİR
ANORMAL SİZİ ANORMAL GÖSTERİRHARUN PEHLIVAN
 
Pre-requisites For Deep Learning Bootcamp
Pre-requisites For Deep Learning BootcampPre-requisites For Deep Learning Bootcamp
Pre-requisites For Deep Learning BootcampHARUN PEHLIVAN
 
Introduction to Data Visualization with Matplotlib
Introduction to Data Visualization with MatplotlibIntroduction to Data Visualization with Matplotlib
Introduction to Data Visualization with MatplotlibHARUN PEHLIVAN
 
Introduction to Python Basics for Data Science
Introduction to Python Basics for Data ScienceIntroduction to Python Basics for Data Science
Introduction to Python Basics for Data ScienceHARUN PEHLIVAN
 
SEO Uyumlu Makale Yazma
SEO Uyumlu Makale YazmaSEO Uyumlu Makale Yazma
SEO Uyumlu Makale YazmaHARUN PEHLIVAN
 
Introduction to Exploratory Data Analysis
Introduction to Exploratory Data AnalysisIntroduction to Exploratory Data Analysis
Introduction to Exploratory Data AnalysisHARUN PEHLIVAN
 
Signal Processing Onramp
Signal Processing OnrampSignal Processing Onramp
Signal Processing OnrampHARUN PEHLIVAN
 
İHRACATA YÖNELİK DEVLET YARDIMLARI
İHRACATA YÖNELİK DEVLET YARDIMLARIİHRACATA YÖNELİK DEVLET YARDIMLARI
İHRACATA YÖNELİK DEVLET YARDIMLARIHARUN PEHLIVAN
 
DR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARI
DR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARIDR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARI
DR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARIHARUN PEHLIVAN
 
DIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİ
DIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİDIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİ
DIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİHARUN PEHLIVAN
 

More from HARUN PEHLIVAN (20)

İNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARI
İNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARIİNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARI
İNTERNET ORTAMINDAKİ BİLGİYİ TEYİD ETMENİN YOLLARI
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Classic to Modern Migration Tool for UiPath Orchestrator
Classic to Modern Migration Tool for UiPath OrchestratorClassic to Modern Migration Tool for UiPath Orchestrator
Classic to Modern Migration Tool for UiPath Orchestrator
 
Build a Full Website using WordPress
Build a Full Website using WordPressBuild a Full Website using WordPress
Build a Full Website using WordPress
 
Borusan Teknoloji Okulu
Borusan Teknoloji OkuluBorusan Teknoloji Okulu
Borusan Teknoloji Okulu
 
Nasıl İhracatçı Olunur?
Nasıl İhracatçı Olunur?Nasıl İhracatçı Olunur?
Nasıl İhracatçı Olunur?
 
Collaborating w ith G Su ite Apps
Collaborating w ith G Su ite AppsCollaborating w ith G Su ite Apps
Collaborating w ith G Su ite Apps
 
Anormalizm
AnormalizmAnormalizm
Anormalizm
 
CS120 Bitcoin for Developers I
CS120 Bitcoin for Developers ICS120 Bitcoin for Developers I
CS120 Bitcoin for Developers I
 
ANORMAL SİZİ ANORMAL GÖSTERİR
ANORMAL SİZİ ANORMAL GÖSTERİRANORMAL SİZİ ANORMAL GÖSTERİR
ANORMAL SİZİ ANORMAL GÖSTERİR
 
Pre-requisites For Deep Learning Bootcamp
Pre-requisites For Deep Learning BootcampPre-requisites For Deep Learning Bootcamp
Pre-requisites For Deep Learning Bootcamp
 
Introduction to Data Visualization with Matplotlib
Introduction to Data Visualization with MatplotlibIntroduction to Data Visualization with Matplotlib
Introduction to Data Visualization with Matplotlib
 
Introduction to Python Basics for Data Science
Introduction to Python Basics for Data ScienceIntroduction to Python Basics for Data Science
Introduction to Python Basics for Data Science
 
SEO Uyumlu Makale Yazma
SEO Uyumlu Makale YazmaSEO Uyumlu Makale Yazma
SEO Uyumlu Makale Yazma
 
Introduction to Exploratory Data Analysis
Introduction to Exploratory Data AnalysisIntroduction to Exploratory Data Analysis
Introduction to Exploratory Data Analysis
 
Signal Processing Onramp
Signal Processing OnrampSignal Processing Onramp
Signal Processing Onramp
 
Teaching with MATLAB
Teaching with MATLABTeaching with MATLAB
Teaching with MATLAB
 
İHRACATA YÖNELİK DEVLET YARDIMLARI
İHRACATA YÖNELİK DEVLET YARDIMLARIİHRACATA YÖNELİK DEVLET YARDIMLARI
İHRACATA YÖNELİK DEVLET YARDIMLARI
 
DR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARI
DR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARIDR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARI
DR. SADİ BOĞAÇ KANADLI İLE ANTREPO REJİMİ UYGULAMALARI
 
DIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİ
DIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİDIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİ
DIŞ TİCARETTE MENŞE KAVRAMI, ÖNEMİ, PAMK VE PAAMK SİSTEMLERİ
 

Arduinoİle Programlama

  • 2. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.1: MİKRODENETLEYİCİ NEDİR? • Genel olarak mikrodenetleyici giriş portlarından aldığı veriyi kendisine verilen komutlar dahilinde işleyerek çıkış portlarına ileten, bir çok defa programlanabilen bir mikroişlemcidir. Mikrodenetleyiciler çalışmak için kendilerine yüklenen program haricinde bilgisayarlar gibi bir işletim sistemine ihtiyaç duymazlar. • Günümüzde çok çeşitli mikrodenetleyici marka ve modelleri mevcuttur, fakat bu dersin konusu Arduino mikrodenetleyicilerin özellikleri ve programlamasını kapsamaktadır.
  • 3. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.1.1: ARDUINO NEDİR? • Arduino, kullanımı kolay, açık kaynak kodlu yazılım ve donanıma sahip bir mikrodenetleyici prototipleme platformudur. Açık kaynak ifadesi, yazılımın kaynak koduna ve donanım bilgilerine erişiminin serbest olması ve isteğe göre değiştirilebilmesi anlamındadır. • Baskılı devresi, şematik tasarımı, PC üzerinde çalışan derleyicisi, kütüphaneleri ve tüm detayları ile internet ortamında paylaşılmaktadır. • Arduino platformunda Atmega ailesinden mikrodenetleyiciler kullanılır.
  • 4. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.1.1: ARDUINO NEDİR? • Arduino platformu, alt seviye mikroişlemci bilgisi gerektirmemesi ve zengin bir kütüphane desteği olması sebebiyle kolaylık sağlar. • http://arduino.cc/ Arduino platformunun resmi web sitesidir. • Arduino programlamada C/C++/ Java tabanlı bir dil kullanmaktadır. • Baş tasarımcılarının (Massimo Banzi ve David Cuartielles) İtalyan olmaları nedeniyle cihazın adı da doğal olarak İtalyancadan seçilmiş. Kelime “Sıkı arkadaş” anlamına gelen bir erkek ismidir. Wikipedia kaynağına göre Arduino'ya ilham veren Wiring platformu, Ivrea Tasarım Enstitüsü'nde Hernando Barragan tarafından geliştrilmiş. Ivrea'lı Arduin ise bu enstitünün bulunduğu kasabaya ait tarihi bir karakterdir.
  • 5. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.2: ARDUINO İLE NE YAPABİLİRSİNİZ? Giyilebilir Uygulamalar (Bisikletçinin arkasındaki dönüş sinyalleri. Robotik Uygulamalar Medikal Uygulamalar (Kalp sinyali izleme) Askeri Uygulamalar (Mini drone’lar) Ev Güvenliği ve Otomasyonu Uygulamaları Tarımsal Uygulamalar Mobil Uygulamalar RFID Uygulamalar (Kimlik Giriş Sistemleri) 3 Boyutlu Yazıcı Uygulamaları
  • 6. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.3: NEDEN ARDUINO KULLANMALIYIZ? • Hem donanımı, hem de yazılımı açık kaynaklıdır, bu sebeple ucuzdur ve erişilebilirdir, deneysel amaçlı yapılacak işler için uygun fiyatlı geliştirme ortamı sunar. • Zengin kütüphane desteği sayesinde ileri teknolojileri Arduino Boarda kolayca entegre edebilirsiniz. USB ve Bluetooth gibi evrensel iletişim haberleşme sistemlerini kullanabilir. • İşlemci ile veri giriş çıkışları kolaylıkla sağlanabilir. Bu ise, serigrafi ile kart yapma ihtiyacını ortadan kaldırmıştır. • Alt seviye mikroişlemci bilgisi gerektirmez.
  • 7. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Diecimila Arduino Duemilanove Arduino Mega Arduino Nano Arduino Uno Arduino LilyPad Revize edilen bu kartların özellikleri Arduino https://www.arduino.cc/en/Main/Boards ve http://arduinoturkiye.com/kategori/arduino-cesitleri/ websayfasında verilmiştir. Her ne kadar Arduino kartlar çok çeşitli görünse de, yapısal mantığı ve programlama yaklaşımları aynıdır.. Arduino Mini Arduino Primo
  • 8. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Uno • 14 adet dijital giriş / çıkış, bu çıkışlardan 6 tanesi PWM çıkışı olarak kullanılır. Bunun yanı sıra, 6 adet analog giriş vardır. • ATMega328 işlemcisi kullanır. USB-seri iletişim dönüştürücü olarak FTDI entegre kullanmaz, onun yerine dönüştürme işini ATmega8U2 yapar. Bu durum, daha hızlı aktarım olanak sağlar. • FTDI chipi kullanılmamış olmasının verdiği başka bir özellik de Arduino Uno”yu klavye, mouse, joystick vs. olarak tanıtabilme ve sistemde bu şekilde kullanabilme kolaylığıdır. • Çok popüler ve uygun fiyatlı olmasından dolayı Arduino Uno ile yapılmış proje örnekleri çokça bulunabilir. Arduino Uno
  • 9. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Duemilanove • ATMega328 işlemcisini kullanır. Donanım özellikleri olarak Arduino Uno”nun neredeyse aynısıdır, Uno”dan farkı USB-seri iletişim dönüştürücü olarak FTDI entegresinin olmasıdır. • Duemilanove”da yeni bir özellik olarak otomatik güç algılama sistemi bulunur. Bu sistem gücü USB”den veya adaptör girişinden kendisi seçer.Arduino Duemilanove
  • 10. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Diecimila • Temel Arduino USB kartının bir önceki versiyonudur. • Diğerlerine göre daha yavaş, ATmega168 işlemcisini kullanır. • 14 adet dijital giriş / çıkış, bu çıkışlardan 6 tanesi PWM çıkışı olarak kullanılır. Bunun yanı sıra, 6 adet analog giriş vardır Arduino Diecimila
  • 11. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Mega • Atmega2560 işlemcisini kullanır. • Daha fazla dijital çıkışı (54 adet) ve bunlar içinde 14 PWM çıkışı vardır. • USB-seri iletişim dönüştürücü olarak ATmega8U2 veya ATmega16U2 kullanır. Bu daha hızlı aktarıma olanak sağlar. • Bellek olarak daha yüksektir. ATmega2560 “ya yükseltilmesi sayesinde 256k flash memory”ye yükselmiştir. Arduino Mega
  • 12. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino LilyPad • Giyilebilir uygulamalar için geliştirilmiş. Kumaş üzerine dikilebilir. • Aynı zamanda yıkanabilir. • Kendine has aksesuar sınıfı vardır. Yani sadece LilyPad için tasarlanmış Arduino eklentileri, switchleri, kabloları vardır. • Dahili USB girişi var. Arduino LilyPad
  • 13. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Nano • Breadboard üzerinde kullanılmak üzere tasarlanmış bir kompakt bir karttır. DC güç girişi yoktur ve USB Mini-B kablosuyla bilgisayara bağlanır. • Arduino Nano, Atmega328 işlemcisi kullanır. • 14 adet dijital giriş / çıkış, bu çıkışlardan 6 tanesi PWM çıkışı olarak kullanılır. Bunun yanı sıra, 8 adet analog giriş vardır. • Boyutları 1.8cm x 4.3cm olması sebebiyle küçük boyutlu prototiplemede kullanılır. Arduino Nano
  • 14. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Mini • Sadece 1.8cm x 3.3cm boyutlarında en küçük Arduino kartıdır. Kullanım boyutunun küçük olması istenen yerlerde tercih edilir. • Dahili USB girişi yok, bu yüzden bilgisayara harici USB-TTL arabirimi - Mini USB Adaptör ile bağlanabilir. • ATmega328 çipi kullanır. • Düşük voltajla çalıştığından, özellikle pil ile çalışması gereken uygulamalarda düşük güç tüketimi sayesinde tercih edilir. Arduino Mini
  • 15. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino Primo • Nordic nRF52 işlemcisi kullanır. • Espressif ESP8266 for WiFi modülü içerir. • İçerisinde bluetooth modülü içerir. • Az enerji harcadığından düşük güç tüketimi isteyen uygulamalarda kullanılır. Arduino Primo
  • 16. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.5a: ARDUINO UNO DONANIM YAPISI • 1 : USB jakı • 2 : Power jakı (7-12 V DC) • 3 : Mikrodenetleyici ATmega328 • 4 : Haberleşme çipi • 5 : 16 MHz kristal • 6 : Reset butonu • 7 : Power ledi • 8 : TX / NX ledleri • 9 : Led • 10 : Power pinleri • 11 : Analog girişleri • 12 : TX / RX pinleri • 13 : Dijital giriş / çıkış pinleri (yanında ~ işareti olan pinler PWM çıkışı olarak kullanılabilir.) • 14 : Ground ve AREF pinleri • 15 : ATmega328 için ICSP • 16 : USB arayüzü için ICSP Yukarıdaki şekilde görülen ATmega328 mikrodenetleyicisi kullanan Arduino Uno Kartı çeşididir. 14 dijital giriş/çıkış pini bulunur, bunlardan 6’sı PWM çıkışı olarak kullanılabilir ve dijital dalga genişliği ayarlanarak analog değerler elde edilebilir. 6 analog giriş pinine sahiptir. 16 MHz kristal osilatörü, USB bağlantısı, 2.1mm güç girişi, ICSP başlığı ve reset butonu vardır. Mikroişlemciyi destekleyecek herşeye sahiptir. Çalıştırmak için DC 7~12V güç kaynağına bağlamak yeterlidir İşlemci Özellikleri: Flash: 32KB (0.5KB bootloader için kullanılır) SRAM: 2KB EEPROM: 1KB Saat frekansı: 16MHz
  • 17. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.5b: ARDUINO MEGA DONANIM YAPISI
  • 18. Bölüm 1: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 1.6: ARDUINO GÜÇ BESLEME KAYNAKLARI Arduino UNO’nun pille çalıştırılması Arduino harici besleme kaynaklarıyla da çalıştırılabilir. Bunun için Arduino üzerinde birbirine bağlı iki farklı giriş bulunmaktadır. Bu girişlerden ilki, yukarıdaki şekilde 2 numara ile gösterilen jak girişidir. Bu girişe 7 ile 12 Volt arasındaki gerilimler uygulanabilir. Arduino üzerinde bulunan 'Vin' pini, Arduino'nun jak girişine bağlı bir pindir. Bu pine uygulanan gerilim, Arduino'ya ulaşmadan önce bu pine bağlı regülatör yardımıyla Arduino için uygun gerilime düşürülür. 'Vin' girişine 7 ile 12 Volt arasındaki gerilimler uygulanmalıdır. Pilin artı (+) ucu 'Vin' pinine bağlandıktan sonra, pilin eksi (-) ucu Arduino'nun 'GND' yani toprak ucuna bağlanmalıdır. 'Vin' pini önceki slayttaki şekilde 3 numara ile gösterilmiştir. Eğer bu girişlere 12 Volt üzerinde bir gerilim uygulanırsa Arduino zarar görebilir. Arduino UNO’nun 5 Volt pininden beslenmesi Arduino üzerinde bulunan 5 Volt pini de Arduino'yu beslemek için kullanılabilir. Bu pine 5 Volt geriliminden fazla bir gerilim uygulanması, Arduino'nun bozulmasına neden olabilir. 5 Volt gerilim veren bir kaynağın artı (+) ucunu Arduino'nun 5 Volt, eksi (-) ucunu da Arduino'nun 'GND' pinine bağlanabilir. Bu pin önceki slattaki şekilde 4 numara olarak gösterilmiştir.
  • 19. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.6: SHIELDS (Katman veya Zırh) • Shield (Zırh) : Arduino kartı üzerindeki devre eklentileridir. Bu eklentiler ile kartın kapasitesi veya işlevselliğini arttırılabilirsiniz. • Çok sayıda ucuz maliyetli katmanlar ve bunların kütüphaneleri mevcuttur. http://arduino.cc/en/Main/ArduinoShields http://shieldlist.org Motor kontrolü için kullanılan Arduino Motor Shield R3 un ön ve arka görünüşü.
  • 20. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.4: ÇEŞİTLİ ARDUINO KARTLARI Arduino katmanlarının üst üste montajlanması -Arduino mikrodenetleyicilerin işlevselliğini arttıran giriş ve çıkış portlarının gelen bilgiyi işleme kapasitesini arttıran modüller mikrodenetleyici kartının üzerine katman olarak ilgili bağlantı jaklarından bağlanarak eklenebilir. Böylelikle kompakt yapıda ve hem işlevselliği hem de kapasitesi arttırılmış modüller elde edilebilir. -Örneğin Arduino mikrodenetleyici kartı üzerindeki dijital çıkışların akım kapasiteleri genellikle bir servo veya step motor sürmeye yetmez dolayısıyla bir sürücü katmanı mikrodenetleyiciye eklenebilir.
  • 21. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.7: ARDUINO DONANIMI NASIL TEMİN EDİLİR? Aşağıda Arduino donanımlarını satın alabileceğiniz sitelerin listesi verilmiştir. http://www.robotistan.com/ http://www.robotshop.com/arduino-2.html http://direnc.net http://arduino.cc/en/Main/Buy http://dx.com/s/Arduino http://www.ebay.com http://tr.aliexpress.com/promotion/electronic_arduino-uno- promotion.html http://gittigidiyor.com http://www.robitshop.com/
  • 22. Bölüm 1: MİKRODENETLEYİCİ VE ELEMANLARI Konu 1.8: ARDUINO REFERANS KAYNAKLARI http://blog.robomore.com/?cat=6&paged=2 https://labitat.dk/wiki/Arduino_beginners_workshop http://coopermaa2nd.blogspot.com/ http://arduino.cc/en/Tutorial/HomePage http://shieldlist.org/ Fritzing- Çizim programı: Fritzing- Çizim programı: http://fritzing.org/download/ http://www.123dapp.com/circuits
  • 23. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.2: ARDUINO PROGRAMININ KURULMASI(WINDOWS) Arduino yazılımı ile Arduino boardınızı programlamak için, Windows, Mac ve Linux işletim sistemleri kullanılabilir. Yükleme işlemi, her üç platform için de farklıdır. Yazılımı yüklemek için bir takım ayarlamalar yapmak gereklidir. Herhangi bir yükleyici (setup) programı yoktur. Arduino programı klasör içinde sıkıştırılmış durumdadır. Kullanıcı herhangi bir yere Arduino klasörü oluşturabilir. Bu dosyaları bir sıkıştırma programı ile istenilen yere açabilir. Ayrı bir adımda, Arduino UNO board için gerekli olan USB sürücülerini yüklemeniz gerekir. Bu adıma Arduino.cc web sitesini ziyaret ederek başlayın. Arduino UNO boardın USB sürücüsü için bu yazıyı okuduğunuz zaman, en son sürümünü yükleyebilirsiniz. https://www.arduino.cc/en/Main/Software Yukarıdaki linkten, Windows için ZIP dosyasını bilgisayarınıza indirin. Yazılım yalnızca Windows XP den Windows 10‘ a kadar bütün Windows yazılımlarında kullanılabilir.
  • 24. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.2: ARDUINO PROGRAMININ KURULMASI(WINDOWS) Zip dosyası indirildiğinde, dosya üzerinde sağ tıklayınız. Açılan menüden 'Extract All...' komutunu çalıştırınız.
  • 25. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.2: ARDUINO PROGRAMININ KURULMASI(WINDOWS) Açılmış olan klasörü, istediğiniz yere taşıyabilirsiniz. Ancak; şu anda masaüstünde tutun. Arduino klasörü içinde, hem programın kendisi, hem de Arduino Board için sürücüler(drivers) vardır. Bu sürücüler(drivers) Arduino kartınızın, USB kablosu ile bilgisayarınıza bağlanmasını sağlar. Arduino yazılımını çalıştırmadan önce, USB sürücülerini yüklemeniz gereklidir. USB kablosunun ucunu Arduino kartınıza, diğer ucunu bilgisayarınızdaki bir USB soketine takın. LED güç ışığı yanar ve Windows işletim sisteminde, 'Yeni Donanım Bulundu' mesajı ekranda görünür. Bu mesajı iptal tuşuna basarak yok sayınız. Windows’ un sürücüleri otomatik olarak sürücüleri yüklemesini engelleyiniz. Sürücüler manuel olarak yüklenecektir. USB sürücüleri yükleyerek en güvenilir yöntem Aygıt Yöneticisi kullanmaktır. Aygıt yöneticisine Windows’ un sürümüne bağlı olarak farklı şekillerde erişilir. Windows 7’de , ilk önce Denetim Masası'nı açın, sonra simgeleri görüntüleyin ve listede Aygıt Yöneticisini bulunuz. 'Diğer Aygıtlar' bölümünün altında, küçük sarı uyarı üçgeni ile 'bilinmeyen aygıt' isimli bir simge göreceksiniz. Bu; sizin Arduino kartınızdır.
  • 26. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.2: ARDUINO PROGRAMININ KURULMASI(WINDOWS) Uptade Driver Software (... Sürücü Yazılımını Güncelleştir) sol tıklayın ve üst menü seçeneği seçin. Daha sonra ya 'güncelleştirilmiş sürücü yazılımı için otomatik arama' veya 'Sürücü yazılımı için bilgisayarıma gözat' istenir. Sürücüler arduino- 1.0.2-windows arduino1.0.2 içindedir.
  • 27. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.2: ARDUINO PROGRAMININ KURULMASI(WINDOWS) 'İleri' tıklayın ve bir güvenlik uyarısı alabilirsiniz. Eğer bu güvenlik mesajı çıkarsa, yazılım yüklenmesine izin verin. Yazılım kurulduktan sonra, bir onay mesajı alırsınız.
  • 28. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.2: ARDUINO PROGRAMININ KURULMASI(WINDOWS) Artık Arduino UNO board’ı kullanmak için hazırsınız.
  • 29. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.3: ARDUINO PROGRAMININ KURULMASI(MAC ve LINUX) Arduino.cc web sitesini ziyaret ediniz ve işletim sisteminiz için uygun IDE indirerek başlayın. Mart 2016 itibariyle v1.6.8 olarak bulabilirsiniz. Bu yazıyı okuduğunuz zaman bu versiyon artık yoksa yeni versiyonu deneyebilirsiniz. Yükleme yazılımını masaüstüne veya herhangi bir yere kaydediniz. MAC Arduino yazılımı yüklemek, PC'ye yüklemekten çok daha kolaydır. Daha önce olduğu gibi, ilk adım ZIP dosyasını indirmektir. Yukarıda MAC zip dosyası görülüyor
  • 30. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.3: ARDUINO PROGRAMININ KURULMASI(MAC ve LINUX) Bir kere indirildikten sonra, zip dosyasını çift tıklayın. Bu durumda 'Arduino.app' adında tek bir dosya oluşacaktır. Bu dosyayı Uygulamalar Klasörünün içine sürükleyin. Bu sizin Arduino uygulamanızdır.
  • 31. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.3: ARDUINO PROGRAMININ KURULMASI(MAC ve LINUX)
  • 32. Bölüm 2: ARDUINO PROJE GELİŞTİRME ADIMLARI Konu 2.4: ARDUINO KARTININ TESTİ Arduino kartınızı, USB kablosu ile bilgisayarınızın USB girişine takın ve 'Arduino Kart Tipi' ve 'Seri Portun' doğru ayarlanmış olup olmadığını kontrol edin. Eğer sorun çıkarsa, 2. Dersin ilk konusuna geri dönmeniz gerekebilir. Arduino IDE penceresinin alt kısmındaki pano, sizin için geçerli ayarları gösterir. Bilgisayarınız ile Arduino kartınız iletişim kurduğu anda, sağ alt köşedeki Arduino Uno on COM4 ifadesine dikkat ediniz.
  • 33. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu: GİRİŞ • Arduino Programlama dili basitleştirilmiş C++ veya C kullanır. Burada genel olarak tüm Arduino komutları ve operatörleri ele alınmayacaktır. Daha ziyade yeni başlayanlar için en çok kullanılan fonksiyonlar ve operatörler ele alınacaktır.
  • 34. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.1: C PROGRAMLAMA DİLİNİN GENEL YAPISI • Programdaki açıklamalar // veya /* */ işaretleri kullanılarak belirtilir. • Program başında sistem tanımlı komutların bulunduğu kütüphaneler ve kullanıcıların sonradan tanımlayabileceği komutların bulunduğu kütüphaneler #include komutuyla eklenir. • Tüm komutlar ; ile biter. Komutlar bloklar içine alınmak istenirse {} içene yazılırlar. • Ana program içinden çağrılacak fonksiyonlar yazılabilir. Bu fonksiyonların fonksiyon prototip tanımları ana programdan önce, fonksiyonların kendisi ana programdan sonra yazılır. Fonksiyonlara parametre gönderilecekse () arasına yazılır. • Programdaki sabit değerler #define ve const tanımlarıyla belirtilir, değişeken değerler ise değişken veri türleri ile belirtilirler. // Program tanim ve aciklamasi #include <stdio.h> /* sistem tanımlı kütüphane dosyalari */ #include "mystuff.h" /* kullanıcı tanımlı kütüphane dosyalari */ #define CONST 2000 /* macro ve sabit tanımları */ int m,n; float x,y; /* global değişken tanımları */ double fn1(double x, int y); /* fonksiyon prototipleri */ int main(argv, char **argc) { /* ana program baslangici */ int i,j; char str[128]; /* lokal değişkenler */ const int ci = 123; /* sabit tanımları */ j = 17; /* ana program */ for (i=0; i<j; i++) { .....} ... return 0; } double fn1(double x, int y) /* kullanıcı tanımlı fonksiyonlar */ { float u; //program ... return x*u; }
  • 35. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.2: Arduino Programlama Taslağı (Sketch) • Arduino programlarına ‘sketch’ adı verilir. • Bir Arduino taslağı (programı) genel olarak üç bölümden oluşur: -Tanımlamalar (defines), -Kurulum( setup) ve -Ana program bloğu (loop). • Tanımlamalar en başta yapılırsa global tanımlamalar, setup veya loop veya kullanıcı tanımlı başkafonksiyon içinde yapılırsa lokal tanımlamalar denir. • Setup fonksiyonu, program çalışmaya başladığını ilk kısımdır. Bu kısım sadece bir kere okunur ve program esnasında yeniden okunmaz. Bu alanda, pinlerin çalışma modları, seri iletişim başlatılması gibi önemli ve bir kere yapılması yeterli olacak ayarlamalar yapılır. • Loop fonksiyonu, setup fonksiyonu okunduktan sonra başlar. Buraya yapılmasını istenen görevler yazılır. Loop fonksiyonu, sonsuz döngü şeklindedir, yani buradaki görevler tamamlandığında, program tekrar başa dönerek işlemleri yeniden yapar. Bu döngü, Arduino çalıştığı sürece devam eder.
  • 36. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.3: SABİT TANIMLAMALAR(DEFINES) Sabit tanımlamalarında kullanılan «define» komutu, bazı değerleri sabitlemek, pin ayarlarını yapabilmek için kullanılır. #define tanımlamalara örnek verecek olursak; örneğin dijital bir çıkış numarasına isim verebiliriz. Böylece Her seferinde çıkış numarasını hatırlamak zorunda kalmayız. Bunun haricinde sabit sayılara da tanımlama yapılabilir. Her tanımlamanın başında # işaretini kullanmalısınız. #define ledPin 3 // Bu şekilde kullanılırsa derleyici program her ledPin deyimini görünce bunu 3 sayısı ile eşleştirir. #define ledPin 3 ; // kullanılırsa hata mesajı alınır. Çünkü define dan sonra ; kullanıldı. #define ledPin = 3 // Bu da hatalı bir tanımlamadır. Veya Sabit Tanımlama const float pi = 3.14; // Dikkat edilirse const tanımlamasından sonra ; kullanılmıştır. Const tan sonra ; kullanılır. #define BENIM_LEDIM 8 // Bu da doğru bir tanımlamadır. 8 sayısı ile BENIM_LEDIM deyimi eşleştirilir. Derleyici BENIM_LEDIM olarak yazılan bütün ifadeleri 8 sayısı olarak algılar.
  • 37. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.4:DEĞİŞKENLER (VARIABLES) ÇEŞİTLERİ Fonksiyonlar Konusunu işlemeden önce, uygulamalarımızda çok sık kullanacağımız değişkenler konusundan burada bahsedilecektir. C dilinde çok önem arzeden değişkenler konusu aynı önemi Arduino ile program yazılımı konusunda da göstermektedir. Bir değeri veya karakteri daha sonra tekrardan kullanmak/değiştirmek için hafızada tutabilirsiniz. Bu değerler değişkenlerde tutulur. Hafızada tutacağınız değerin türüne göre değişken tanımlanması gerekir. Aşağıdaki tabloda, Arduino'da kullanılan değişken türlerini ve tutabilecekleri değerleri görebilirsiniz. Değişken Boyut Açıklama byte 1 byte 0 – 255 arası işaretsiz sayılar. boolean 1 byte 0 (FALSE) veya 1 (TRUE) değerini alır. char 1 byte -128 ile 127 arasındaki değerleri alır. Tek bir karakterin saklanması için kullanılır. string 1 byte Metin işlemleri için kullanılır (char dizisi) int 2 byte İşaretli sayılar için -32.768 – 32.767 İşaretsiz sayıları için 0 – 65,535 long 4 byte İşaretli sayılar için -2.147.483.648 – 2.147.483.647 İşaretsiz sayılar için 0 – 4.294.967.295 float 4 byte İşaretli ondalıklı sayılar -3,4028235E – 3,4028235E double 4 byte 3,4028235E+38 ile -3,4028235E+38 arasında hassasiyeti yüksek kesirli sayılar barındırır
  • 38. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: İLK PROGRAM: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI Bu derste, program Arduino kartınızda, yerleşik bulunan LED’i yakıp söndürme uygulamasını öğreneceğiz.
  • 39. Arduino Uno R3- 1 Adet USB Kablosu Tip A to B – 1 Adet Arduino kartının, elektronik elemanlara bağlanması için, her iki tarafında dizi halinde konnektörler mevcuttur. Aynı zamanda, bu konnektörlere ‘kalkan’ (shield) adı verilen uyumlu elektronik cihazlar takılabilir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI MALZEME LİSTESİ MALZEME LİSTESİ
  • 40. Ayrıca, Arduino’da sizin programlarınızda kullanmanız için devre içi bir Led bulunuyor. Bu LED Arduino UNO kartın üzerinde bulunmaktadır. Genellikle bu LED, 'L' harfi ile devre üzerinde işaretlenmiştir. Arduino Kartınızı bilgisayarın USB çıkışına bağladığınızda 'L' LED’ inin, yanıp söndüğünü görebilirsiniz. Arduino Boardları genellikle, örnek 'Blink' taslağı (sketch) ile önceden yüklenmiş olarak gelir. Bu derste, kendi Blink programınız ile Arduino’ yu programlayıp ve daha sonra 'L' LED’ inin yanma sönme hızını değiştireceksiniz Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI
  • 41. Arduino IDE kurulumunu yaptınız ve Arduino kartına bağlanmak için doğru seri bağlantı noktası kullandığınızdan emin oldunuz. Arduino taslağınızı (Sketch) mikrodenetleyiciye gönderme zamanı geldi. Arduino IDE’ de, Dosya→ Örnekler→ Basics menüsü altında, Blink isimli taslağı editör alanına yükleyin. Taslak (Sketch) penceresi açıldığında bütün programı görebilecek şekilde, pencereyi ekran boyutuna büyütünüz. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI UYGULAMANIN ARDUINO IDE ORTAMINA ÇAĞRILMASI
  • 42. Arduino IDE ile birlikte gelen örnek taslaklar (sketch) 'salt okunur' dosyalardır. Yani bir Arduino örnek taslağını yukarıdaki gibi yükleyebilirsiniz , ancak bu dosyalarda değişiklik yaparsanız, farklı bir dosya olarak kaydetmeniz gerekir. Arduino örnek dosyalarının salt okunur özelliğinden dolayı, aynı dosya üzerine kayıt yapamazsınız. Arduino IDE’nin Dosya menüsünden 'Farklı Kaydet..' seçeneğini seçin ve ardından 'MyBlink' adı ile yeni çalışmanızı kaydedin. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI UYGULAMANIN KAYIT EDİLMESİ
  • 43. Taslak defterine 'Blink' dosyasının bir kopyasını kaydettiniz. Bu çalışmayı tekrar yüklemek için Dosya → Taslak Defteri(Sketchbook) menü seçeneğinden MyBlink üzerine tıklayınız. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI UYGULAMANIN KAYIT EDİLMESİ
  • 44. Arduino kartınızı, USB kablosu ile bilgisayarınızın USB girişine takın ve 'Arduino Kart Tipi' ve 'Seri Portun' doğru ayarlanmış olup olmadığını kontrol edin. Eğer sorun çıkarsa, 2. Derse tekrar geri dönmeniz gerekebilir. Arduino IDE penceresinin alt kısmındaki pano, sizin için geçerli ayarları gösterir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI UYGULAMANIN ARDUINO KARTINA YÜKLENMESİ
  • 45. Bir programı makine diline çevirmek için «Derle» butonuna tıklayın, eğer derleme hataları varsa düzeltin. Daha sonra, makine diline çevrilen kodu Arduino ortamına göndermek için, 'Yükle' butonuna tıklayın. Araç çubuğunda derleme ve yükleme butonları yandaki şekilde gösterilmiştir. Eğer IDE programlama ortamının altt bulunan durum alanını izlerseniz, bir ilerleme çubuğu ve bir dizi mesaj göreceksiniz. İlk başta 'Taslak Derleniyor ..'('Compiling Sketch..') diyecektir. Bu aşamada taslak çalışmanız, Arduino kartınıza yüklemesi için uygun formata dönüşmektedir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI UYGULAMANIN ARDUINO KARTINA YÜKLENMESİ
  • 46. Sonraki durumda IDE üzerindejki yazı 'Yükleniyor'-('Uploading') olarak değişecektir. Bu noktada, Arduino LED'ler, taslak çalışmanızın yüklenmesi esnasında, yanıp sönmeye başlayacaktır. Son olarak, yükleme durumu 'Bitti' olarak değişecektir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI ARDUINO KARTA YÜKLEME
  • 47. Taslak çalışmamızda 32256 byte kullanılabilir alan olduğu ve 1084 byte alan kullanıldığı görülmektedir. Taslağınızın derlenmesinden sonra aşağıdaki hata iletisini alabilirsiniz. Yukarıdaki pencerede ipucu pencerenin üst kısmındadır. Muhtemelen Arduino Kartınız hiç bağlı değildir, ya da sürücüleri yüklü değildir. Ya da yanlış seri port seçili olduğundan anlamına gelir. Bu iletiyi alırsanız, Arduino Kart kurulumunu kontrol edin. Yükleme tamamlandıktan sonra, Arduino Kartınız yeniden başlar ve port 13’e bağlı L’LED’inin yanıp sönmeye başlaması gerekir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI ARDUINO KARTA YÜKLEME
  • 48. Bu kısımda BLINK program parçasının çalışması incelenecektir. /* LED yakma söndürme (Blink) Bir saniye boyunca bir LED i yakma ve söndürme işlemini tekrarlayarak yapar Aşağıdaki kod açık erişimdedir. */ // Pin 13 Arduino uno kartında bir LED e bağlıdır. // bir isim verin: int led = 13; // reset butonuna bastığınızda setup döngüsü çalışır: void setup() { // Dijital pin i çıkış olarak tanımla pinMode(led, OUTPUT); } // döngü sonsuza kadar çalışır: void loop() { digitalWrite(led, HIGH); // LED yanar (HIGH gerilim seviyesidir) delay(1000); // bir saniye bekle digitalWrite(led, LOW); // gerilimi LOW yaparak LED i söndür delay(1000); // bir saniye bekle } Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) TASLAĞI NASIL ÇALIŞIR?
  • 49. // döngü sonsuza kadar çalışır: void loop() { digitalWrite(led, HIGH); // LED yanar (HIGH gerilim seviyesidir) delay(1000); // bir saniye bekle digitalWrite(led, LOW); // gerilimi LOW yaparak LED i söndür delay(1000); // bir saniye bekle } Döngü (Loop) işlevi şöyle işlemektedir. İlk komutta LED pini dijital 1-(HIGH) yapılır, sonra 1000 milisaniyelik (1 saniye) 'gecikme' yapılır, daha sonra LED pinini dijital 0-(LOW) yapılır ve son olarak tekrar 1000 milisaniyelik (1 saniye) 'gecikme' yapılır. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.5: LED YAKIP SÖNDÜRME (BLINK) TASLAĞI NASIL ÇALIŞIR? Programda / * ve * / sembolleri arasındaki arasında karakterler açıklama, Arduino IDE tarafından derlenmez. // ile başlayan satırlar, satır sonuna kadar yorum olarak kabul edilir. Sonrasında , 'setup' fonksiyonu vardır. Yorumların açıkladığı gibi reset düğmesine basıldığında kod, buradan çalıştırılır. Kartınız herhangi bir nedenle resetlenirse program yine ilk satırdan çalışmaya başlayacaktır. Örneğin kartın enerjilenmesi veya taslak çalışmanızın yeniden yüklenmesi RESET durumuna yol açacaktır.
  • 50. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.6: GECİKME VE ZAMAN FONKSİYONLARI Delay() : milisaniye cinsinden gecikme sağlar delayMicroseconds(us_gecikme) : Microsaniye cinsinden gecikme sağlar. millis() fonksiyonu Arduino’nun çalışmasından itibaren geçen süreyi ms cinsinden döndürür. Dönüş değeri yüksek bir değer olabileceğinden “unsigned long” tipi kullanılmalıdır. ( unsigned long –işaretsiz long tipindeki sayıdır. Alabileceği değerler 0 – 4.294.967.295 arasındadır) Aşağıda gecikme ile ilgili örnek program parçacıkları görülüyor. delay(1000); // 1000 Ms (1 Saniyelik) gecikme sağlar. Serial.print("Time: "); // Bilgisayar ekranında “Time:” yazısını göster. time = millis(); //Arduino programının çalışmasından itibaren geçen süreyi miliSaniye Serial.println(time); // mS cinsinden geçen zamanı gösterir. delayMicroseconds(50); // 50 microsaniyelik gecikme sağlar.
  • 51. LED’i daha hızlı yakıp söndüreceğiz. Tahmin edebileceğiniz gibi, anahtar komut delay() dir. 'delay' komutu içindeki (1000) parametresi değiştirilmelidir. Gecikme süresi milisaniye cinsindendir. LED’ in iki kat daha hızlı yanıp sönmesini istiyorsanız 1000 değerini 500 olarak değiştiriniz. Tekrar taslak çalışmanızı (programınızı) Arduino kartınıza yükleyiniz. LED’ iniz daha hızlı yanıp sönmeye başlayacaktır. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.6: LEDİ DAHA HIZLI YAKIP SÖNDÜRME
  • 52. Bu uygulama için gereken malzemeler aşağıda listelenmiştir: Arduino UNO R3 board -1 adet Yarı-boyutlu Breadboard- 1 adet Led – 1 adet 470 Ω Direnç (Sarı, mor, kahverengi )- 1 Adet Bağlantı kabloları – 2 Adet Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7: HARİCİ LED YAKIP SÖNDÜRME UYGULAMASI MALZEME LİSTESİ
  • 53. Breadboard, elektronik devreleri pratik olarak kurmak ve test etmek için kullanılan kullanışlı bir ekipmandır. Breadboard üzerinde devre kurarken bağlantı kablolarını ve komponentleri birbirine lehimlemek zorunda kalmazsınız. Komponentleri birbirine ve iletkenlere bağlamak oldukça kolaydır. Lehimleme gerekmediği için komponenetleri rahatça sökebilir ve tekrar bağlayabilirsiniz, bu sayede elemanlar ve breadboard hiçbir zarar görmez. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7.1: DENEY MALZEMELERİNİN TANITILMASI -BREADBOARD
  • 54. Yandaki resimde breadboard'un iç yapısı açıkça görülüyor. Metal iletken dizileri için genellikle iletkenliği, korozyona karşı dayanıklılığı ve esnekliği sayesinde nikel- gümüş tercih edilir. Breadboard, plastik bir kasanın içine dizilmiş ve birbirilerinden yalıtılmış iletkenler dizisidir. Breadboard'un üzerinde belirli sayıda delikler vardır ve komponentler bu delikler aracılığıyla iletkenlere temas ederler. Breadboard tipik olarak iki çeşit iletken dizimi içerir. Bus dizisi ve soket dizisi. Bus dizisi genellikle devreye gerilim sağlamak için kullanılır. Yatay olarak sıralanmış iki adet bus dizisi vardır. Bunlardan birisi devreye gerilim bağlamak (Kırmızı hat) için kullanılır, diğeri ise güç kaynağının şasesi (Mavi hat) içindir. Soket dizisi breadboard'un üzerinde dikey olarak sıralanmıştır. Uygulamaya göre değişmekle beraber tipik bir breadboard'da 5 ayrı delikten oluşan, 32 soket sütunu bulunur. 5'li sütundaki soketler birbirine bağlıdır ancak farklı sütunlar birbirinden izoledir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7.1: DENEY MALZEMELERİNİN TANITILMASI -BREADBOARD
  • 55. LED'lerden gösterge ışıkları yapabilirsiniz. Elektrik tüketimleri çok azdır ve ömürleri çok uzundur. Bu derste, muhtemelen en çok en yaygın olan 5mm kırmızı LED kullanacaksınız. 5mm., LED’ in dış çapını ifade eder. 5mm’lik LED’lerin yanı sıra, 3 mm ve 10 mm. çaplarında LED’ler de mevcuttur. LED’ inizi, doğrudan bir pil veya gerilim kaynağına bir bağlayamazsınız.. LED’ in Anod ve Katod uçları vardır ve Anot ucuna (+) ve Katod ucuna (-) bağlanmalıdır. Aksi durumda LED ışık yaymaz. Kırmızı LED’ in çalışma gerilimi 1.5 Volttur. LED’in çalışma gerilimini sınırlandırmak için, ön direnç takılmalıdır. Aksi takdirde LED hasar görebilir. Eğer bir LED ile bir direnç kullanmazsanız, LED üzerinden çok fazla akım akacaktır. Doğal olarak, LED üzerinde aşırı ısı üretilir. LED; hemen tahrip olabilir. LED’ in, Anot(+) ve Katod(-) uçlarını bulmak için, iki yol vardır. İlk olarak, Anot(+) ucu daha uzundur. Katod(-) ucu kısadır. İkincisi; Katod(-) ucuna LED’ in şeffaf tarafından bakarsak, düz ve geniş bir kısım görürüz. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7.1: DENEY MALZEMELERİNİN TANITILMASI -LED
  • 56. Led’in katod ucunu Arduino una kartının GND portuna bağlantı kablosu ile bağlayalım. Led’in anot ucunu 470 Ω direnç ve bağlantı kablosu ile Arduüno uno kartının digital 3 portuna bağlayalım. Dirençler elektrik akımını sınırlar. Daha yüksek bir değerli bir direnç, daha az elektrik akımı akacaktır. LED’ in ne kadar parlaklık vereceği LED’ e takılan seri direncin değerine bağlıdır. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7.2: BREADBOARD DÜZENİ
  • 57. Direnç değeri neyi değiştirir? 270 Ω’luk direnç ile LED oldukça parlak ışık verir. Eğer 270 Ω’ luk direnci 470 Ω’luk direnç ile değiştirirsek, o zaman LED biraz sönük görünür. 2.2kΩ direnci LED ile seri bağlarsak LED oldukça sönük ışık verir. Son olarak, yerinde 10 kΩ direnç ile deneme yaparsak LED sadece görünür şekilde çok az ışık verir. Kırmızı kabloyu Breadboard’dan çıkartıp boş bir deliğe takarsak, tıpkı bir anahtar gibi davranır ve LED söner. Yüksek dirençten daha az akım geçer. (OHM KANUNU) Kırmızı renkli LED için LED gerilimi 1,5 volt alınır. I1=(U-ULED)/R1= (5-1,5)/270= 13 miliAmper I2=(U-ULED)/R2= (5-1,5)/470= 7 miliAmper I3=(U-ULED)/R3= (5-1,5)/2200= 1,5 miliAmper I4=(U-ULED)/R4= (5-1,5)/10000= 0,3 miliAmper I4 < I3 < I2 < I1 I1 Akımı en yüksektir. Akım ne kadar yüksekse; LED o derece parlak yanacaktır. Bu durumda LED’ e seri bağlanacak en uygun direnç 270 ohm olarak görülmektedir.
  • 58. Arduino IDE ile «MyBlink» adı ile kaydettiğimiz taslağı açalım ve aşağıda görüldüğü şekilde düzeltelim: int led=3; // değişken tanımlama: led değişkenine ledin anodunun bağlı olduğu 3 nolu port değeri atanır. Setup bloğunda: pinMode (led, OUTPUT); // ledin bağlı olduğu 3 nolu port çıkış olarak ayarlanır. Loop bloğunda: digitalWrite (led,HIGH); // 3 nolu porta +5V değeri atanır. Böylece Led yanar. delay(500); //500 milisaniye beklenir. digitalWrite (led,LOW); // 3 nolu porta 0V değeri atanır. Böylece Led söner. delay(500); //500 milisaniye beklenir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7.3: «Blink» Taslağının Uyarlanması
  • 59. Tekrar taslak çalışmanızı (programınızı) Arduino kartınıza yükleyiniz. Harici LED’ iniz yanıp sönmeye başlayacaktır. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.7.3: «Blink» Taslağının Karta Yüklenmesi
  • 60. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.8.1:ANALOG GİRİŞ/ÇIKIŞ FONKSİYONLARI Bu bölümde başlıca fonksiyonlara yer verilecektir. Daha ayrıntılı bilgi için https://www.arduino.cc/en/Reference/HomePage ANALOG I/O FONKSİYONLARI analogReference() Analog giriş için referans gerilimini ayarlar. analogRead() Belirtilen analog pin değerini okur. analogWrite() Ayarlanan pinden analog çıkış almayı sağlar. 0 ile 255 arasında değer kabul eder. LED parlaklığı, motor hızı ayarlama gibi işlemlerde kullanılır.
  • 61. Bu uygulama için gereken malzemeler aşağıda listelenmiştir: Arduino UNO R3 board -1 adet Yarı-boyutlu Breadboard- 1 adet Led – 1 adet 470 Ω Direnç (Sarı, mor, kahverengi )- 1 Adet Bağlantı kabloları – 2 Adet Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.8.2: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA UYGULAMASI MALZEME LİSTESİ
  • 62. Led’in katod ucunu Arduino una kartının GND portuna bağlantı kablosu ile bağlayalım. Led’in anot ucunu 470 Ω direnç ve bağlantı kablosu ile Arduüno uno kartının digital 3 portuna bağlayalım. Dirençler elektrik akımını sınırlar. Daha yüksek bir değerli bir direnç, daha az elektrik akımı akacaktır. LED’ in ne kadar parlaklık vereceği LED’ e takılan seri direncin değerine bağlıdır. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.8.3: BREADBOARD DÜZENİ
  • 63. PWM TEORİSİ : Darbe Genişlik Modülasyonu (PWM), elektrik gücünü kontrol etmek için kullanılan bir tekniktir. Biz LED'lerin parlaklığını kontrol etmek için, Arduino Uno kartının 3 nolu PWM portunu kullandık. Aşağıdaki diyagram, Arduino PWM çıkışlarından birinin sinyalini göstermektedir. Kabaca her 1/500 saniyede, PWM çıkışı bir darbe üretecektir. Bu darbenin uzunluğu 'analogWrite' fonksiyonu ile kontrol edilir. Yani 'analogWrite(0)' kodu herhangi bir darbe üretmeyecektir. 'analogWrite (255)' komutu ise yeni darbe gelene kadar çıkışı 5 Volt seviyesinde tutacaktır. Eğer ‘analogWrite’ komutuna, 0 ile 255 arasında bir değer ataması yaparsak, atadığımız değere göre bir darbe üretilecektir. Arduino çıkışımızın 5 Voltta kalma süresini, bir PWM peryodunun %5’ i olarak ayarlarsak, çıkışımıza sadece % 5 oranında elektriki güç aktarmış oluruz. PWM peryodunun %90’ ı süresince çıkışımızı enerjilendirirsek, bu durumda çıkışa bağlı yükümüz elektriki gücün %90’ ını alacaktır. Biz LED’ in bu kısa süre içerisinde yanıp söndüğünü göremeyiz. Bize göre; sadece LED’in parlaklığı değişiyormuş şeklinde görülür Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.8.4: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA
  • 64. Arduino IDE ile «MyBlink» adı ile kaydettiğimiz taslağı açalım ve aşağıda görüldüğü şekilde düzeltelim: int led=3; // değişken tanımlama: led değişkenine ledin anodunun bağlı olduğu 3 nolu port değeri atanır. Setup bloğunda: pinMode (led, OUTPUT); // ledin bağlı olduğu 3 nolu port çıkış olarak ayarlanır. Loop bloğunda: analogWrite (led,0); // 3 nolu porta 0 değeri atanır. Böylece Led söner. delay(500); //500 milisaniye beklenir. analogWrite (led,80); // 3 nolu porta 80 değeri atanır. Böylece Led yanar. delay(500); //500 milisaniye beklenir. analogWrite (led,160); // 3 nolu porta 160 değeri atanır. Böylece Led daha parlak yanar. delay(500); //500 milisaniye beklenir. analogWrite (led,255); // 3 nolu porta 255 değeri atanır. Böylece Led en parlak durumda yanar. delay(500); //500 milisaniye beklenir. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.8.5: «Blink» Taslağının Uyarlanması
  • 65. Tekrar taslak çalışmanızı (programınızı) Arduino kartınıza yükleyiniz. Harici LED’ in parlaklığının 3 kademeli olarak değiştiğini göreceksiniz. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.8.6: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA UYGULAMASININ ARDUINO UNO KARTINA YÜKLENMESİ
  • 66. Aynı breadboard düzenini kullanarak devam ediyoruz. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.9.1: BREADBOARD DÜZENİ
  • 67. Arduino IDE ile «MyBlink» adı ile kaydettiğimiz taslağı açalım ve aşağıda görüldüğü şekilde düzeltelim: int led=3; // değişken tanımlama: led değişkenine ledin anodunun bağlı olduğu 3 nolu port değeri atanır. İnt i=0; // değişken tanımlama: i isminde tam sayı (integer) türünde bir değişken tanımlanıp ilk değeri 0 olarak atanır. Setup bloğunda: pinMode (led, OUTPUT); // ledin bağlı olduğu 3 nolu port çıkış olarak ayarlanır. Loop bloğunda: for (i=0;i<256;i++){ //i değişkeni 0’dan 255’e kadar birer birer arttırılır. analogWrite(led, i); //her i değişkeni ledin bağlı olduğu 3 nolu porta atanır. Böylece ledin parlaklığı ayarlanır. delay(20); // 20 milisaniye beklenir. } Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.9.1: «Blink» Taslağının Uyarlanması
  • 68. Tekrar taslak çalışmanızı (programınızı) Arduino kartınıza yükleyiniz. Harici LED’ in parlaklığının düzgün bir şekilde arttığını göreceksiniz. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.9.1: HARİCİ LEDİN PARLAKLIĞINI AYARLAMA UYGULAMASININ ARDUINO UNO KARTINA YÜKLENMESİ
  • 69. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.10:DEĞİŞKENLER (VARIABLES) ÇEŞİTLERİ Fonksiyonlar Konusunu işlemeden önce, uygulamalarımızda çok sık kullanacağımız değişkenler konusundan burada bahsedilecektir. C dilinde çok önem arzeden değişkenler konusu aynı önemi Arduino ile program yazılımı konusunda da göstermektedir. Bir değeri veya karakteri daha sonra tekrardan kullanmak/değiştirmek için hafızada tutabilirsiniz. Bu değerler değişkenlerde tutulur. Hafızada tutacağınız değerin türüne göre değişken tanımlanması gerekir. Aşağıdaki tabloda, Arduino'da kullanılan değişken türlerini ve tutabilecekleri değerleri görebilirsiniz. Değişken Boyut Açıklama byte 1 byte 0 – 255 arası işaretsiz sayılar. boolean 1 byte 0 (FALSE) veya 1 (TRUE) değerini alır. char 1 byte -128 ile 127 arasındaki değerleri alır. Tek bir karakterin saklanması için kullanılır. string 1 byte Metin işlemleri için kullanılır (char dizisi) int 2 byte İşaretli sayılar için -32.768 – 32.767 İşaretsiz sayıları için 0 – 65,535 long 4 byte İşaretli sayılar için -2.147.483.648 – 2.147.483.647 İşaretsiz sayılar için 0 – 4.294.967.295 float 4 byte İşaretli ondalıklı sayılar -3,4028235E – 3,4028235E double 4 byte 3,4028235E+38 ile -3,4028235E+38 arasında hassasiyeti yüksek kesirli sayılar barındırır
  • 70. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.11: KONTROL YAPILARI- KARAR YAPILARI Bu fonksiyonlar C dilinde kullanıldığı şekli ile kullanılır. IF/ELSE YAPISI Arduino Programlama temel karar komutudur. “IF” ‘ten sonra verilen koşul doğru ise IF bloğundaki işlemler çalıştırılır, yanlış ise “ELSE” bloğundaki işlemler çalıştırılır. if (X < 500) { // X sayısı eger 500’den küçük ise LEDpin1= HIGH digitalWrite(LEDpin1, HIGH); } else if (X > 1000) { // X sayısı eger 1000’ den büyük ise LEDPIN2= HIGH digitalWrite(LEDpin2, HIGH); } else { // if ve else if’ deki şart sağlanmadı ise o halde //aşağıdaki işlemi yürüt. LEDPIN3= HIGH digitalWrite(LEDpin3, HIGH); } if (koşul) { // Koşul sağlanıyor //ise yapılacak işlem } else if (koşul) {// Koşul sağlanıyor //ise yapılacak işlem} else { // Koşullar //sağlanmıyor //ise yapılacak işlem }
  • 71. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.11: KONTROL YAPILARI – KARAR YAPILARI SWITCH/CASE YAPISI Seçim yapılarak, program akışının istenilen bloklara atlamasını sağlar. “SWITCH” ‘teki değişken, “CASE” teki hangi değeri alırsa, karşılığındaki işlem yapılır. switch (seçim değişkeni) { case 1: // Seçim değişkeni 1 olduğunda yapılacak işlem break; case 2: // Seçim değişkeni 2 olduğunda yapılacak işlem break; default: // Varsayılan bağımsız işlem (isteğe bağlı) } BREAK, bir döngüyü veya switch komutunu sonlandırmak için kullanılır.
  • 72. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.12: KONTROL YAPILARI –DÖNGÜ YAPILARI SWITCH/CASE YAPISI ÖRNEĞİ switch (degisken) { case 1: // degisken=1 ise o halde 1. pindeki ledi enerjilendir. digitalWrite(LEDpin1, HIGH); break; case 2: // degisken=2 ise o halde 2. pindeki ledi enerjilendir. digitalWrite(LEDpin2, HIGH); break; case 3: // degisken=3 ise o halde 3. pindeki ledi enerjilendir. digitalWrite(LEDpin3, HIGH); default: // Eger değişken yukarıdaki 1, 2 ve 3 değerleri ile // eşlenmez ise // o halde default’dan sonraki satırları işlet. 4. pindeki // ledi enerjilendir. digitalWrite(LEDpin4, HIGH); break; } !! Switch case fonsiyonunda her case’ den sonra mutlaka break deyimi kullanılmalıdır. Aksi takdirde diğer case durumları ve default durumu işletilir. Bu da programınızda istenmeyen durumlara ve hatalara sebebiyet verir. !!
  • 73. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.12: KONTROL YAPILARI-DÖNGÜ YAPILARI FOR YAPISI Arduino Programlama dilinde temel döngü komutudur. “FOR” içinde yer alan koşul doğru olduğu sürece, döngüdeki işlemler gerçekleştirilir. for (başlangıç değeri; koşul; artım) { //işlemler } void setup() { int i; Serial.begin(9600); // seri haberleşme için ayarlama fonksiyonu } loop() { for (i = 0; i < 10; i++) // FOR döngüsü için başlangıç değeri 1’ //dir. İ sayısının değeri 10 olana kadar i’ nin değerini 1 artır. { Serial.print("i = "); // i= yazısını ekrana yazdır. Serial.println(i); // Değerleri bilgisayar ekranına yazdır yeni // satıra geç. delay(1000);// 1 saniye aralıklarla yazdır. } }
  • 74. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.12: KONTROL YAPILARI – DÖNGÜ YAPILARI WHILE YAPISI “While” ile belirtilen koşul doğru olduğu sürece, döngü içindeki işlemler gerçekleştirilir. while(koşul){ // Koşul doğru olduğu sürece yapılacak işlemler } DO-WHILE YAPISI “while” ile belirtilen koşul doğru olduğu sürece, döngüdeki işlemler yapılır. do { // Koşul doğru olduğu sürece yapılacak işlemler } while (test koşulu);
  • 75. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.12: KONTROL YAPILARI – DÖNGÜ YAPILARI WHILE ve DO-WHILE YAPISI İLE ÖRNEKLER var = 0; while(var < 200){ // buraya yazacağınız kodlar 200 kez işletilir. var++; // var’ ın değerini her seferinde 1 artır. } do { delay(50); // wait for sensors to stabilize x = readSensors(); // readSensors fonksiyonundan gelen değeri // x’ e yazdır. } while (x < 100); //x değeri 100’ den küçük olduğu sürece “do” //içindeki deyimleri işlet. DO - WHILE WHILE
  • 76. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.13: OPERATÖRLER C dilinde kullanılan operatörler kullanılır. Matematiksel Karşılaştırma Mantıksal = Eşitlik = = İki değişkeni karşılaştırır. && VE + Toplama != İki değişkenin eşit olmama durumunu karşılaştırır. || VEYA – Çıkarma < Küçüktür karşılaştırması ! DEĞİL * Çarpma > Büyüktür karşılaştırması / Bölme <= Küçük eşit % Yüzde >= Büyük eşit İşlemleri belirten sembollere, bilgisayar dilinde “operatör” denir. Tabloda temel operatörler ve tooltip gösterimli olarak karşılıkları verilmiştir.
  • 77. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR Bu bölümde başlıca fonksiyonlara yer verilecektir. Daha ayrıntılı bilgi için https://www.arduino.cc/en/Reference/HomePage DİJİTAL I/O FONKSİYONLARI pinMode() Pinleri giriş veya çıkış olarak yapılandırma işlemi yapar. digitalWrite() Çıkış olarak ayarlanan pinlerin değerlerini, HIGH veya LOW olarak ayarlar. digitalRead() Belirtilen digital pin değerini okur.
  • 78. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR Bu bölümde başlıca fonksiyonlara yer verilecektir. Daha ayrıntılı bilgi için https://www.arduino.cc/en/Reference/HomePage ANALOG I/O FONKSİYONLARI analogReference() Analog giriş için referans gerilimini ayarlar. analogRead() Belirtilen analog pin değerini okur. analogWrite() Ayarlanan pinden analog çıkış almayı sağlar. LED parlaklığı, motor hızı ayarlama gibi işlemlerde kullanılır.
  • 79. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR – GIRDI ÇIKTI KOMUTLARI Seri Monitör I/O FONKSİYONLARI Serial.begin(9600) Monitörü seri iletişimle bağlantıya açar. Serial.print() , Serial.println() Seri monitöre değer yazar. Serial.read(), Serial.readBytes(), Serial.readString(), Serial.readBytesUntil(), Serial.parseInt(), Serial.parseFloat(), Seri monitörden değer okur.
  • 80. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR ARDUINO FONKSIYONLARINA DAHA DETAYLI BAKIŞ Arduino Fonksiyonlarının işletilmesi C dilindeki fonksiyon yapısı ile çok benzerlik gösterir. Arduino programlarımızı tek bir fonksiyon (loop()) içerisinde yazabileceğimiz gibi onları küçük birimlere de ayırabiliriz. Örneğin Delay() fonksiyonu parametre alan ama değer döndürmeyen bir fonksiyondur.
  • 81. Bölüm 14: ARDUINO PROGRAMLAMA DİLİ Konu: FONKSIYON PARAMETRELERİ • Arduino Programlama dili c,c++ yapısında fonksiyonlar kullanır. Burada fonksiyon parametre alabilir, ve çağrıldığı yere değer döndürebilir.
  • 82. Değer döndürmeyen fonksiyonların dönüş değer tipi “void” dir. Void kelime anlamı olarak hükümsüz anlamına gelir. Fonksiyonların parametre almaları ve değer döndürmeleri zorunlu değildir. Fonksiyonlar parametre alıp almadıklarına veya değer döndürüp döndürmemelerine göre gruplanabilir: 1- Parametre alan ve dönüş değeri olan 2- Parametre almayan ve dönüş değeri olan 3- Parametre alan ve dönüş değeri olmayan 4- Parametre almayan ve dönüş değeri olmayan Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR PARAMETRELER Fonksiyonlar tanımlanırken hangi tip parametre alacakları belirtilir. Fonksiyonlara verdiğimiz girişlere “parametre” denilir. Fonksiyonları tekrar edilen işlemler için kullanabiliriz. !! VOID: Fonksiyonun başındaki void ifadesi bunun bir değer döndürmeyeceğini belirtir. !! INT: Fonksiyonun başındaki int ifadesi bunun bir tamsayı değeri döndüreceğini belirtir.
  • 83. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR FONKSİYON ÇAĞIRMA /* Seri haberleşme üzerinden “Arduino” yazdıran fonksiyon saniyede 1 kez çağırılıyor. Bilgisayar Ekranindan Arduino IDE monitorunu açınız. Arduino yazısı 1 Sn aralıklarla gorulebilir.Seri Haberleşme örneği (UART) Baud rate = 9600 olarak ayarlandi. IDE ortamındaki Seri monitor’ un de default değeri 9600’ dur. */ void setup() { Serial.begin(9600); } void loop() { ArduinoYazdir(); // Fonksiyon çağrısı delay(1000); // Bir saniye bekle } Void ArduinoYazdir() ; // Bizim tanımladığımız fonksiyon { /* Aşağıdaki fonksiyon Arduino IDE de mevcuttur */ Serial.println (“Arduino”); // Bir saniye bekle } Yukarıda ArduinoYazdir isimli fonksiyon bizim tarafımızdan yazılmış olup Loop fonksiyonu içerisinden çağrılmaktadır.
  • 84. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR - Fonksiyon yazma işleminde, fonksiyonda kullanılacak değişken tanımlamalarına ve fonksiyonda yapılacak işlem sonucunun hangi türde olacağına dikkat edilmelidir. - Fonksiyonun türü, işlem sonucunda döndürülecek değişken ile aynı tipte olmalıdır. - Eğer fonksiyon, hiçbir değer döndürmeyecekse 'void' olarak tanımlanmalıdır. Örneğin toplama işlemi yapan ve sonucu “int” geri döndüren bir fonksiyon yazalım. Fonksiyon a ve b adında “int” tanımlı iki sayı almaktadır. a ve b’ yi toplayıp sonucu geri döndürmektedir. int toplama(int a, int b) { int sonuc; sonuc = a + b; return sonuc; } Burada oluşturulan sonuç değişkeni sadece fonksiyon içerisinde geçerlidir. Fonksiyonun görevi bittikten sonra sonuç değişkeni kaybolur. Bu fonksiyonu programınızın gerekli yerinde kullanmak için; int islemSonucu; islemSonucu = toplama(2 + 3); şeklinde fonksiyonu çağırmanız yeterli olacaktır. YUKARIDAKİ FONKSİYON BU NOKTADA ÇAĞRILIYOR.
  • 85. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR ARDUINO DİLİ MATEMATİK FONKSİYONLARI Temel matematik işlemleri matematik operatörleriyle gerçekleştirebiliyoruz. Karekök alma, trigonometrik hesaplamalar gibi işlemler için matematik kütüphanesi fonksiyonlarını kullanabiliriz. https://www.arduino.cc/en/Reference/HomePage Matematik kütüphanesi fonksiyonlarından belli başlıcaları aşağıda sıralanmıştır. min(x, y): İki sayıdan küçük olanını bulur. Fonksiyon değeri olarak küçük sayının değerini döndürür. max(x, y): ): İki sayıdan büyük olanını bulur. Fonksiyon değeri olarak büyük sayının değerini döndürür. abs(x) : Sayının mutlak değerini hesaplar. pow(base, exponent): Üs alma fonksiyonudur. (Base= sayının tabanı, exponent = sayının üssü) sqrt(x): Sayının karekökünü hesaplar.
  • 86. Val = min(Val, 100); // Val değeri ile 100 sayısını karşılaştırır hangisi // küçükse Val Değerine atama yapar. // Sonuç Hiç bir zaman 100 değerinden büyük olamaz. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.14:FONKSİYONLAR MATEMATİK FONKSİYONLARI İLE BAZI ÖRNEKLER Val = max(Val, 20); // Val değeri ile 20 sayısını karşılaştırır. hangisi büyükse // Val Değerine atama yapar. // Sonuç hiç bir zaman 20 değerinden küçük olamaz. abs(a); // a değişkeninin mutlak değerini hesaplar. a++; // Sonra a’ nın değerini “1” artır. sqrt(val); // Sayının karekökünü hesaplar. Dönen değer Double sayı // tipindedir. https://www.arduino.cc/en/Reference/HomePage Daha fazla Bilgi için aşağıdaki linke bakınız.
  • 87. Bölüm 3: ARDUINO PROGRAMLAMA DİLİ Konu 3.15:ARDUINO’ DA KÜTÜPHANE (LIBRARY) KULLANIMI Arduino platformunda diğer programlama platformları gibi, kütüphanelerin kullanımı mevcuttur. Kütüphaneler, taslaklarınıza ekstra işlevsellik kazandırabilir. Bir taslağınızda kütüphane kullanmak için, Sketch> Import Library komutunu seçiniz. IDE ile yüklü gelen Kütüphaneler vardır, ama aynı zamanda kendi kütüphanelerizi oluşturabilirsiniz. Aşağıdaki listede bir kısım Arduino kütüphanlerinin kullanımını göreceksiniz. Standart Arduino Kütüphaneleri EEPROM – EEPROM entegreden veri okuma ve veri yazma Ethernet - Arduino Ethernet Shield aracılığıyla internete bağlanmak Firmata – Standart seri bağlantı aracılığıyla bilgisayar uygulama GSM - GSM shield ile GSM/GRPS networkunu kullanmak. LiquidCrystal – LCD ekran kullanımı. SD - SD kartlara okumak ve yazmak. Servo - Servo motor kullanımı. SPI - Serial Peripheral Interface (SPI) cihazlarla haberleşme. SoftwareSerial – Herhangi bir dijital pinden seri iletişim gerçekleştirme. Stepper – Step motor kontrolü. TFT - Arduino TFT ekran ile şekiller ve resimler oluşturmak. WiFi - Arduino WiFi shield ile internete bağlanmak. Wire – (TWI/I2C) I2C cihazlarla bağlantı. Daha fazla bilgi için aşağıdaki linke bakınız. https://www.arduino.cc/en/Reference/Libraries
  • 88. Arduino kartın dijital girişlerine buton bağlayacağız ve butonlar ile LED’ i yakıp söndüreceğiz. Breadboardın üst kenarındaki butona basıldığı zaman; LED yanacak, alttaki butona bastığımızda, LED sönecektir. Bölüm 3: ARDUINO PROJELERİ Konu 4.1: BUTON İLE LED YAKIP SÖNDÜRME
  • 89. Jumper tel paketi - 1 Adet Arduino Uno R3 – 1 Adet Yarım boy BreadBoard – 1 Adet Baskı devre tipi buton – 2 Adet 270 Ω Direnç (kırmızı, mor, kahverengi çizgili) – 1 Adet 5mm Kırmızı LED – 1 Adet Bölüm 3: ARDUINO PROJELERİ Konu 4.1.1: BUTON İLE LED YAKIP SÖNDÜRME MALZEME LİSTESİ
  • 90. Butonlar gerçekten basit elektriki elemanlardır. Düğmesine bastığınızda iki kontak birbirine birleşir ve elektrik akımı akmaya başlar. Bıraktığınız da ise kontaklar arası bağlantı kesilir dolayısıyla elektrik akımı da kesilir. Bu derste kullanılan baskı devre tipi butonlar, biraz kafa karıştırıcı olabilir, dört adet bağlantı noktası vardır. Şekilde görüldüğü gibi A ve D uçları ile B ve C uçları buton içinde birbirine bağlıdır. Bölüm 3: ARDUINO PROJELERİ Konu 4.1.1.1: BUTONLAR
  • 91. Butonların şekli kare olmasına rağmen, butonlardaki kontaklar çapraz bir şekilde bulunur. Aşağıdaki şekilde görüldüğü gibi birbirine çapraz pinler normalde açık buton olarak kullanılmıştır. Bölüm 3: ARDUINO PROJELERİ Konu 4.1.2: BUTON İLE LED YAKIP SÖNDÜRME BREADBOARD DÜZENİ
  • 92. Arduino kartınıza aşağıdaki programı yükleyiniz. A butonuna basınca LED ışık verecektir, B butonuna basınca ise LED sönecektir. /* Inputs */ int ledPin = 5; int buttonApin = 9; int buttonBpin = 8; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); } void loop() { if (digitalRead(buttonApin) == LOW) { digitalWrite(ledPin, HIGH); } if (digitalRead(buttonBpin) == LOW) { digitalWrite(ledPin, LOW); } } Bu program ise üç kısımdan oluşmaktadır. İlk kısım tahmin edileceği gibi tanımlamalar (Defines) kısmıdır. Burada kolaylık olması bakımından Arduino Uno kartının çıkışı ve girişi için tanımlama yapılmıştır. int ledPin = 5; // LedPin’i 5 değerine atama yapar. // buttonApin’i 9 değerine atama yapar. int buttonApin = 9; // buttonBpin’i 8 değerine atama yapar. int buttonBpin = 8; // Bu durumda artık rakamlar yerine // isimleri kullanabilirsiniz. Bu rakamlar giriş ve // çıkış pinlerini belirtir. Rakamları // aklınızda tutmak zorunda değilsiniz. Bölüm 3: ARDUINO PROJELERİ Konu 4.1.3: BUTON İLE LED YAKIP SÖNDÜRME ARDUINO TASLAĞI
  • 93. Programın ilk bölümü kullanılacak üç pin için, üç değişkeni tanımlar. 'LedPin' çıkış pini, 'buttonApin' A butonu ve 'buttonBpin' ise B butonunun olduğu giriş pinidir. 'Setup' fonksiyonunda, ledPin çıkış (OUTPUT) olarak tanımlanmıştır. Buna karşın, iki adet pin de giriş olarak tanımlanacaktır. Bu durumda, pinMode komutu ile girişleri 'INPUT_PULLUP' olarak ayarlayalım. pinMode(ledPin, OUTPUT); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); INPUT_PULLUP direktifi ile buttonApin ve buttonBpin, PULL-UP giriş olarak tanımlanmıştır. Bunun anlamı girişe herhangi bir seviyedeki gerilim bağlı değil ise, girişin durumu dijital olarak 1-HIGH seviyesinde kalacaktır. Bu butona basılınca, girişin durumu GND seviyesine çekilir. Bu durumda girişin durumu dijital olarak 0-LOW seviyesine çekilmiş olur. INPUT_PULLUP direktifi ile mikrodenetleyici içerisindeki PULL-UP dirençleri aktif yapılmaktadır. Bu dirençler mikrodenetleyici içerisinde +5V hattına otomatik bağlanmaktadır. Giriş; PULLUP komutundan dolayı, normal durumda HIGH konumunda kalacaktır. Sadece butona basıldığında LOW durumuna düşebilir. Bu durumu 'loop' fonksiyonu içinde ele alacağız. Bölüm 3: ARDUINO PROJELERİ Konu 4.1.3: BUTON İLE LED YAKIP SÖNDÜRME ARDUINO TASLAĞI
  • 94. void loop() { if (digitalRead(buttonApin) == LOW) { digitalWrite(ledPin, HIGH); } if (digitalRead(buttonBpin) == LOW) { digitalWrite(ledPin, LOW); } } 'Loop' fonksiyonunda, her butona ait bir 'if' ifadesi vardır. Hangi giriş GND hattına bağlanırsa, girişle alakalı 'digitalWrite' komutu çalıştırılır. Eğer A butonuna basılırsa, ledPin HIGH yapılmaktadır. B butonuna basılırsa, ledPin LOW yapılmaktadır. Bölüm 3: ARDUINO PROJELERİ Konu 4.1.3: BUTON İLE LED YAKIP SÖNDÜRME ARDUINO TASLAĞI
  • 95. Bölüm 3: ARDUINO PROJELERİ Konu 4.2.1:ARDUINO UNO ISI KONTROL UYGULAMASI MALZEME LİSTESİ Bu bölümde Arduino Uno kartı ile basit bit Isı Kontrol Uygulaması yapılacaktır. Yukarıdaki bilgilerimize dayanıp, aşağıdaki elemanları sırası ile çalışma ekranımıza taşıyalım. Arduino UNO R3 bir – 1 Adet TMP36 sıcaklık sensörü -1 Adet LED (Kırmızı-Sarı Yeşil) – Her birinden 1’er Adet olmak üzere toplamda 3 adet
  • 96. Bölüm 3: ARDUINO PROJELERİ Konu 4.2.1.1:TMP35/36/37 SICAKLIK SENSÖRLERİ Bu veriler TMP veya LM kodlu sıcaklık sensörleri içindir. TMP36 kodlu sensör bu uygulamada seçilmiştir. (-40 dan 150 CO’ ye kadar ölçüm yapabilir.) LM35 / TMP35 (Celsius çıkış) ve LM37 / TMP 37 (Fahrenheit çıkış) TMP36’ya çok benzer. TMP36 kullanmamızın ana nedeni sıcaklık ölçme aralığının yüksek olması ve 0 CO’ nin altındaki sıcaklıklarda, negatif gerilim kaynağına ihtiyaç duymamasıdır. Yukarıdaki farklılıklar hariç, TMP 35/36/37 ve LM 35/36/37’ nın işlevleri aynıdır. TMP36 sıcaklık sensörü verileri aşağıda listelenmiştir. Boyutu: TO-92 paket Sıcaklık aralığı: -40 ° C ila 150 ° C Çıkış aralığı: 0,1V (-40 ° C), 2.0V (150 ° C), fakat doğruluk 125 ° C sonra azalır Güç kaynağı: 2.7V-5.5V çalışma geriliminde sadece 0,05 mA’lik bir akım çeker. Daha detaylı bilgiler için TMP36 veri yapraklarına bakınız. (TMP36 Datasheet)
  • 97. TMP36 ile 34 ve 35 serisini daha iyi karşılaştırmak için aşağıdaki şekli inceleyiniz. Şekilde görüldüğü üzere X ekseni ısıyı ve Y ekseni ise ısı sensörlerinin çıkış gerilimini göstermektedir. “b” eğrisi, TMP36 sensörüne aittir. Gerilimi sıcaklığa dönüştürmek için aşağıdaki formülü kullanacağız. (LM36 veya TMP36 sensörü için geçerli.) SICAKLIK(°C ) = [(Çıkış Gerilimi Volt) – 0.5] * 10 Örneğin Çıkış Gerilimi 1V ise sıcaklık şu şekilde hesaplanır. ((1V -0.5) * 10) = 50 ° C Görüldüğü gibi 1V=1000 mV’ luk gerilim için ölçülen sıcaklık 50 °C’ dir. Eğer LM35 veya TMP35 kullanıyorsanız, yukarıdaki şekilde “a” eğrisine denk gelir. Bu durumda formül: SICAKLIK(°C ) = (Çıkış Gerilimi Volt) * 10 olacaktır. Bu uygulamada Arduino UNO R3 ve TMP36 sıcaklık sensorü kullanılarak sıcaklık ölçümü yapılıp, Arduino'nun serial monitor kısmında görüntülenmiştir. BreadBoard’daki LED’ ler ise aşağıdaki durumlarda ışık verecektir. Sarı LED: 0 OC’ nin altındaki sıcaklıklar Yeşil LED: 0 ile 40 OC arasındaki sıcaklıklar Kırmızı LED: 40 OC nin üzerindeki sıcaklıklar Bölüm 3: ARDUINO PROJELERİ Konu 4.2.1.1:TMP35/36/37 SICAKLIK SENSÖRLERİ
  • 98. TMP36 sıcaklık sensorunun 3 adet bağlantı pini vardır, Soldaki: +5V Ortadaki :Sinyal ucu Arduino'nun analog 0. pine bağlanacaktır. Sağdaki :GND TMP36 sıcaklık sensoru çalışma voltajı 2,7-5,5V arasındadır, Arduino üzerinden rahatlıkla beslenebilir. TMP36'nın sinyal pini Arduino'nun analog 0. bitine bağlanacaktır. Program yazma esnasında ölçümler için yukarıdaki formül kullanılacaktır. LED’ leri sırası (SARI-YEŞİL-KIRMIZI) ile 13, 12, 11 nolu dijital çıkış pinlerine bağlayınız. Şimdi New Electronics Lab çalışma alanına dönüp aşağıdaki bağlantıları yapınız. Bölüm 3: ARDUINO PROJELERİ Konu 4.2.2: BREADBOARD DÜZENİ
  • 99. Devrenin şemasını görmek için Schematic View Butonuna tıklayınız. Aşağıdaki gibi bir görüntü ile karşılaşacaksınız. Bölüm 3: ARDUINO PROJELERİ Konu 4.2.2: BREADBOARD BAĞLANTISI
  • 100. Bölüm 3: ARDUINO PROJELERİ Konu 4.2.3: TASLAK (SKETCH) YAZIMI ve ARDUINO KARTINA YÜKLENMESİ Code Editor butonuna tıklayınız. Aşağıdaki taslak çalışmasını “Code Editor” penceresine yazınız. Her yaptığınız işlem “New Electronics Lab” tarafından otomatik olarak internette kayıtlı hesabınıza kayıt edilecektir. Bir dahaki New Electronics Lab oturumunda çalışmanızın en son halini göreceksiniz. //Çıkış Pin Değişkenleri int ledYellow = 13; int ledGreen = 12; int ledRed = 11; //TMP36 Pin Değişkenleri int sensorPin = 0; // Analog pin 0’ a TMP36'nın Vout (sense) ucu //bağlanmalıdır. /* Bilgisayarla seri iletişim yapabilmek için Setup’ da aşağıdaki tanımlama yapılır. */ void setup() { pinMode(ledYellow, OUTPUT); // Ledlerin bağlanacağı pinMode(ledGreen, OUTPUT); // çıkışları ayarla pinMode(ledRed, OUTPUT); // Serial.begin(8600); //Bilgisayarla seri iletişimi başlat. //sonuçları görmek için serial monitoru açınız. }
  • 101. void loop() // Loop fonksiyonuna giriş { //Sıcaklık sensöründen alınan ham değer int reading = analogRead(sensorPin); // Bu noktada Oran-Orantı yöntemi ile A0 analog girişine uygulanan gerilimin değerini //hesaplıyoruz. float voltage = reading * 5.0; voltage = voltage / 1024.0; // ilk önce ham reading değeri gönderilir. Serial.print("Ham deger="); Serial.println(reading); // TMP36'nın sinyal ucundaki gerilim Serial.print(voltage); Serial.println(" volt"); // Şimdi de sıcaklığı gösterelim. float temperatureC = (voltage - 0.5) * 100 ; // MiliVolt cinsinden gerilimi sıcaklık değerine çevirmek için bu // formül kullanılır. //500 mVolt 0 C için offset değeridir. Serial.print(temperatureC); Serial.println(" derece C"); // Sıcaklık değerine bağlı olarak ilgili LED' in yakılması if (temperatureC < 0) // Sıcaklığın 0' ın altında olması durumu {digitalWrite(ledYellow, HIGH);digitalWrite(ledGreen, LOW);digitalWrite(ledRed, LOW);} else if (temperatureC >= 0 && temperatureC <= 40 ) // Sıcaklığın 0 ila 40 derece arasında olması {digitalWrite(ledYellow, LOW);digitalWrite(ledGreen, HIGH);digitalWrite(ledRed, LOW); } else if (temperatureC > 40 ) // Sıcaklığın 40 Derecenin üstünde olması durumu {digitalWrite(ledYellow, LOW);digitalWrite(ledGreen, LOW);digitalWrite(ledRed, HIGH); } delay(200); //200 mS bekle } Bölüm 3: ARDUINO PROJELERİ Konu 4.2.3: TASLAK (SKETCH) YAZIMI ve ARDUINO KARTINA YÜKLENMESİ
  • 102. Bölüm 3: ARDUINO PROJELERİ Konu 4.2.4: SİMULASYONUN ÇALIŞTIRILMASI Bu aşamada yaptığınız devreyi ve yazdığınız taslak programı çalıştırınız. Sağ üst köşedeki “Start Simulation” butonuna basarak simulasyonu başlatın ve çalışmanızı test ediniz. TMP36 sensörünün üzerindeki Sıcaklık Değiştirme çubuğunu 0 ila 125 OC arasında değiştirerek hangi LED’ in yandığını gözlemleyiniz. Yukarıdaki taslakta Ayrıca Serial monitörden sırası ile Analog Giriş 0’ ın Ham Değeri (reading), Ham Değerin gerilime (voltage) dönüştürülmüş hali ve son olarak Sıcaklık Değeri(temperatureC) gözlemlenebilir. 24 C0 deki ham Analog değer ve gerçek gerilim değeri (serial monitor aracılığı ile)
  • 103. Bölüm 4: ARDUINO PROJELERİ Konu 4.3: LED YAKIP SÖNDÜRME (BLINK) UYGULAMASI Bu derste, direncin farklı değerleri kullanılarak, bir LED’in parlaklığını değiştirmeyi öğreneceksiniz.
  • 104. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.1: MALZEME LİSTESİ Bu derste anlatılan deneyleri uygulamak için, aşağıdaki parçalar gereklidir. Parça-Adet 5mm Kırmızı LED- 1 Adet 270 Ω Direnç (kırmızı, mor, kahverengi çizgili) – 1 Adet 470 Ω Direnç (sarı, mor, kahverengi çizgili) -1 Adet 2.2 kΩ Direnç (kırmızı, kırmızı, kırmızı çizgili) -1 Adet 10 kΩ Direnç (kahverengi, siyah, turuncu çizgili) 1 Adet
  • 105. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.1: MALZEME LİSTESİ Yarı-Boy Breadboard – 1 Adet Arduino Uno R3 - 1 Adet Bağlantı kabloları – 1 Adet
  • 106. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.2: LED’LER LED'lerden gösterge ışıkları yapabilirsiniz. Elektrik tüketimleri çok azdır ve ömürleri çok uzundur. Bu derste, muhtemelen en çok en yaygın olan 5mm kırmızı LED kullanacaksınız. 5mm., LED’ in dış çapını ifade eder. 5mm’lik LED’lerin yanı sıra, 3 mm ve 10 mm. çaplarında LED’ler de mevcuttur. LED’ inizi, doğrudan bir pil veya gerilim kaynağına bir bağlayamazsınız.. LED’ in Anod ve Katod uçları vardır ve Anot ucuna (+) ve Katod ucuna (-) bağlanmalıdır. Aksi durumda LED ışık yaymaz. Kırmızı LED’ in çalışma gerilimi 1.5 Volttur. LED’in çalışma gerilimini sınırlandırmak için, ön direnç takılmalıdır. Aksi takdirde LED hasar görebilir. Eğer bir LED ile bir direnç kullanmazsanız, LED üzerinden çok fazla akım akacaktır. Doğal olarak, LED üzerinde aşırı ısı üretilir. LED; hemen tahrip olabilir. LED’ in, Anot(+) ve Katod(-) uçlarını bulmak için, iki yol vardır. İlk olarak, Anot(+) ucu daha uzundur. Katod(-) ucu kısadır. İkincisi; Katod(-) ucuna LED’ in şeffaf tarafından bakarsak, düz ve geniş bir kısım görürüz.
  • 107. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.3: DİRENÇLER Adından da anlaşılacağı gibi, dirençler elektrik akımını sınırlar. Daha yüksek bir değerli bir direnç, daha az elektrik akımı akacaktır. Biz LED’ den geçecek olan akımı direnç ile sınırlandıracağız. LED’ in ne kadar parlaklık vereceği LED’ e takılan seri direncin değerine bağlıdır. Direnç birimi, genellikle Yunancada Omega-Ω harfi ile kısaltılır. Ohm şeklinde okunur. Bir Ohm’un as katları çok fazla kullanılmaz. Genelde Kilo ohm (1000 Ω) ve Mega ohm (1000.000 Ω) gibi üst katları kullanılır. Bu derste, direnç, 270Ω, 470Ω, 2.2kΩ ve 10kΩ dört farklı değerleri kullanacağız. Üzerlerinde farklı renkli şeritler olması dışında bu dirençleri hepsi aynı görünüyor. Bu şeritler size direncin değerini söyler. Direnç üzerinde üç renkli çizgili renk kodu ve ve devamında altın şerit bulunur. Aşağıdaki gibi her renge ait bir numara vardır:
  • 108. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.3: DİRENÇLER RENKLER KATSAYI değeri Çarpan Tolerans Sıcaklık katsayısı1. band 2. band 3. band Siyah 0 0 1 Kahverengi 1 1 1 10 ± %1 100 ppm Kırmızı 2 2 2 100 ± %2 50 ppm Turuncu 3 3 3 1k 15 ppm Sarı 4 4 4 10k 25 ppm Yeşil 5 5 5 100k ± %0.5 Mavi 6 6 6 1M ± %0.25 Mor 7 7 7 10M ± %0.10 Gri 8 8 8 ± %0.05 Beyaz 9 9 9 Altın 0.1 ± %5 Gümüş 0.01 ± %10 Renksiz ± %20 Yandaki tablonun kolay ezberlenmesi açısından bir heceleme geliştirilmiştir. SoKaKTa SaYaMaM GiBi (Ama Görürüm..) Burada dikkat edeceğiniz gibi ilk iki kelimenin sessiz harfleri sırası ile renk kodlarını (Siyah, Kahverengi, Kırmızı, Turuncu, Sarı, Yeşil, Mavi Mor, Gri, Beyaz ), son iki kelimenin baş harfleri ise Altın ve Gümüş'ü anımsatmak için kullanılmıştır. S K K T S Y M M G B FORMÜL BU! Örneğin yukarıdaki gibi dört bantlı bir direncimiz olsun. Direnç resminden görüleceği üzere direncimizin renkleri Kırmızı-Mor –Kahverengi – Altın şeklindedir. Tablodan görüleceği üzere Kırmızının değeri 2 ve Morun değeri 7’ dir. 2 ve 7 sayılarının yan yana getiriyoruz. Bunu çarpan rengi ile çarpıyoruz. Çarpan rengimiz ise Kahverengidir. Kahverenginin çarpan değeri ise 10’ dur. Bu durumda direncimizin değerinin 27x10= 270 Ω olduğu buluruz. Çizgili kahverengi, siyah, turuncu bir direnç yani 10 k 10 ve üç sıfır yani 10.000 Ω olduğunu. Renk şeritleri Kahverengi- Siyah-Turuncu-Altın olan bir direncin değeri ise 10X1KΩ yani 10.000 Ω’ dur. LED'ler gibi, dirençler yönlü elemanlar değildir. Her iki yönlü bağlanabilirler. Bu slayt glossary’de olsun.
  • 109. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.4: BREADBOARD DÜZENİ 270 Ω direnci ve LEDİ kullanarak, aşağıda gösterildiği gibi, Breadboard üzerinde bağlantı yapınız. Arduino kartı, LED’in ve direncin kullanacağı 5 Volt gerilim için, uygun bir kaynaktır. Arduino kartınızın USB kablosunu bilgisayarınıza takınız, Arduino kartı size 5 Voltluk gerilim sağlayacaktır.
  • 110. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.4: BREADBOARD DÜZENİ 270 Ω’luk direnç ile LED oldukça parlak ışık verir. Eğer 270 Ω’ luk direnci 470 Ω’luk direnç ile değiştirirsek, o zaman LED biraz sönük görünür. 2.2kΩ direnci LED ile seri bağlarsak LED oldukça sönük ışık verir. Son olarak, yerinde 10 kΩ direnç ile deneme yaparsak LED sadece görünür şekilde çok az ışık verir. Kırmızı kabloyu Breadboard’dan çıkartıp boş bir deliğe takarsak, tıpkı bir anahtar gibi davranır ve LED söner. Yüksek dirençten daha az akım geçer. (OHM KANUNU) Kırmızı renkli LED için LED gerilimi 1,5 volt alınır. I1=(U-ULED)/R1= (5-1,5)/270= 13 miliAmper I2=(U-ULED)/R2= (5-1,5)/470= 7 miliAmper I3=(U-ULED)/R3= (5-1,5)/2200= 1,5 miliAmper I4=(U-ULED)/R4= (5-1,5)/10000= 0,3 miliAmper I4 < I3 < I2 < I1 I1 Akımı en yüksektir. Akım ne kadar yüksekse; LED o derece parlak yanacaktır. Bu durumda LED’ e seri bağlanacak en uygun direnç 270 ohm olarak görülmektedir.
  • 111. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.5: BREADBOARD ÜZERİNDEKİ LEDİ ARDUINO BOARD İLE YAKIP SÖNDÜRMEK Breadboard basit bir değişiklik ile, LEDi Arduino kartımızın bir çıkış pinine bağlayabiliriz. Aşağıda gösterildiği gibi, kırmızı bağlantı telini, Arduino kartınızın +5V konnektöründen D13 portuna taşıyınız. int led = 13; LED 13 nolu çıkıştan yanıyor Bir sonraki aşamada çıkış numarasının değiştirilmesi görülecektir.
  • 112. Bölüm 4: ARDUINO PROJELERİ Konu 4.3.5: BREADBOARD ÜZERİNDEKİ LEDİ ARDUINO BOARD İLE YAKIP SÖNDÜRMEK Şimdi 4.Derste 'Blink' örnek taslağını(programını) Arduino kartına yükleyiniz. Hem Arduino kartına da yerleşik olan 'L' LED’ inin, hem de BreadBoardda bulunan LED’in yanıp söndüğünü göreceksiniz. Arduinonun farklı bir pinini kullanmayı deneyiniz. Bu pin D7 olacaktır. Kırmızı bağlantı kablosunu, D13 pininden D7 pinine taşıyınız. Taslak çalışmanız (Programınız) üzerinde aşağıdaki değişikliği yapınız. int led = 13; Yukarıdaki satırı aşağıdaki gibi değiştiriniz. int led = 7; Değiştirilmiş programınızı Arduino Kartınıza yükleyiniz. LED’iniz yine yanıp sönecektir. Ama bu kez D7 pini üzerinden çalışmaktadır.
  • 113. Bölüm 4: ARDUINO PROJELERİ Konu 4.4: ARDUINO İLE RGB LED UYGULAMASI Bu derste, Arduino ile RGB LED (Kırmızı Yeşil Mavi) kullanmayı öğreneceksiniz. LED’in rengini kontrol etmek için, Arduino IDE’ de bulunan `analogWrite` fonksiyonu kullanılır. Görünüş olarak RGB (Kırmızı, Yeşil, Mavi) LED'ler, normal LED’ lere benzer. Ancak LED paketi içinde, üç farklı LED barındırır. Kırmızı, yeşil ve de mavi olmak üzere 3 LED vardır. Her bir LED için, ayrı bir bacak mevcuttur. Her LED'in parlaklığını kontrol ederek, hemen hemen istediğiniz herhangi bir rengi elde edebilirsiniz. Normal şartlar altında LED’ e seri bağlanan direncin değerini değiştirip, LED’ lerin parlaklığını ayarlayabiliriz. Fakat bu yöntem çok zordur. Her seferinde renk ayarlamak için direnç değerlerini değiştirmek zorunda kalırsınız! Neyse ki; Arduino IDE’de `analogWrite` fonksiyonu yardımıyla renk değiştirme işini kolaylıkla yapabilirsiniz. `AnalogWrite` komutu ile, RGB LED’in, her üç LED’ine de istediğiniz miktarda değişken elektrik akımı gönderebilirsiniz.
  • 114. Bölüm 4: ARDUINO PROJELERİ Konu 4.4: ARDUINO İLE RGB LED UYGULAMASI PWM TEORİSİ : Darbe Genişlik Modülasyonu (PWM), elektrik gücünü kontrol etmek için kullanılan bir tekniktir. Biz LED'lerin parlaklığını kontrol etmek için, burada PWM tekniğini kullanacağız. Aşağıdaki diyagram, Arduino PWM çıkışlarından birinin sinyalini göstermektedir. Kabaca her 1/500 saniyede, PWM çıkışı bir darbe üretecektir. Bu darbenin uzunluğu 'analogWrite' fonksiyonu ile kontrol edilir. Yani 'analogWrite(0)' kodu herhangi bir darbe üretmeyecektir. 'analogWrite (255)' komutu ise yeni darbe gelene kadar çıkışı 5 Volt seviyesinde tutacaktır. Eğer ‘analogWrite’ komutuna, 0 ile 255 arasında bir değer ataması yaparsak, atadığımız değere göre bir darbe üretilecektir. Arduino çıkışımızın 5 Voltta kalma süresini, bir PWM peryodunun %5’ i olarak ayarlarsak, çıkışımıza sadece % 5 oranında elektriki güç aktarmış oluruz. PWM peryodunun %90’ ı süresince çıkışımızı enerjilendirirsek, bu durumda çıkışa bağlı yükümüz elektriki gücün %90’ ını alacaktır. Biz LED’ in bu kısa süre içerisinde yanıp söndüğünü göremeyiz. Bize göre; sadece LED’in parlaklığı değişiyormuş şeklinde görülür
  • 115. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.1: MALZEME LİSTESİ: Bu derste anlatılan projeyi uygulamak için, aşağıdaki parçalar gerekecektir. Parçalar-Adet Diffuse RGB 10mm LED - 1 Adet 270 Ω Direnç (kırmızı, mor, kahverengi çizgili) - Biraz sönük olmasını isterseniz 1KΩ’ luk direnç kullanabilirsiniz – 3 Adet Yarım boy BreadBoard – 1 Adet Arduino Uno R3 Kartı – 1 Adet Jumper tel paketi – 1 Adet
  • 116. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.2. BREADBOARD BAĞLANTISI RGB LED’ in dört bacağı vardır. LED paketi içindeki her bir LED' in Anod(+) bacakları dışarıya çıkarılmıştır. Katod (-) uçları ise, LED paketi içinde birbirine bağlanmış ve tek bir bacak olarak LED paketinin dışına çıkarılmıştır. Ortak Katod(-) uç; LED paketinin düz tarafından bakıldığında ikinci bacaktır. Aynı zamanda, bu dört bacak içindeki en uzun bacaktır. Bu bacağı Arduino kartınızda GND ucuna bağlayacaksınız.
  • 117. LED’ den geçen akımı sınırlandırmak için 270Ω direnç kullanmak gereklidir. Arduino kartındaki 9,10 ve 11 numaralı çıkışları, 270Ω’ luk dirençler üzerinden, RGB LED'in üç Anod(+) ucuna bağlayınız. Arduino Kartınızın 9,10 ve 11 nolu uçları PWM çıkışı üretmektedir. PWM hakkında daha ayrıntılı bilgi için PWM TEORİSİ konusuna bakınız. Uyarı: Eğer Ortak Anodlu(+) LED kullanıyorsanız uzun bacağı GND’ ye değil, +5V ucuna bağlayınız. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.2: BREADBOARD BAĞLANTISI
  • 118. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.3: RGB RENKLERİ Kırmızı, yeşil ve mavi ışık miktarlarını değiştirerek istediğiniz herhangi bir renk elde etmemizin nedeni, gözümüzün içinde üç tür ışık reseptörü olmasıdır (kırmızı, yeşil ve mavi). Gözünüz ve beyniniz kırmızı, yeşil ve mavi renklerinin miktarları işler, ve bu miktarları bir renk yelpazesine dönüştürür. Bir bakıma, üç LED kullanarak, biz gözlerimizi kandırıyoruz. Aynı düşünceyi, kırmızı, yeşil ve mavi renk noktaları(pikselleri) kullanan LCD ekranlar ve TV'ler de kullanılır. Her üç LED parlaklığını da, aynı olacak şekilde ayarlarsak, gözümüze görünen ışığın rengi beyaz olacaktır. Mavi LED’in enerjisini keserseniz, sadece kırmızı ve yeşil LED'ler ışık verir. Bu durumda renk açık sarı görünür. Kırmızı, yeşil ve mavi LED’lerin parlaklığını ayrı ayrı kontrol edersek, herhangi bir renk karışımını elde edebiririz. Siyah bir renk olarak kabul edilmez. Daha ziyade ışık yokluğu olarak kabul edilebilir. Eğer bütün LED’ lerimizi kapatırsak siyah renk elde edebiliriz.
  • 119. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI) Aşağıdaki test programında renkler sırası, kırmızı, yeşil, mavi, sarı, mor, ve aqua olarak görünecektir. Bu renkler, standart bilgisayar renkleridir. /*RGB LED*/ int redPin = 11; int greenPin = 10; int bluePin = 9; //Ortak Anodlu LED kullanılıyorsa aşağıdaki // komut satırını aktif yapınız.( uncomment) //#define COMMON_ANODE void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { setColor(255, 0, 0); // red delay(1000); setColor(0, 255, 0); // green delay(1000); setColor(0, 0, 255); // blue delay(1000); setColor(255, 255, 0); // yellow delay(1000); setColor(80, 0, 80); // purple delay(1000); setColor(0, 255, 255); // aqua delay(1000); } void setColor(int red, int green, int blue) { #ifdef COMMON_ANODE red = 255 - red; green = 255 - green; blue = 255 - blue; #endif analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } Bu örnekte #ifdef #endif ve #define gibi önişlemci (preprocessor) deyimleri kullanılmıştır. #define komutu ile COMMON_ANODE satırı aktif yapılırsa red, green, ve blue değerleri 255 sayısından çıkarılmaktadır. Burada #ifdef #endif ve #define kullanımının tek amacı; programcının donanımda yapacağı bir değişiklikte ( Ortak Anodlu LED kullanmak), programın da buna kolaylıkla adapte olabilmesini sağlamaktır.
  • 120. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI) Bu taslağı deneyiniz. Bu taslağı parçalayıp ayrıntılı bir şekilde inceleyeceğiz. Taslak; Arduino pinlerinden hangisinin, hangi renk için kullanılacağını belirlemekle başlar. int redPin = 11; int greenPin = 10; int bluePin = 9; Bir sonraki adım 'setup' fonksiyonunu yazmaktır. Daha önce derslerde gördüğünüz gibi, 'setup' fonksiyonu sadece resetten sonra bir kez çalıştırılır. Bu durumda, yapmak zorunda olduğunuz görev, üç kart pinini çıkış olarak tanımlamaktır. void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); }
  • 121. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI) 'loop' fonksiyonuna göz atmadan önce, taslağımızdaki en son fonksiyona bir göz gezdirelim. void setColor(int red, int green, int blue) { analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } Bu fonksiyon, üç argüman içerir. RED ,GREEN ve BLUE LED'lerin parlaklığı için kullanılır. Her renk için 0 sayısı, LED sönük anlamına gelir ve 255 maksimum parlaklık anlamına gelir. Bu durumuda ‘setcolor’ fonksiyonuna atayacağımız sayı aralığı 0-255 arasında olacaktır. ‘setcolor’ fonksiyonu çalıştırıldığı zaman, her bir LED’ in parlaklığını ayarlamak için 'analogWrite' fonksiyonunu çağırır. Dikkat edilirse ‘setcolor’ fonksiyonu kullanıcı tarafından oluşturulmuş bir fonksiyondur. Eğer 'loop' fonksiyonuna bakarsak, bir saniye aralıklarla hangi rengin görüntülenmek istendiğini görürsünüz. `Setcolor` fonksiyonunun, `loop` fonksiyonu içerisinden çalıştırılması ile RED, GREEN, BLUE değerlerini değiştirerek birer saniye aralıklarla istediğiniz rengi elde edersiniz.
  • 122. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.4: ARDUINO TASLAĞI ( PROGRAMI) void loop() { setColor(255, 0, 0); // red delay(1000); setColor(0, 255, 0); // green delay(1000); setColor(0, 0, 255); // blue delay(1000); setColor(255, 255, 0);// yellow delay(1000); setColor(80, 0, 80); // purple delay(1000); setColor(0, 255, 255);// aqua delay(1000); } Taslak programınıza yeni renkler eklemeyi deneyin. LED’ lerdeki Renk efektinin değiştiğini göreceksiniz. Uyarı: Ortak Anot(+) RGB LED kullanıyorsanız doğru rengi elde etmek için ‘AnalogWrite’ fonksiyonunun değerlerini değiştirmek zorundasınız. Bu durumda girdiğiniz renk değeri 255’ den çıkarılır. (red = 255 - red; gibi) Eğer ortak Katod(-) RGB LED kullanıyorsanız, aşağıdaki satırı yorum karakterlerini ( // ) kullanarak iptal ediniz! // #define COMMON_ANODE Satırın sol tarafındaki // işaretleri, bu satırın Arduino IDE derleyicisi tarafından dikkate alınmayacağını gösteriyor.
  • 123. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.5: RENKLERİ ARDUINO RGB LED UYGULAMASI İLE GERÇEKLEŞTİRMEK İnternet sayfalarında ve bilgisayarımızda oluşan bütün renkler daha önce de belirtildiği gibi üç temel rengin (RGB) karışımı ile oluşur. Ayrıntılı bilgi için aşağıdaki linke bakınız: https://tr.wikipedia.org/wiki/Web_renkleri Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal siyah #000000 gümüş #c0c0c0 bordo #800000 kırmızı #ff0000 lacivert #000080 mavi #0000ff menekşe #8f00ff galibarda #ff00ff yeşil #008000 çimen #00ff00 kahve #964B00 sarı #ffff00 teal #008080 cyan #00ffff gri #808080 beyaz #ffffff
  • 124. Bölüm 4: ARDUINO PROJELERİ Konu 4.4.5: RENKLERİ ARDUINO RGB LED UYGULAMASI İLE GERÇEKLEŞTİRMEK Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal Renk Hexadesimal siyah #000000 gümüş #c0c0c0 bordo #800000 kırmızı #ff0000 lacivert #000080 mavi #0000ff menekşe #8f00ff galibarda #ff00ff yeşil #008000 çimen #00ff00 kahve #964B00 sarı #ffff00 teal #008080 cyan #00ffff gri #808080 beyaz #ffffff Yukarıdaki tabloda görüldüğü gibi, renkler Hexadecimal(Onaltılık sayı sistemi) ile gösterilmiştir. Burada görüldüğü gibi, kırmızı rengi elde etmek # FF0000 değerini girmek gerekir. FF hexadecimal değeri, Decimal sayı sisteminde 255 değerine denk gelir. Arduino kartınızda, bu renklerden birini deneyelim. ‘setColor’ fonksiyonuna bu değerleri hexadecimal sayı sisteminde gireceğiz. ( 0x karakterleri Arduino IDE programına girilen sayının hexadecimal karakterde olduğunu söyler.) Menekşe rengini elde etmek için, kırmızı, yeşil ve mavi değerleri (Hexadecimal olarak) sırasıyla 8F, 00 ve FF olmalıdır. Böylece 'setColor' fonksiyonunun içine bu değerleri aktarabilirsiniz:
  • 125. setColor(0x8F, 0x0, 0xFF); // Menekşe rengi hexadecimal değerleri Bölüm 4: ARDUINO PROJELERİ Konu 4.4.5: RENKLERİ ARDUINO RGB LED UYGULAMASI İLE GERÇEKLEŞTİRMEK Renk değerlerinin önüne '0x' koyarak renk değerleri için Hexadecimal(onaltılık sayı sistemi) giriş yapmış olduk. ‘Loop' fonksiyonuna yukarıdaki renklerden üç renk eklemeyi deneyin. Her bir renkten sonra bir gecikme eklemeyi ihmal etmeyin.