Merhaba arkadaşlar. Arduino dersleri yanında ara ara o ana kadar anlattığımız bilgileri kapsayan projeler yayınlayacağım. Eğitim derslerindeki amacım arduino ve diğer kullandığımız elemanların nasıl kullanıldığını anlatmaktı. Olaya hakim olmak istiyorsanız kendinize projeler düşünüp hayata geçirmeniz gerekmektedir. Ancak bu şekilde öğrendiklerinizi geliştirebilir ve birleştirebilirsiniz. Çok basit led ve butonlarla bile proje üretebilirsiniz. Mesela bir butonla dört ledi sırayla çalıştırmak gibi. Ufkunuzu genişletmek ve bilgilerinizi pekiştirmek amacıyla Arduino Projeleri serisi hazırlayacağım. Umarım mucit adayı arkadaşlarım beğenirsiniz. İlerleyen zamanda derlerimiz ve projelerimizi videolar çekip pekiştireceğim. Şimdilik yazıyla size bilgilerimi, tecrübelerimi aktaracağım. Bu sıkıcı girişten sonra ilk projemizi yapalım.
Bugün buton, led, buzzer ve mesafe sensörü bilgilerimizi pekiştirecek Park Sensörü Projesi yapacağız. Şimdiden söyleyeyim biraz uzun olacak. Çünkü kullanmadığımız kodları da neden kullanmadığımızı da anlatacağım. Amaç sadece bir proje değil algoritma bbecerinizi de geliştirmek üzerine olacak. Sensörümüz üzerine bağladığımız butona basınca çalışmaya başlayacak ve çalıştığını anlamamız için açık olduğu süre boyunca ledimiz açık kalacak. Devre bağlantılarımız fritzing programında çizdiğim şekilde olacak.
Şimdi geçelim programlamaya. Programa önce pinlerimizi tanımlayarak başlayalım. Ayrıca sensör kullanımı için de süre ve mesafe değişkenlerimizi tanımlayalım. Bir butona ilk bastığımızda açık, ikinci bbastığımızda kapalı olacak şekilde programlamak için de iki değişken tanımlamamız gerekiyor. Birazdan daha detaylı açıklayacağım. Önce bir tanımlamalarımızı yapalım.Benim prototipimde pinleri resimde gördüğünüz gibi bağladım.VCC hattı tek olduğu için 13 nolu pini digitalWrite(13,HIGH); komutu kullanarak 5v kaynağı olarak kullanacağım. Bunun gibi pratik püf noktalar için ayrı bir bölüm hazırlayacağım. Siz de istediğiniz gibi bağlayabilirsiniz. Programımızın ilk kısmında yaptığımız tanımlama kodları
const int trig = 3; // trig sabitine 3 değerini atadık.
const int echo = 2; // echo sabitine 3 değerini atadık.
const int led = 4; // led sabitine 3 değerini atadık.
const int buzzer = 6; // buzer sabitine 3 değerini atadık.
const int buton = 5; // buton sabitine 3 değerini atadık.
int sure = 0; // sure değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int mesafe = 0; // mesafe değişkenini başlangıç değeri 0 olacak şekilde tanımladık.ş
int sistemDurumu = 0;// sistemDurumu değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int bip; // Buzzer bipleme aralığını yazacağımız bip değişkeni tanımladık
void setup() {
pinMode13, OUTPUT); // VCC olarak kullanabilmek için D13 pinine çıkış olarak ayarladık. .
pinMode(trig, OUTPUT); // trig pinini çıkış olarak ayarladık.
pinMode(echo, INPUT); // echo pinini giriş olarak ayarladık.
pinMode(led, OUTPUT); // led pinini çıkış olarak ayarladık.
pinMode(buzzer, OUTPUT); // buzzer pinini çıkış olarak ayarladık.
pinMode(buton, INPUT); // buton pinini girişolarak ayarladık.
Serial.begin(9600); // Bilgisayarla seri iletişimi başlattık.
digitalWrite(13, HIGH); // VCC olarak kullanabilmek için 5v çıkış verdik.
}
şeklinde olacaktır. Daha sonra void loop kısmında ana programımızı yazacağız. Programımızda mesafe sensörü kodları ve butonu aç/kapa düğmesi olarak kullanabilmek için mühürleme kodlarını kullanacağız. Bunları bilmiyorsanız Arduino Dersi 9: HC-SR04 Ultrasonik Mesafe Sensörü ve
Arduino Püf Nokta 1: Tek Butonla Led Yakıp Söndürme İncelikleri Mühürleme yazılarımızı okuyabilirsiniz. Algoritmamız "butona ilk basıldığında sistemiz başlat ve ledimizi yak, mesafeyi ölç, mesafenin durumuna göre buzzerın bir bip sesi için geçecek süresini belirle, butona tekrar basılırsa ledi ve sistemi kapat" şeklinde olacak.İlk önce mühürlememizi yapalım.
if(digitalRead(buton)== HIGH) // Eğer butona basılırsa
{
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
if(sistemDurumu == LOW){ sistemDurumu = 1;} // sistemDurumu değişkenini 0 ise 1 yap.
else if(sistemDurumu == HIGH){ sistemDurumu = 0;} // sistemDurumu değişkenini 1 ise 0 yap.
while(digitalRead(buton)== HIGH){;} // Butona basılı kaldığı sürece ana döngüye girmemesi için kendi döngümüzle oyaladık.
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
}
Şimdi butona basılınca 1, birdaha basılınca 0 olan değişkenimizi ayarladıktan sonra 1 olduğu zaman mesafeyi ölç ve mesafeyi 20,1000 ms arasındaki zamana orantılayıp gelen değeri iki bip sesi arasındaki bekleme süresi olarak kullan diyelim ve tüm kodumuzu birleştirelim. Süslü parantezler karışmasın diye ait olduğu yerle aynı renk yapacağım.
Bugün buton, led, buzzer ve mesafe sensörü bilgilerimizi pekiştirecek Park Sensörü Projesi yapacağız. Şimdiden söyleyeyim biraz uzun olacak. Çünkü kullanmadığımız kodları da neden kullanmadığımızı da anlatacağım. Amaç sadece bir proje değil algoritma bbecerinizi de geliştirmek üzerine olacak. Sensörümüz üzerine bağladığımız butona basınca çalışmaya başlayacak ve çalıştığını anlamamız için açık olduğu süre boyunca ledimiz açık kalacak. Devre bağlantılarımız fritzing programında çizdiğim şekilde olacak.
Şimdi geçelim programlamaya. Programa önce pinlerimizi tanımlayarak başlayalım. Ayrıca sensör kullanımı için de süre ve mesafe değişkenlerimizi tanımlayalım. Bir butona ilk bastığımızda açık, ikinci bbastığımızda kapalı olacak şekilde programlamak için de iki değişken tanımlamamız gerekiyor. Birazdan daha detaylı açıklayacağım. Önce bir tanımlamalarımızı yapalım.Benim prototipimde pinleri resimde gördüğünüz gibi bağladım.VCC hattı tek olduğu için 13 nolu pini digitalWrite(13,HIGH); komutu kullanarak 5v kaynağı olarak kullanacağım. Bunun gibi pratik püf noktalar için ayrı bir bölüm hazırlayacağım. Siz de istediğiniz gibi bağlayabilirsiniz. Programımızın ilk kısmında yaptığımız tanımlama kodları
const int trig = 3; // trig sabitine 3 değerini atadık.
const int echo = 2; // echo sabitine 3 değerini atadık.
const int led = 4; // led sabitine 3 değerini atadık.
const int buzzer = 6; // buzer sabitine 3 değerini atadık.
const int buton = 5; // buton sabitine 3 değerini atadık.
int sure = 0; // sure değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int mesafe = 0; // mesafe değişkenini başlangıç değeri 0 olacak şekilde tanımladık.ş
int sistemDurumu = 0;// sistemDurumu değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int bip; // Buzzer bipleme aralığını yazacağımız bip değişkeni tanımladık
void setup() {
pinMode13, OUTPUT); // VCC olarak kullanabilmek için D13 pinine çıkış olarak ayarladık. .
pinMode(trig, OUTPUT); // trig pinini çıkış olarak ayarladık.
pinMode(echo, INPUT); // echo pinini giriş olarak ayarladık.
pinMode(led, OUTPUT); // led pinini çıkış olarak ayarladık.
pinMode(buzzer, OUTPUT); // buzzer pinini çıkış olarak ayarladık.
pinMode(buton, INPUT); // buton pinini girişolarak ayarladık.
Serial.begin(9600); // Bilgisayarla seri iletişimi başlattık.
digitalWrite(13, HIGH); // VCC olarak kullanabilmek için 5v çıkış verdik.
}
şeklinde olacaktır. Daha sonra void loop kısmında ana programımızı yazacağız. Programımızda mesafe sensörü kodları ve butonu aç/kapa düğmesi olarak kullanabilmek için mühürleme kodlarını kullanacağız. Bunları bilmiyorsanız Arduino Dersi 9: HC-SR04 Ultrasonik Mesafe Sensörü ve
Arduino Püf Nokta 1: Tek Butonla Led Yakıp Söndürme İncelikleri Mühürleme yazılarımızı okuyabilirsiniz. Algoritmamız "butona ilk basıldığında sistemiz başlat ve ledimizi yak, mesafeyi ölç, mesafenin durumuna göre buzzerın bir bip sesi için geçecek süresini belirle, butona tekrar basılırsa ledi ve sistemi kapat" şeklinde olacak.İlk önce mühürlememizi yapalım.
if(digitalRead(buton)== HIGH) // Eğer butona basılırsa
{
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
if(sistemDurumu == LOW){ sistemDurumu = 1;} // sistemDurumu değişkenini 0 ise 1 yap.
else if(sistemDurumu == HIGH){ sistemDurumu = 0;} // sistemDurumu değişkenini 1 ise 0 yap.
while(digitalRead(buton)== HIGH){;} // Butona basılı kaldığı sürece ana döngüye girmemesi için kendi döngümüzle oyaladık.
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
}
Şimdi butona basılınca 1, birdaha basılınca 0 olan değişkenimizi ayarladıktan sonra 1 olduğu zaman mesafeyi ölç ve mesafeyi 20,1000 ms arasındaki zamana orantılayıp gelen değeri iki bip sesi arasındaki bekleme süresi olarak kullan diyelim ve tüm kodumuzu birleştirelim. Süslü parantezler karışmasın diye ait olduğu yerle aynı renk yapacağım.
const int trig = 3; // trig sabitine 3 değerini atadık.
const int echo = 2; // echo sabitine 3 değerini atadık.
const int led = 4; // led sabitine 3 değerini atadık.
const int buzzer = 6; // buzer sabitine 3 değerini atadık.
const int buton = 5; // buton sabitine 3 değerini atadık.
int sure = 0; // sure değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int mesafe = 0; // mesafe değişkenini başlangıç değeri 0 olacak şekilde tanımladık.ş
int sistemDurumu = 0;// sistemDurumu değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int bip; // Buzzer bipleme aralığını yazacağımız bip değişkeni tanımladık
void setup() {
pinMode(13, OUTPUT); // VCC olarak kullanabilmek için D13 pinine çıkış olarak ayarladık. .
pinMode(trig, OUTPUT); // trig pinini çıkış olarak ayarladık.
pinMode(echo, INPUT); // echo pinini giriş olarak ayarladık.
pinMode(led, OUTPUT); // led pinini çıkış olarak ayarladık.
pinMode(buzzer, OUTPUT); // buzzer pinini çıkış olarak ayarladık.
pinMode(buton, INPUT); // buton pinini girişolarak ayarladık.
Serial.begin(9600); // Bilgisayarla seri iletişimi başlattık.
digitalWrite(13, HIGH); // VCC olarak kullanabilmek için 5v çıkış verdik.
}
const int echo = 2; // echo sabitine 3 değerini atadık.
const int led = 4; // led sabitine 3 değerini atadık.
const int buzzer = 6; // buzer sabitine 3 değerini atadık.
const int buton = 5; // buton sabitine 3 değerini atadık.
int sure = 0; // sure değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int mesafe = 0; // mesafe değişkenini başlangıç değeri 0 olacak şekilde tanımladık.ş
int sistemDurumu = 0;// sistemDurumu değişkenini başlangıç değeri 0 olacak şekilde tanımladık.
int bip; // Buzzer bipleme aralığını yazacağımız bip değişkeni tanımladık
void setup() {
pinMode(13, OUTPUT); // VCC olarak kullanabilmek için D13 pinine çıkış olarak ayarladık. .
pinMode(trig, OUTPUT); // trig pinini çıkış olarak ayarladık.
pinMode(echo, INPUT); // echo pinini giriş olarak ayarladık.
pinMode(led, OUTPUT); // led pinini çıkış olarak ayarladık.
pinMode(buzzer, OUTPUT); // buzzer pinini çıkış olarak ayarladık.
pinMode(buton, INPUT); // buton pinini girişolarak ayarladık.
Serial.begin(9600); // Bilgisayarla seri iletişimi başlattık.
digitalWrite(13, HIGH); // VCC olarak kullanabilmek için 5v çıkış verdik.
}
void loop() {
if(digitalRead(buton)== HIGH) // Eğer butona basılırsa
{
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
if(sistemDurumu == LOW){ sistemDurumu = 1;} // sistemDurumu değişkenini 0 ise 1 yap.
else if(sistemDurumu == HIGH){ sistemDurumu = 0;} // sistemDurumu değişkenini 1 ise 0 yap.
while(digitalRead(buton)== HIGH){;} // Butona basılı kaldığı sürece ana döngüye girmemesi için kendi döngümüzle oyaladık.
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
}
{
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
if(sistemDurumu == LOW){ sistemDurumu = 1;} // sistemDurumu değişkenini 0 ise 1 yap.
else if(sistemDurumu == HIGH){ sistemDurumu = 0;} // sistemDurumu değişkenini 1 ise 0 yap.
while(digitalRead(buton)== HIGH){;} // Butona basılı kaldığı sürece ana döngüye girmemesi için kendi döngümüzle oyaladık.
delay(10); // Butona basılınca oluşan küçük arkları önlemek için biraz beklettik.
}
if(sistemDurumu == 1) // sistemDurumu değişkenini 1 ise sistemi başlat.
{digitalWrite(led, HIGH); // sistem başladığı için ledimizi yakıyoruz.
digitalWrite(trig, HIGH); // Mesafe ölçme kodları başlangıcı.
delay(1);
digitalWrite(trig, LOW);
sure = pulseIn(echo, HIGH);
mesafe = (sure/2) / 29.1; // Mesafe ölçme kodları sonu.
{digitalWrite(led, HIGH); // sistem başladığı için ledimizi yakıyoruz.
digitalWrite(trig, HIGH); // Mesafe ölçme kodları başlangıcı.
delay(1);
digitalWrite(trig, LOW);
sure = pulseIn(echo, HIGH);
mesafe = (sure/2) / 29.1; // Mesafe ölçme kodları sonu.
if(mesafe >=5) // eğer mesafe 5cm den büyükse mesafeyle orantılı buzzer biplesin.
{
bip = map(mesafe,0,425,20,1000); // Mesafe ile buzzer bipleme süresini orantılıyoruz. Ben 20-1000 arası sürelere orantıladım. Sizde hoşunuza gidecek şekilde orantılayabilirsiniz.
analogWrite(3,168); //Buzzerı aç
delay(bip); //Mesafeyle orantılı bekle
analogWrite(3,0); //Buzzerı kapat
delay(bip);//Mesafeyle orantılı bekle
}
else if(mesafe >= 0 && mesafe < 5 ) // Eğer mesafe 5 cmden az ise aralıksız ses çıkarsın.
bip = map(mesafe,0,425,20,1000); // Mesafe ile buzzer bipleme süresini orantılıyoruz. Ben 20-1000 arası sürelere orantıladım. Sizde hoşunuza gidecek şekilde orantılayabilirsiniz.
analogWrite(3,168); //Buzzerı aç
delay(bip); //Mesafeyle orantılı bekle
analogWrite(3,0); //Buzzerı kapat
delay(bip);//Mesafeyle orantılı bekle
}
else if(mesafe >= 0 && mesafe < 5 ) // Eğer mesafe 5 cmden az ise aralıksız ses çıkarsın.
{
analogWrite(3,168);
}
}
analogWrite(3,168);
}
}
else if(sistemDurumu == 0) // sistemDurumu değişkenini 0 ise ledi, buzzerı ve trig pinini söndür.
{
digitalWrite(led,LOW);
digitalWrite(buzzer,LOW);
digitalWrite(trig,LOW);
}
}
Eğer kafanızın karıştığı yerler veya geribildirimde bulunmak istediğiniz noktalar varsa iletişim formundan veya yorum yazarak ulaşabilirsiniz...
COMMENTS