Dijital Pinleri Çıkış Olarak Belirlemek
Arduino'da dijital pinleri çıkış olarak kullanmak, LED yakmaktan motor kontrol etmeye kadar birçok uygulamanın temelini oluşturur. Arduino'da bir dijital pini çıkış olarak kullanmak için öncelikle o pinin çıkış (OUTPUT) modunda olduğunu belirtmemiz gerekir. Bunu setup() fonksiyonu içinde, yani Arduino kartınız her başladığında bir kez çalışan bölümde yaparız.
0 ve 1 pinleri Rx ve Tx iletişim pinleridir. Arduino USB üzerinden iletişim için bu pinleri kullanır. Ayrıca bu pinleri kullanabilmemiz için dışarıya da çıkarılmıştır. Bu pinleri dijital giriş/çıkış için kullanabiliriz ama bu pinler usb iletişim için de kullanıldığı için Arduino'ya program yüklerken yada seri monitör kullanırken bu pinlerin boş olması gerekir. Yoksa usb iletişiminde yada bu pinlere bağlanan komponentlerin çalışmasında sorunlar çıkabilir.
Dijital pinler üzerinden maximum 40mA'i geçmelidir. Tüm pinlerden çekilen toplam akım 200mA i geçmemelidir.
Dijital pinleri çıkış olarak kullanmak için 2 yol vardır:
- pinMode() Fonksiyonu İle
- Yön Kayıtçısına Erişim İle
1. pinMode() Fonksiyonu İle Pinleri Çıkış Olarak Belirlemek
Bir pini çıkış olarak ayarlamak için pinMode() fonksiyonunu kullanırız. Şu şekilde:
pinMode(pinNumarası, MOD);
pinNumarası : Ayarlamak istediğiniz dijital pinin numarasıdır (örneğin 2, 3, 13 vb.).
MOD : Pin'in çalışma modunu belirtir. Çıkış için OUTPUT (büyük harflerle) kullanırız.
Örnek:
void setup()
{
pinMode(13, OUTPUT); // Pin 13'ü çıkış olarak ayarla
}
void loop()
{
// Buraya kodunuzu yazacaksınız
}
2. Yön Kayıtçısına Erişim İle Pinleri Çıkış Olarak Belirlemek
Arduino'da pinlerin çıkış olarak belirlenmesi için "yön kayıtçısı" nı kullanabiliriz. Bunlar:
DDRB : Port B yön kayıtçısı
DDRC : Port C yön kayıtçısı
DDRD : Port D yön kayıtçısı
Bu kayıtçılara yükleyeceğimiz değerler ile Arduino portlarını çıkış olarak belirleyebiliriz. Aşağıdaki örnekteki gibi:
DDRD = B11111111; : Arduino D portunun tüm pinleri çıkış yapıldı. Binary sayı kullanıldı.
DDRD = 0b11111111; : Arduino D portunun tüm pinleri çıkış yapıldı. Binary sayı kullanıldı.
DDRD = 0xFF; : Arduino D portunun tüm pinleri çıkış yapıldı. 16 lık yani hexedecimal sayı kullanıldı.
Dijital Pinlere Değer Yazmak
Pini çıkış olarak ayarladıktan sonra, o pine yüksek (HIGH) veya düşük (LOW) bir voltaj değeri yazabiliriz. Bunun için 2 yol vardır:
- digitalWrite() Fonksiyonu İle
- Port Kayıtçısına Erişim İle
1. digitalWrite() Fonksiyonu
Dijital bir pine değer yazmak için digitalWrite() fonksiyonunu kullanırız. Şu şekilde:
digitalWrite(pinNumarası, DEĞER);
pinNumarası: Değer yazmak istediğiniz dijital pinin numarası.
DEĞER : Pine yazmak istediğiniz mantıksal değerdir.
HIGH : Pine +5V (veya Arduino modelinize göre 3.3V) gönderir. Bu genellikle bir LED'i yakar veya bir röleyi tetikler.
LOW : Pine 0V (GND) gönderir. Bu genellikle bir LED'i söndürür veya bir röleyi kapatır.
Örnek: Pin 13'ü yüksek yaparak LED'i yakmak ve sonra düşük yaparak söndürmek:
void setup()
{
pinMode(13, OUTPUT); // Pin 13'ü çıkış olarak ayarla
}
void loop()
{
digitalWrite(13, HIGH); // Pin 13'ü yüksek yap (LED yanar)
delay(1000); // 1 saniye bekle (1000 milisaniye)
digitalWrite(13, LOW); // Pin 13'ü düşük yap (LED söner)
delay(1000); // 1 saniye bekle
}
2. Port Kayıtçısına Erişim İle Pinlere Değer Yazma
Arduino'da pinlere değer yazmak için "port kayıtçısı" nı kullanabiliriz. Bunlar:
PORTB : Port B kayıtçısı
PORTC : Port C kayıtçısı
PORTD : Port D kayıtçısı
Bu kayıtçılara yükleyeceğimiz değerler ile Arduino pinlerine değer yazabiliriz. Aşağıdaki örnekteki gibi:
PORTD = B11111111; : Arduino D portunun tamamına binary türünde 1 gönderildi.
PORTD = 0b11111111; : Arduino D portunun tamamına binary türünde 1 gönderildi.
PORTD = 0xFF; : Arduino D portunun tamamına hexadecimal türünde 1 gönderildi.
PORTD = 16; : Arduino D portuna decimal türünde 16 sayısı gönderildi.
1. Örnek Program Kodları
int i;
void setup()
{
pinMode(8, OUTPUT); //Arduino'nun 8. pini çıkış yapıldı.
pinMode(9, OUTPUT); //Arduino'nun 9. pini çıkış yapıldı.
pinMode(10, OUTPUT); //Arduino'nun 10. pini çıkış yapıldı.
pinMode(11, OUTPUT); //Arduino'nun 11. pini çıkış yapıldı.
pinMode(12, OUTPUT); //Arduino'nun 12. pini çıkış yapıldı.
}
void loop()
{
for (i = 8; i < 13; i++)
{
digitalWrite(i, HIGH); //Arduino'nun i. pini 1 yapıldı.
delay(500);
digitalWrite(i, LOW); //Arduino'nun i. pini 0 yapıldı.
delay(500);
}
digitalWrite(10, 1); //Arduino 10 nolu pine 1 değeri gönderildi.
delay(1000);
digitalWrite(10, 0); //Arduino 10 nolu pine 0 değeri gönderildi.
delay(1000);
}
2. Örnek Program Kodları
void setup()
{
DDRB = B11111111; //Arduino B portunun tüm pinleri çıkış yapıldı. Binary sayı kullanıldı.
DDRD = 0b11111111; //Arduino D portunun tüm pinleri çıkış yapıldı. Binary sayı kullanıldı.
DDRC = 0xFF; //Arduino C portu portunun tüm pinleri çıkış yapıldı. 16 lık yani hexedecimal sayı kullanıldı.
}
void loop()
{
PORTB = B11111111; //Arduino B portunun tamamında 1 gönderildi.
delay(500);
PORTB = B00000000; //Arduino B portunun tamamına 0 gönderildi.
delay(500);
PORTD = 0b11110000; //Arduino D portunun veri gönderildi.
delay(500);
PORTD = 0b00000000; //Arduino D portunun tamamında 0 gönderildi.
delay(500);
PORTC = 0xFF; //Arduino C portunun tamamında 1 gönderildi.
delay(500);
PORTC = 0x00; //Arduino C portunun tamamında 0 gönderildi.
delay(500);
PORTC = 12; //Arduino C portuna 10 luk değerde yani decimal 12(binary:00001100) gönderildi.
delay(500);
PORTC = 0; //Arduino C portuna 10 luk değerde yani decimal 0 gönderildi.
delay(500);
}
2. Örnek Devre Şeması
_______________________________________________________________________________________________________________________________________________________
0 comments:
Yorum Gönder