
Bir önceki konuda yazdığımız ledimizi devamlı yanık bırakma programımız şu şekildeydi
#define led 13
void setup() {
void setup() {
pinMode(led,OUTPUT);
}
void loop() {
}
void loop() {
digitalWrite(led,HIGH);
}
}
bu programımıza şimdi delay() fonksiyonunu kullanarak gecikme ekleyeceğiz ve ledimiz bir süre yanık bir süre sönük olacak .
Önce delay() fonksiyonundan bahsedelim. delay() fonksiyonu arduino kütüphanesi içinde olan ve ( ) parantezleri arasına yazılan miktar kadar milisaniye cinsinden bekleme / gecikme sağlayan bir fonksiyondur.
delay(1000) demek 1000msn yani 1sn bekle demektir. delay() fonksiyonu sırasında mikrodenetleyici herhangi başka bir işlem yapamaz belirtilen süre kadar bekler.
Bir diğer delay() fonksiyonumuz delayMicroseconds() fonksiyonudur. Bu fonksiyon ise mikrosaniye olarak bekleme sağlar.
delay(100) : 100milisaniye bekle
delayMicroseconds(100) : 100 mikrosaniye bekle
program yazarken delay() fonksiyonlarına içersine sayı yerine bu sayının saklandığı değişken isimleride yazabiliriz. Örneğin delay(sure) fonksiyonunda sure değişkeni içersindeki bilgi kadar bekleme yapılır. delay() fonksiyonları değişken tanımlamaları , delay( ) için unsigned long , delayMicroseconds( ) için ise unsigned int türünden yapılmalıdır.
örneğin
unsigned long sure=250;
delay(sure); komutu 250 milisaniyelik gecikeme sağlar.
unsigned int bekle = 250;
delayMicroseconds(bekle); 250 mikrosaniyelik gecikme sağlar.
buna göre 1sn aralıkla yanıp sönen led programımız
şeklinde olacaktır. Programımıza yeni eklediğimiz komutlar kırmız renkle gösterilmiştir.
programda ;
digitalWrite(led,HIGH); komutu led in bağlı olduğu D13 pininin çıkışını HIGH yani lojik 1 yapar. ve led yanar
delay(1000); 1000 milisaniye bekler led yanık kalır
digitalWrite(led,LOW); komutu led in bağlı olduğu D13 pininin çıkışını LOW yani lojik 0 yapar. ve led soner.
delay(1000); 1000 milisaniye bekler led sönük kalır
ve bu komutlar void loop() fonksiyonu içinde olduğundan dolayı, 1000msn led yanık 1000msn led sönük işlemi devamlı olarak tekrarlanır..
aynı işlemi Atmega328p'nin kaydedicilerini kullanarak yaparsak
#define led 5
void setup() {
DDRB |=(1<<led);
}
void loop()
{
PORTB |=(1<<led);
delay(1000);
PORTB &=~(1<<led);
delay(1000);
}
şeklinde olacaktır.
Önce delay() fonksiyonundan bahsedelim. delay() fonksiyonu arduino kütüphanesi içinde olan ve ( ) parantezleri arasına yazılan miktar kadar milisaniye cinsinden bekleme / gecikme sağlayan bir fonksiyondur.
delay(1000) demek 1000msn yani 1sn bekle demektir. delay() fonksiyonu sırasında mikrodenetleyici herhangi başka bir işlem yapamaz belirtilen süre kadar bekler.
Bir diğer delay() fonksiyonumuz delayMicroseconds() fonksiyonudur. Bu fonksiyon ise mikrosaniye olarak bekleme sağlar.
delay(100) : 100milisaniye bekle
delayMicroseconds(100) : 100 mikrosaniye bekle
program yazarken delay() fonksiyonlarına içersine sayı yerine bu sayının saklandığı değişken isimleride yazabiliriz. Örneğin delay(sure) fonksiyonunda sure değişkeni içersindeki bilgi kadar bekleme yapılır. delay() fonksiyonları değişken tanımlamaları , delay( ) için unsigned long , delayMicroseconds( ) için ise unsigned int türünden yapılmalıdır.
örneğin
unsigned long sure=250;
delay(sure); komutu 250 milisaniyelik gecikeme sağlar.
unsigned int bekle = 250;
delayMicroseconds(bekle); 250 mikrosaniyelik gecikme sağlar.
buna göre 1sn aralıkla yanıp sönen led programımız
#define led 13
void setup() {
void setup() {
pinMode(led,OUTPUT);
}
void loop() {
}
void loop() {
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);
}
delay(1000);
digitalWrite(led,LOW);
delay(1000);
}
şeklinde olacaktır. Programımıza yeni eklediğimiz komutlar kırmız renkle gösterilmiştir.
programda ;
digitalWrite(led,HIGH); komutu led in bağlı olduğu D13 pininin çıkışını HIGH yani lojik 1 yapar. ve led yanar
delay(1000); 1000 milisaniye bekler led yanık kalır
digitalWrite(led,LOW); komutu led in bağlı olduğu D13 pininin çıkışını LOW yani lojik 0 yapar. ve led soner.
delay(1000); 1000 milisaniye bekler led sönük kalır
ve bu komutlar void loop() fonksiyonu içinde olduğundan dolayı, 1000msn led yanık 1000msn led sönük işlemi devamlı olarak tekrarlanır..
aynı işlemi Atmega328p'nin kaydedicilerini kullanarak yaparsak
#define led 5
void setup() {
DDRB |=(1<<led);
}
void loop()
{
PORTB |=(1<<led);
delay(1000);
PORTB &=~(1<<led);
delay(1000);
}
şeklinde olacaktır.
Yorumlar
Yorum Gönder