Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Mesajlar - Hasan ERTÜRK

Sayfa: 1 ... 28 29 [30] 31 32 ... 45
436
Display uygulamaları / 2. 5110 lcd ekran kullanımı
« : 27 Kasım 2015, 11:11:16 »
Bu dersimizde nokia5110 ekranına arduino ile yazı ve resim yazdırma olayını öğreneceğiz.

5110 lcd kullanımı hakkında video:
Meraklı maymundan Çağan Bey güzel anlatmış. Ben de faydalandım. Buradan video için kendisine teşekkür ederiz.

<iframe width="640" height="385" src="//www.youtube.com/embed/bAhEQXsLaWg?fs=1&start=" frameborder="0" allowfullscreen></iframe>


Nokia 5110 lcd ile arduino arasındaki bağlantılar:


Arduino kütüphanesinin eklenmesi:
Nokia 5110 lcd ekranı arduino ile beraber kullanabilmek için 5110 kütüphanesini arduino programımıza eklememiz gerekiyor. Söz konusu kütüphaneyi konu ekinden ya da kütüphane yapımcısının sitesinden indirebilirsiniz.

Kütüphanemizi indirdikten sonra aşağıdaki resimde görüldüğü şekilde kütüphane dosyamızı çağırıp arduino programımıza ekliyoruz. Bu işlemi her uygulama için ayrı ayrı yapmamıza gerek yok. Bir kere eklendi mi tamamdır.



Nokia 5110 LCD kütüphanesi komutları:


Ekrana resim yazdırma:
Ekrana resim yazdırmak için öncelikle internetten bmp uzantılı bir resim buluyoruz. Paintte de kendiniz hazırlayabilirsiniz. Daha sonra bu resimi LCD Assitant programı ile c uzantılı olacak şekilde kaydedip arduinoprojemizin bulunduğu klasöre atıyoruz.



İlgili proje dosyamız açıldığında bu c uzantılı dosya program sekmesinde görüntülenecektir.


4'lü gruplar halinde verilen kodların üzerinde yazan satırlardaki kodları aşağıdaki kodlarla değiştiriyoruz.
Kod: [Seç]
#include <avr/pgmspace.h>
const unsigned char arduino5110 [] PROGMEM={

Bu örnekte c uzantılı dosyamızın adı arduino5110 olduğundan 2. satırdaki arduino5110 yazısına dikkat ediniz. Bu bölümü kendinize göre düzenleyiniz.

Arduino kodlarımız:
#include <LCD5110_Basic.h> // LCD kütüphanesi eklendi
extern uint8_t SmallFont[];
LCD5110 myGLCD(8,9,10,11,12); // CD pinlerinin hangi Arduino pinlerine bağlı olduğunu belirtiyoruz
extern uint8_t arduino5110[]; // Eklemek istediğimiz resimi belirttik
void setup()
{
  pinMode(7, OUTPUT); // LCD ekranın arkaplan aydınlatmasına giden pini çıkış olarak ayarlıyoruz
  digitalWrite(7,HIGH); // Ekrana aydınlatıldı
  myGLCD.InitLCD(); // Ekranı başlatıldı
  myGLCD.setContrast(70); //0 ila 127 arası bir değer verilebilir
}
void loop()
{  
    myGLCD.clrScr(); //Ekranı temizliyoruz.
    myGLCD.drawBitmap(0, 0, arduino5110, 84, 48); //Resmi çizildi.
    delay(1000); //1 sn bekle   
    myGLCD.clrScr(); //Ekranı temizliyoruz
    myGLCD.setFont(SmallFont);
    myGLCD.print("TEMRINLERIM", CENTER, 12);
    myGLCD.print(".ORG", CENTER, 18);
    myGLCD.print("05443420138", CENTER, 36);
    delay(1000); // 1 sn bekle
}


Bu kodlara ait video görüntüsü:
<iframe width="640" height="385" src="//www.youtube.com/embed/uFSFD6prYe8?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Arduino dosyaları ve LCD Assistant programı konu ekinde mevcuttur.

437
Bu dersimizde 24 voltluk bir aküdeki gerilim dalgalanmasını dijital veriye dönüştürüp şarz seviyesini ledlerle gözlemleyeceğiz. Aynı zamanda akünün şarz durumuna göre değişen 23,4 Volt ile 25,2volt arasındaki gerilim değeri 0 - 10 volt arasında orantılı olarak değişkene dönüştürülüp plcnin 0-10 volt aralığında çalışan analog girişine uygulanacak.

Aslında bu çalışmayı konrolkalemi.com sitesinde sorulan bir soru üzerine hem probleme yardımcı olma hem de mevcut bilgilerimi pekiştirme amacıyla yaptım.

Söz konusu sitede sorulan probleme ait açılan konunun içeriği şöyle:
Alıntı
Arkadaşlar merhaba,

Benim şöyle bir problemim var.

12 voltluk 2 adet seri bağlı akümüz var. Yani 24 volt'luk bir enerji. Benim yapmak istediğim şey ise akünün doluluk oranını bir PLC yardımıyla ölçmek. Bunu da PLC'nin 0-10 volt analog girişinden yapıyorum.

Akü tam dolu iken 25,20 Volt veriyor. Ben bu voltajı potans yardımı ile 10 volta düşürebiliyorum.
Akü tam dolu iken 25,20 Volt - potansta 10,00 Volt
Akü tam boş iken 23,40 Volt - potansta 9,28 Volt okuyorum.

10 volt ile 9,28 volt arasında bir skala yapmam gerekiyor. yani % yüzdelik dilimde bu da çok hassas olmuyor.
10 volt'ta % 100
9,28 volt'ta %1

İhtiyacım olan şey ise şu; mesela 25,20 voltta 10 volt, 9,28 voltta ise 0 volta yakın bir voltaj elde edebileceğimiz bir devre var mı veya yapılabilir mi? Opamp devrelerinin tam ters mantıkla çalıştığını düşünüyorum. Bu konuda bilgisi olan arkadaşlardan yardım bekliyorum.

<iframe width="640" height="385" src="//www.youtube.com/embed/uORA4ABH1CQ?fs=1&start=" frameborder="0" allowfullscreen></iframe>









Devre şemasına ait isis çizimi ve hex dosyası konu ekinde mevcuttur.
Elimde optokuplör olmadığından demo devreye optokuplörleri eklemedim.
Devre isis simülasyonunda çalışmıştır.

Arduino kodlarımız:
int akumulator = 0; 
void setup() 
{
    for (int i=0; i<11; i++)
  {
      pinMode (i, OUTPUT);
    }
}
void loop()
{
    for (int i=3; i<14; i++){
      digitalWrite(i, LOW);
    }    
   int akumulatorRead = map(analogRead(akumulator), 949, 1023, 0, 10);
   int cikis_voltaji = constrain(akumulatorRead, 0, 10);
   digitalWrite(cikis_voltaji, HIGH);
   delay(200);
   digitalWrite(cikis_voltaji, LOW);
}


438
Genel sohbet / T cetveline alternatif çizim aracı
« : 15 Kasım 2015, 23:30:49 »
Kimi zaman masa kenarlarının 90 derece açıda olmaması, ovallik olması ve sıkışık alanlarda fiziki yetersizlikler nedeniyle T cetvelini kullanabilmek mümkün olmuyor. Masaya zarar vermeden ve masada modifiye yapmadan problemi bu şekilde çözdük.






439
Uzaktan kontrol / 8. Bluetooth İle Led Kontrol
« : 15 Kasım 2015, 12:43:03 »
Uygulama videosu:
<iframe width="640" height="385" src="//www.youtube.com/embed/AbD8VIZzAGA?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Devremizin fotoğrafı:


Bu dersimizde bluetooth ve android cihazımızla 3 adet ledi yakıp söndürmeyi öğreneceğiz. İhtiyaca binaen ledlerin yerine birer röle sürererek ampül, ısıtıcı, klima, tv gibi farklı cihazları android cihazınız üzerinden açıp kapatabilirsiniz.

Andoid uygulaması yazılımı Yusuf ELOSMAN (Karadeniz Teknik Üniversitesi/Bilgisayar Mühendisliği) tarafından yapılmıştır. Söz konusu android uygulamasını buraya tıklayıp ya da arama motorlarında Arduino Bluetooth Led Control diye aratarak  android cihazınıza kurabilirsiniz.

Gerekli Malzemeler:
- Arduino Uno
– Bluetooth Modül (HC-05 / HC-06 / HC-07 ) Herhangi birini kullanabilirisiniz.
-3 adet Led
-3 adet 220 Ohm luk direnç
-Jumper
-Android işletim sistemine sahip herhangi bir cihaz

Devre şeması:

Fritzing çizimini konu ekinden indirebilirsiniz.

Arduino kodlarımız:
int data;
int KIRMIZI=13;
int SARI=12;
int YESIL=11;
void setup()
{
pinMode(KIRMIZI,OUTPUT);
pinMode(SARI,OUTPUT);
pinMode(YESIL,OUTPUT);
Serial.begin(9600);   //Seri iletişimi başlatır
}
void loop()
{
if(Serial.available()) // Eğer Bluetooth bağlantısı varsa kodaları çalıştırır
{
int data = Serial.read();
delay(100);
if(data=='1')
digitalWrite(KIRMIZI,1);
if(data=='2')
digitalWrite(KIRMIZI,0);
if(data=='3')
digitalWrite(SARI,1);
if(data=='4')
digitalWrite(SARI,0);
if(data=='5')
digitalWrite(YESIL,1);
if(data=='6')
digitalWrite(YESIL,0);
delay(100);
}
}

İhtiyaç halinde arduino dosyasını konu ekinden indirebilirsiniz.

440
Projeler / 13. Gaz alarmı
« : 07 Kasım 2015, 23:56:27 »
Bu dersimizde Trabzon Mesleki ve Teknik Anadolu Lisesi öğrencilerinin Elektronik Öğretmeni Leyla KOLOT danışmanlığında arduino ve MQ-6 gaz modülü kullanarak geliştirmekte oldukları bir gaz alarmı devresinin tasarım ve yapım aşamalarını birlikte inceleyeceğiz.

<iframe width="640" height="385" src="//www.youtube.com/embed/poBIqdAofxY?fs=1&start=" frameborder="0" allowfullscreen></iframe>Öncelikle arduinoyu yeni tanıyacak olanlar için meraklı maymundan Çağan Bey'in gayet güzel hazırladığı videoyu izleyelim.

Gaz alarmı devremizin özelliklerini maddeler halinde sıralayalım:
1. Ortamda gaz yokken devremiz pasif halde olup, ortamda her hangi bir gaz sızıntısı olmadığına dair lcd ekranda yazılan bilgilendirme yazısı haricinde çıktı vermemektedir.
2. Ortamda bir gaz sızıntısı varsa devremiz siren çalma, ortamdaki durumu lcd ekranda izleyebilme, pencereyi açma, havalandırma fanını açma ve önceden belirlediğimiz bir telefon numarasını arayarak sızıntı ihbarında bulunmak üzere toplamda 5 fonksiyonu yerine getirecek.

İşe MQ-6 gaz modülünü tanımak ile başlayalım:
MQ-6, LPG, izobütan, propan gazı algılama sensör kartıdır. 300ppm ve 10000ppm arasında propan tespit eder. Projelerinizde rahatlıkla kullanabilirsiniz.

Çalışma Gerilimi: DC 5V
Çalışma Sıcaklığı: -10 / -50 °C
Analog ve dijital olmak üzere 2 çıkışı vardır.
Analog çıkış 0 - 5 Volt aralığındadır.
İsteğe bağlı olarak analog çıkış yerine dijital çıkışı da kullanabilirsiniz. TTL çıkış vermektedir.
<iframe width="640" height="385" src="//www.youtube.com/embed/A0JxLHRLgmM?fs=1&start=" frameborder="0" allowfullscreen></iframe>Gaz sensörüne ait dijital çıkışın test edilmesi:
Sensöre ait Vcc ve GND uçlarına dc 5Volt uygulanır.
D0 çıkışı ile GND uçları arasına avometre bağlanır.
Ortamda gaz yokken yeşil ledin sönük olduğu ve avometreden 5 Volt okunduğu (lojik 1) gözlenir.
Ortamda gaz varken yeşil ledin yandığı ve avometreden 0Volt okunduğu (lojik 0) gözlenir.
<iframe width="640" height="385" src="//www.youtube.com/embed/9RQjvR8-geo?fs=1&start=" frameborder="0" allowfullscreen></iframe>Gaz sensörüne ait analog çıkışın test edilmesi:
Sensöre ait Vcc ve GND uçlarına dc 5Volt uygulanır.
DA çıkışı ile GND uçları arasına avometre bağlanır.
Ortamda gaz yokken yeşil ledin sönük olduğu ve avometreden 0 Volt okunduğu gözlenir.
Ortamda gaz varken yeşil ledin yandığı ve avometreden 5 Volt okunduğu,ortamdaki gaz azaldıkça okunan değerin sıfıra doğru düştüğü gözlenir.

Bu bilgilendirmelerden sonra konuyu hazmederek öğrenme bakımından devremizin tasarım ve yapım aşamalarını sırayla açıklayalım:

Şimdi gaz sensörümüz gaz algılayıp, analog çıkışı aktif olduğunda arduinomuzun d0 pinindeki fan ve sirenin 1 dakika süre ile çalışmasını isteyelim. Bu iş için arduino programımız ve devre şemamız aşağıdaki gibi olacaktır. Bu aşamayı geçtikten sonra devremizin diğer özelliklerini tasarlayıp uygulayacağız.

Arduino kodlarımız:
// TASARIM: LEYLA KOLOT TRABZON MESLEKI VE TEKNIK ANADOLU LISESI 2015 KASIM
int gaz_sensoru=A5;   // A5 GİRİŞİNE GAZ SENSÖRÜ İSMİ VERİLDİ. BU GİRİŞE GAZ SENSÖRÜNÜN ÇIKIŞI BAĞLANACAK
int fan_rolesi=0;     // D0 ÇIKIŞINA FAN RÖLESİ ADI VERİLDİ. BU ÇIKIŞA FAN VE SİRENİ KONTROL EDEN RÖLE BAĞLANACAK.
void setup() 
{
  pinMode(gaz_sensoru, INPUT);        // A5 PİNİ GİRİŞ YAPILDI
  pinMode(fan_rolesi, OUTPUT);        // D0 PİNİ ÇIKIŞ YAPILDI
}
void loop() 
{
// GAZ ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(gaz_sensoru) == HIGH) // GAZ SENSÖRÜNDEKİ VOLTAJ SEVİYESİ LOJİK 1 İSE
    {
      digitalWrite(0, HIGH);   // FAN VE SİREN ÇALIŞTIRILDI
      delay(60000);   // 1 DAKİKA BEKLE
      digitalWrite(0, LOW);   // FAN VE SİREN DURDURULDU
      delay(3000);  // 3 SANİYE BEKLE
    }
}


Devre şemamız:


Bu şemaya ait hex kodu arduino_fan_ve_led.cpp ismiyle konu ekinde mevcuttur.

Buraya kadar anlatılanlara ait çalışma videosu ve resim aşağıda mevcuttur. Elimde siren olmadığı için deneme devresinde siren yerine bir adet led kullandım.
<iframe width="640" height="385" src="//www.youtube.com/embed/0nTQj7y9pls?fs=1&start=" frameborder="0" allowfullscreen></iframe>



Şimdi sisteme pencereyi açmak için gerekli servo motorumuzu entegre edelim.
Kullanacağımız servo teknik özellikleri:
Marka: PowerHD 1501HG
Çalışma gerilimi: 4,8 - 6 Volt DC
Çalışma akımı (yüksüz): 4,8 Volt altında 400 mA,6 Volt altında 500 mA
Çalışma akımı (yükte): 4,8 Volt altında 2,3A, 6 Volt altında 2,5A
Tork: 4,8 Volt altında 15,5kg, 6 Volt altında 17 kg
Çalışma tepkime süresi: 4,8 Volt altında 0.16 saniye/60 derece, 6 Volt altında 0.14 saniye/60 derece
Kırmızı ve kahverengi kablolar besleme uçlarıdır. (kırmızı pozitif, kahverengi negatif)
Turuncu kablo veri kablosudur.



Servo entegre edilmiş devre şeması

<iframe width="640" height="385" src="//www.youtube.com/embed/_6gGuoGHVE4?fs=1&start=" frameborder="0" allowfullscreen></iframe>
Elimde fan motoru olmadığından video için temsili bir motor kullandım.
Video boyutunun küçük olması amacıyla da alarm süresi demo devrede 10 sn ile sınırlandırıldı.


Servo entegre edilmişarduino kodları:
// TASARIM: LEYLA KOLOT TRABZON MESLEKI VE TEKNIK ANADOLU LISESI 2015 KASIM
int gaz_sensoru=A5;   // A5 GİRİŞİNE GAZ SENSÖRÜ İSMİ VERİLDİ. BU GİRİŞE GAZ SENSÖRÜNÜN ÇIKIŞI BAĞLANACAK
int fan_rolesi=0;     // D0 ÇIKIŞINA FAN RÖLESİ ADI VERİLDİ. BU ÇIKIŞA FAN VE SİRENİ KONTROL EDEN RÖLE BAĞLANACAK.
#include <Servo.h>
Servo pencere_motoru; // SERVOYA PENCERE MOTORU ADI VERİLDİ
void setup() 
{
  pinMode(gaz_sensoru, INPUT);        // A5 PİNİ GİRİŞ YAPILDI
  pinMode(fan_rolesi, OUTPUT);        // D0 PİNİ ÇIKIŞ YAPILDI
  pencere_motoru.attach(1);         // PENCERE MOTORUNU DİJİTAL 1. PİN KONTROL EDECEK
}
void loop() 
{
  pencere_motoru.write(0);  // PENCERE KAPATILDI
// GAZ ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(gaz_sensoru) == HIGH) // GAZ SENSÖRÜNDEKİ VOLTAJ SEVİYESİ LOJİK 1 İSE
    {
      digitalWrite(0, HIGH);   // FAN VE SİREN ÇALIŞTIRILDI
      pencere_motoru.write(180);  // PENCERE AÇILDI
      delay(60000);   // 1 DAKİKA BEKLE
      digitalWrite(0, LOW);   // FAN VE SİREN DURDURULDU
      pencere_motoru.write(0);  // PENCERE KAPATILDI
      delay(3000);  // 3 SANİYE BEKLE
    }
}


Şimdi de alarm devreye girdiğinde istediğimiz bir telefon numarasını arduinomuza çevirtip bildirimde bulunacağız.
Kadranlı ya da tuşlu DP (Dial Pulsing) telefonlar eski tip telefonlar olup yavaş yavaş terk edilmektedir. Ancak bu yöntemle arduino ile numara gönderme işi kolay olduğundan bu prensipten yararlanarak arduinoyu telefon olarak kullanacağız. Ayrıca bir telefona gerek yok.

Tasarıma geçmeden önce telefon makinesi ve santral arasındaki iletişimden bahsedelim ki konu anlaşılabilir olsun:
Açma kapama (on hook ve off hook)

Telefon makinesi kapalı konumda iken, çatal altı mandalı devreyi açık tutar. Zil devresi üzerinde bulunan kapasitör ise telefon hattından doğru akım akmasını engeller. Ahize kaldırıldığında çatal altı mandalı yukarı doğru kalkar. Bu konumda telefon hatta karşı bir empedans gösterir (ahize kaldırılmadığı vakit, bu empedans çok yüksektir). Bu anda telefon makinesi ve santraldeki röle sargısı üzerinden bir akım akmaya başlar. Bu akımı
oluşturan, santral ofisindeki bataryadır. Santral, herhangi bir hattan akım çekildiğini tespit edince o abone çevir sesi jeneratörüne bağlanır. Bu aşamada abone, numara tuşlayabilir. Herhangi bir rakam algılandığı zaman çevir sesi kesilir. İki türlü numara (adres) bilgisi gönderilebilir.

Numara gönderme
Hat devresi kısa aralıklarla açılıp kapatılarak numara bilgisi aktarılır. 4 rakamını göndermek için hat 4 defa, 2 rakamı için 2 defa, 0 içinse 10 defa açılıp kapanır. Her açma kapama toplam 100ms sürer. 2 numara gönderme arasında 1/2 saniye bekleme yapılır.

Telefon çevirme fonksiyonu da eklenmiş devre şemamız ve arduino kodlarımız:


Kod: [Seç]
// TASARIM: LEYLA KOLOT TRABZON MESLEKI VE TEKNIK ANADOLU LISESI 2015 KASIM
int gaz_sensoru=A5;   // A5 GİRİŞİNE GAZ SENSÖRÜ İSMİ VERİLDİ. BU GİRİŞE GAZ SENSÖRÜNÜN ÇIKIŞI BAĞLANACAK
int fan_rolesi=0;     // D0 ÇIKIŞINA FAN RÖLESİ ADI VERİLDİ. BU ÇIKIŞA FAN VE SİRENİ KONTROL EDEN RÖLE BAĞLANACAK.
int telefon_rolesi=2; // D2 ÇIKIŞINA TELEFON RÖLESİ BAĞLANACAK
int ses_kayit_rolesi=13; // D13 ÇIKIŞINA SES KAYIT RÖLESİ BAĞLANACAK
#include <Servo.h>
Servo pencere_motoru; // SERVOYA PENCERE MOTORU ADI VERİLDİ
void setup()
{
  pinMode(gaz_sensoru, INPUT);        // A5 PİNİ GİRİŞ YAPILDI
  pinMode(fan_rolesi, OUTPUT);        // D0 PİNİ ÇIKIŞ YAPILDI
  pinMode(telefon_rolesi, OUTPUT);    // D2 PİNİ ÇIKIŞ YAPILDI
  pinMode(ses_kayit_rolesi, OUTPUT);    // D13 PİNİ ÇIKIŞ YAPILDI 
  pencere_motoru.attach(1);         // PENCERE MOTORUNU DİJİTAL 1. PİN KONTROL EDECEK
}
void loop()
{
  pencere_motoru.write(0);  // PENCERE KAPATILDI
// GAZ ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(gaz_sensoru) == HIGH) // GAZ SENSÖRÜNDEKİ VOLTAJ SEVİYESİ LOJİK 1 İSE
    {
      digitalWrite(fan_rolesi, HIGH);   // FAN VE SİREN ÇALIŞTIRILDI
      pencere_motoru.write(180);  // PENCERE AÇILDI
          digitalWrite(telefon_rolesi, HIGH);  // TELEFON AÇILDI
          delay(2000);
  // 0 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);   

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);   
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
        delay(500);
  // 0 ÇEVİR BİTTİ

  // 5 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);   
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
 
    delay(500);
  // 5 ÇEVİR BİTTİ   

  // 4 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
 
    delay(500);   
    //4 ÇWVİR BİTTİ
   
  // 4 ÇEVİR BAŞLDI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);

    delay(500);   
    //4 ÇEVİR BİTTİ

  // 3 ÇEVİR
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);   

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
 
    delay(500);
  // 3 ÇEVİR BİTTİ   

  // 0 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
       
       digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
     digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
   
    delay(500);
    // 0 ÇEVİR BİTTİ

  // 4 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
     digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

     digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
 
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
   
    delay(500); 
  // 4 ÇEVİR BİTTİ

  //2 ÇEVRİ BAŞLADI
 
     digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
   
    delay(500); 
    // 2 ÇEVİR BİTTİ


  // 8 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50); 

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

 
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);

    delay(500);
  // 8 ÇEVİR BİTTİ   

  // 9 ÇEVİR BAŞLADI


    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
     
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
     
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);
 
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
   
    delay(500);
  // 9 ÇEVİR BİTTİ   
 
  // 5 ÇEVİR BAŞLADI
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

   
    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
    delay(50);     

    digitalWrite(2, LOW);
    delay(50);
    digitalWrite(2, HIGH);
   
    delay(500);
  // 5 ÇEVİR BİTTİ   

 
      digitalWrite(ses_kayit_rolesi, HIGH);   // SES KAYIT RÖLESİ DEVREYE GİRDİ   
      delay(30000);   // 30 SANİYE BEKLE
      digitalWrite(telefon_rolesi, LOW);   // TELEFON KAPANDI
      digitalWrite(fan_rolesi, LOW);   // FAN VE SİREN DURDURULDU
      digitalWrite(ses_kayit_rolesi, LOW);   // SES KAYIT RÖLESİ DEVRE DIŞI BIRAKILDI     
      pencere_motoru.write(0);  // PENCERE KAPATILDI
      delay(3000);  // 3 SANİYE BEKLE
    }
}

Ses kayıt modülünün kullanımı:
Kayıt modülüne besleme gerilimi uygulandıktan sonra REC butonu basılır ve telefon açıldığında açıldığında dinletilmek istenen ses kayıt edilir. Modül maksimum 10 saniyelik bir ses kaydını alabilmektedir. REC butonu bırakıldığında kayıt işlemi tamamlanmış olur. Ses kaydınındevamlı dinlenebilmesi için kayıt modülü üzerindeki kısa devre elemanı aşağıdaki resimde görüldüğü şekilde P-E konumunda olmalıdır.



Şimdi de ses kayıt modülünün de eklenmiş olduğu devre şemasını ve arduino kodlarını oluşturalım:






Devrenin arduinonun üzerine geçme (shild) olarak eklenmesini isteyenler aşağıdaki baskı devreyi kullanabilir.




Arduino kodları:
Kod: [Seç]
// TASARIM: LEYLA KOLOT TRABZON MESLEKI VE TEKNIK ANADOLU LISESI 2015 KASIM
int gaz_sensoru=A5;   // A5 GİRİŞİNE GAZ SENSÖRÜ İSMİ VERİLDİ. BU GİRİŞE GAZ SENSÖRÜNÜN ÇIKIŞI BAĞLANACAK
int fan_rolesi=0;     // D0 ÇIKIŞINA FAN RÖLESİ ADI VERİLDİ. BU ÇIKIŞA FAN VE SİRENİ KONTROL EDEN RÖLE BAĞLANACAK.
int telefon_rolesi=2; // D2 ÇIKIŞINA TELEFON RÖLESİ BAĞLANACAK
int ses_kayit_rolesi=13; // D13 ÇIKIŞINA SES KAYIT RÖLESİ BAĞLANACAK
#include <Servo.h>
Servo pencere_motoru; // SERVOYA PENCERE MOTORU ADI VERİLDİ
void setup()
{
  pinMode(gaz_sensoru, INPUT);        // A5 PİNİ GİRİŞ YAPILDI
  pinMode(fan_rolesi, OUTPUT);        // D0 PİNİ ÇIKIŞ YAPILDI
  pinMode(telefon_rolesi, OUTPUT);    // D2 PİNİ ÇIKIŞ YAPILDI
  pinMode(ses_kayit_rolesi, OUTPUT);    // D13 PİNİ ÇIKIŞ YAPILDI 
  pencere_motoru.attach(1);         // PENCERE MOTORUNU DİJİTAL 1. PİN KONTROL EDECEK
}
void loop()
{
  pencere_motoru.write(0);  // PENCERE KAPATILDI
// GAZ ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(gaz_sensoru) == HIGH) // GAZ SENSÖRÜNDEKİ VOLTAJ SEVİYESİ LOJİK 1 İSE
    {
      digitalWrite(fan_rolesi, HIGH);   // FAN VE SİREN ÇALIŞTIRILDI
      pencere_motoru.write(180);  // PENCERE AÇILDI
          digitalWrite(telefon_rolesi, HIGH);  // TELEFON AÇILDI
          delay(2000);
        for (int cevir = 2; cevir <= 10;  cevir ++) {   // İLK NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);     
        for (int cevir = 2; cevir <= 5;  cevir ++) {    // İKİNCİ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50);}
          delay(450);
        for (int cevir = 2; cevir <= 4;  cevir ++) {    // ÜÇÜNCÜ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);     
        for (int cevir = 2; cevir <= 4;  cevir ++) {    // DÖRDÜNCÜ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);   
        for (int cevir = 2; cevir <= 3;  cevir ++) {    // BEŞİNCİ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);     
        for (int cevir = 2; cevir <= 4;  cevir ++) {    // ALTINCI NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);   
        for (int cevir = 2; cevir <= 2;  cevir ++) {      // YEDİNCİ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);   
        for (int cevir = 2; cevir <= 10;  cevir ++) {      // SEKİZİNCİ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);   
        for (int cevir = 2; cevir <= 1;  cevir ++) {      // DOKUZUNCU NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
          delay(450);   
        for (int cevir = 2; cevir <= 3;  cevir ++) {      // ONUNCU NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50);}
          delay(450);   
        for (int cevir = 2; cevir <= 8;  cevir ++) {      //ONBİRİNCİ NUMARA GÖNDERİLİYOR
          digitalWrite(telefon_rolesi, LOW);
          delay(50);
          digitalWrite(telefon_rolesi, HIGH);
          delay(50); }
      digitalWrite(ses_kayit_rolesi, HIGH);   // SES KAYIT RÖLESİ DEVREYE GİRDİ   
      delay(30000);   // 30 SANİYE BEKLE
      digitalWrite(telefon_rolesi, LOW);   // TELEFON KAPANDI
      digitalWrite(fan_rolesi, LOW);   // FAN VE SİREN DURDURULDU
      digitalWrite(ses_kayit_rolesi, LOW);   // SES KAYIT RÖLESİ DEVRE DIŞI BIRAKILDI     
      pencere_motoru.write(0);  // PENCERE KAPATILDI
      delay(3000);  // 3 SANİYE BEKLE
    }
}

441
Kodlamada pratiklik olması bakımından konunun ilk mesajına farklı bir arduino kodlamasına ait dosyalar eklenmiştir. (kısa_kod.rar)

443
Endüstriyel Kontrol Sistemleri / Fatek PLC Deney Seti
« : 25 Ekim 2015, 23:46:34 »






Akçaabat Çok Programlı Lisesinde çalışırken hazırladığım PLC deney seti. Okul temrinlik malzeme ve cihaz temin etmeyince olana da şef el koyunca 3 arkadaş bir plc alıp deney seti haline getirmiştik.

444
Elektronik / Triyakın optokuplör ile tetiklenmesi
« : 18 Ekim 2015, 23:38:49 »
<iframe width="640" height="385" src="//www.youtube.com/embed/EbwDdHa6Wb8?fs=1&start=" frameborder="0" allowfullscreen></iframe>








445
Led ve Buton uygulamaları / 8. Sırayla yanan 20 led
« : 18 Ekim 2015, 04:34:44 »
<iframe width="640" height="385" src="//www.youtube.com/embed/RHTZ5mLMphI?fs=1&start=" frameborder="0" allowfullscreen></iframe>





Bu devre istek üzerine yapılmıştır. Devreye ait dosyalar konu ekinde mevcuttur.

Arduino kodları:
Kod: [Seç]
int potansiyometrePin = A0;   
int led1Pin = 1;   
int led2Pin = 2;
int led3Pin = 3;   
int led4Pin = 4;
int led5Pin = 5;   
int led6Pin = 6;
int led7Pin = 7;   
int led8Pin = 8;
int led9Pin = 9;   
int led10Pin = 10;
int led11Pin = 11;   
int led12Pin = 12;
int led13Pin = 13;   
int led14Pin = 14;
int led15Pin = 15;   
int led16Pin = 16;
int led17Pin = 17;   
int led18Pin = 18;
int led19Pin = 19;   
int led20Pin = 20;
int sensorValue = 0;
void setup() {
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT); 
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT); 
  pinMode(led5Pin, OUTPUT);
  pinMode(led6Pin, OUTPUT); 
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT); 
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, OUTPUT); 
  pinMode(led11Pin, OUTPUT);
  pinMode(led12Pin, OUTPUT); 
  pinMode(led13Pin, OUTPUT);
  pinMode(led14Pin, OUTPUT); 
  pinMode(led15Pin, OUTPUT);
  pinMode(led16Pin, OUTPUT); 
  pinMode(led17Pin, OUTPUT);
  pinMode(led18Pin, OUTPUT); 
  pinMode(led19Pin, OUTPUT);
  pinMode(led20Pin, OUTPUT);   
  sensorValue = analogRead(potansiyometrePin);
  delay(2000);
  digitalWrite(led1Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led2Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led3Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led4Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led5Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led6Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led7Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led8Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led9Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led10Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led11Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led12Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led13Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led14Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led15Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led16Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led17Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led18Pin, HIGH);
  delay(sensorValue);
  digitalWrite(led19Pin, HIGH);
  delay(sensorValue); 
  digitalWrite(led20Pin, HIGH);
  delay(sensorValue);   
}
void loop()
{
 
   
}

446
<iframe width="640" height="385" src="//www.youtube.com/embed/QbMN2lsstF0?fs=1&start=" frameborder="0" allowfullscreen></iframe>



Temrin sayfasını konu ekinden indirebilirsiniz.

447
Projeler / Ynt: 53. Arduino ile PIR sensörlü alarm devresi
« : 15 Ekim 2015, 23:22:22 »
Konuya ait video ve resimler eklenmiştir.

448
Projeler / 8. Arduino ile PIR sensörlü alarm devresi
« : 11 Ekim 2015, 18:12:13 »
<iframe width="640" height="385" src="//www.youtube.com/embed/QbMN2lsstF0?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Bu dersimizde arduino ve PIR (hareket) sensörü kullanarak alarm devresi yapmayı öğreneceğiz. PIRsensörü hareket algıladığında isteğe bağlı olarak bir lambayı yakacağız ya da bir sirenin çalmasını sağlayacağız. Sistem aynı zamanda da programda belirlediğimiz bir telefon numarasını otomatik ararayarak daha önce kaydettiğimiz bir sesi dinletecektir.

Ses kayıt modülünün kullanımı:
Kayıt modülüne besleme gerilimi uygulandıktan sonra REC butonu basılır ve telefon açıldığında açıldığında dinletilmek istenen ses kayıt edilir. Modül maksimum 10 saniyelik bir ses kaydını alabilmektedir. REC butonu bırakıldığında kayıt işlemi tamamlanmış olur. Ses kaydınındevamlı dinlenebilmesi için kayıt modülü üzerindeki kısa devre elemanı aşağıdaki resimde görüldüğü şekilde P-E konumunda olmalıdır.













ISIS Devre şeması


ARES Baskı devresi


Malzeme listesi:


Arduino kodları:
Kod: [Seç]
int hareket_sensoru=A0;                    // A0 GİRİŞİNE HAREKET SENSÖRÜ İSMİ VERİLDİ
int lamba_rolesi=0;                        // D0 ÇIKIŞINA LAMBA RÖLESİ ADI VERİLDİ
int telefon_rolesi=1;                      // D1 ÇIKIŞINA TELEFON RÖLESİ ADI VERİLDİ
int ses_rolesi=2;                          // D2 ÇIKIŞINA SES RÖLESİ ADI VERİLDİ
int hareket_sensoru_durum=0;
void setup()
{
  pinMode(hareket_sensoru, INPUT);         // A0 PİNİ GİRİŞ YAPILDI
  pinMode(lamba_rolesi, OUTPUT);           // D0 PİNİ ÇIKIŞ YAPILDI
  pinMode(telefon_rolesi, OUTPUT);         // D1 PİNİ ÇIKIŞ YAPILDI 
  pinMode(ses_rolesi, OUTPUT);             // D2 PİNİ ÇIKIŞ YAPILDI
}

void loop()
{
// HAREKET ALGILANDI İSE ŞUNLARI YAP BAŞLADI
if (digitalRead(hareket_sensoru) == HIGH) // HAREKET ALGILANDI İSE ŞUNLARI YAP
   {
    hareket_sensoru_durum= digitalRead(A0);  // A0 GİRİŞİNDEKİ LOJİK SEVİYEYİ OKU
    digitalWrite(0, hareket_sensoru_durum);  // OKUNAN LOJİK SEVİYEYİ D0 ÇIKIŞINA AKTAR
    digitalWrite(1, HIGH);   // TELEFON AÇILDI
    delay(2000);
  // 0 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
  // 0 ÇEVİR BİTTİ

  // 5 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
        digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
  // 5 ÇEVİR BİTTİ   

  // 4 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);   
   
  // 4 ÇEVİR
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);   

  // 3 ÇEVİR
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);     

digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
// 4 ÇEVİR BİTTİ   

  // 4 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
    // 4 ÇEVİR BİTTİ

  // 2 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500); 
  // 2 ÇEVİR BİTTİ
 
  // 0 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);

       digitalWrite(1, HIGH);
    delay(50);   

digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);   
   
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
  // 0 ÇEVİR BİTTİ   

  // 1 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
  // 1 ÇEVİR BİTTİ   
 
  // 3 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);     

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
  // 3 ÇEVİR BİTTİ   

  // 8 ÇEVİR BAŞLADI
    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);     
digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);     
digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(50);

    digitalWrite(1, LOW);
    delay(50);
    digitalWrite(1, HIGH);
    delay(500);
    // 8 ÇEVİR BİTTİ
   // SES GÖNDERİLİYOR
    digitalWrite(2, HIGH);
    delay(30000);
    digitalWrite(2, LOW);  // SES KAPATILDI
    digitalWrite(1, LOW);  // TELEFON KAPANDI
    digitalWrite(0, LOW);  // LAMBA SÖNDÜRÜLDÜ
    }                     
// HAREKET ALGILANDI İSE ŞUNLARI YAP BİTTİ
   
}

449
Hareket sensörünün incelenmesi konulu temrin sayfasını konu ekinden indirebilirsiniz.

Temrin içeriğini indirmeden tarayıcınızda görüntülemek için buraya tıklayınız.

450
Projeler / 7. Arduino ile stop lambalarının kontrolü
« : 08 Ekim 2015, 23:52:48 »
<iframe width="640" height="385" src="//www.youtube.com/embed/AI_ZCm0B13Q?fs=1&start=" frameborder="0" allowfullscreen></iframe>













Bu proje Akçaabat İMKB Anadolu Lisesi Coğrafya Dersi Öğretmeni Ömer AYGÜN ve öğrencileri tarafından düşünülmüş ve uygulamaya konulmuştur. Projeye Trabzon ve Mesleki Teknik Anadolu Lisesi Elektronik Öğretmeni Hasan ERTÜRK teknik destek vermiş ve sistemin prototip maketi hazırlanmıştır.

Araç kullanırken fren yapmak gerektiğinde durumu algılayıp ayağımızı gazdan çekip frene basana kadar 0,7 saniye kadar zaman geçer. Bu durumda saatte 100 km ile giden bir aracı kullanan bir sürücü fren yapana kadar araç yaklaşık 20 metre daha yol alır. O halde aracın 20 metre önünde bir engel varsa daha frene basmaya bile fırsat kalmadan araç engele çarpacaktır. Yani burada saniyeler hatta milisaniyeler bile çok önem arz etmekte. 
Burada ortaya çıkan bir sorun var. O da şu:

Vites değişirken gazdan ayağımızı çektiğimizde stop lambalarının yanmaması gerek. Bu nedenle tasarım yaparken debriyaj pedalının pozisyonunu da dikkate almak gerekecek.

Şimdi gelelim konumuza. Bu gibi durumlarda arkadan gelen araçlar bizim fren yaptığımızı aracımızın stop lambalarının yanmasından fark etmekte. Özellikle ani duruşlarda arkadan gelen araç sürücülerini daha çabuk uyarabilmek için ayağımızı gazdan çektiğimiz anda daha frene henüz basamamışken uyarabilirsek hem onlar hem de bizim için çok önemli olabilecek milisaniyeleri kazanmış oluruz.

Sistemimiz ayağımızı frenden çektiğimiz anda stop lambalarının yanmasını sağlayacak. Şimdi tasarım aşamasına geçelim. Öncelikle aşağıdaki tabloda görüldüğü gibi debriyaj, fren ve gaz pedallarının alması muhtemel 8 senaryo için stop lambası, tekerlek ve fren tertibatının göstereceği tepkileri belirleyelim.



Kontrol devremizi arduino ile yapacağız. Şimdi sıra geldi yukarıdaki senaryolara uygun olarak ardiuno programını yazmaya.

Arduino kodlarımız:
int gaz_pedali=A5;                    // A5 GİRİŞİNE FREN PEDALI İSMİ VERİLDİ
int fren_pedali=A0;                   // A0 GİRİŞİNE FREN PEDALI ADI VERİLDİ
int debriyaj=A4;                      // A4 GİRİŞİNE DEBRİYAJ ADI VERİLDİ
int stop_lambasi=0;                   // D0 ÇIKIŞINA STOP LAMBASI ADI VERİLDİ
int motor=5;                          // MOTORA DİJİTAL 5 PİNİNDEN ENERJİ VERİLECEK
int hiz;                              // HIZ TANIMLAMASI
int fren_pedali_durum=0;
#include <Servo.h>                    // SERVO KÜTÜPHANESİ EKLENDİ
const int pot=A0;                     // SERVO KONTROL PİNİ
Servo tekerlek;                       // SERVONUN ADI
int potdurum=0;     
int pos = 0;    

void setup() 
{
 pinMode(fren_pedali, INPUT);         // A0 PİNİ GİRİŞ YAPILDI
 pinMode(gaz_pedali, INPUT);          // A5 PİNİ GİRİŞ YAPILDI 
 pinMode(debriyaj, INPUT);            // A4 PİNİ GİRİŞ YAPILDI 
 pinMode(stop_lambasi, OUTPUT);       // D0 PİNİ ÇIKIŞ YAPILDI
 tekerlek.attach(13);                 // SERVONUN BAĞLANACAĞI PİN
}

void loop() 
{
  // MOTOR HIZI AYARI BURADA BAŞLADI
  hiz= analogRead(gaz_pedali);        // GAZ PEDALINDAKİ VOLTAJI OKU
  hiz= map(hiz, 0, 550, 255, 0);      // OKUNAN 5 VOLT İLE 0 VOLT ARASINDAKİ VOLTAJI HIZA DÖNÜŞTÜR 
  analogWrite(motor, hiz);            // HESAPLANAN HIZI MOTORA AKTAR
  delay(10);                          // 10 ms BEKLE
  // MOTOR HIZI AYARI BURADA BİTTİ

  // STOP LAMBASI PEDALI KOMUTLARI BURADA BAŞLADI
  fren_pedali_durum= digitalRead(A0);  // A0 GİRİŞİNDEKİ LOJİK SEVİYEYİ OKU
  digitalWrite(0, !fren_pedali_durum);  // OKUNAN LOJİK SEVİYENİN TERSİNİ D0 ÇIKIŞINA AKTAR (DEVRE ONA GÖRE DİZAYN EDİLDİ)
  // STOP LAMBASI PEDALI KOMUTLARI BURADA BİTTİ
  
  // DEBRİYAJ, GAZ VE FREN PEDALLARI BASILI DEĞİLSE FREN LAMBASINI FLASH YAP BURADA BAŞLADI
   if (digitalRead(fren_pedali) == HIGH  && digitalRead(gaz_pedali) == HIGH  && digitalRead(debriyaj) == HIGH  )  
   { 
    digitalWrite(0, HIGH); 
    delay(20);  
    digitalWrite(0, LOW);
    delay(20);  
   }
   // DEBRİYAJ, GAZ VE FREN FREN PEDALLARI BASILI DEĞİLSE FREN LAMBASINI FLASH YAP BURADA BİTTİ


  // FREN TERTİBATI KODLARI BAŞLADI
  potdurum=analogRead(pot);
  pos= map(potdurum,1023,0,180,55);     // FREN PEDALINDAN DEĞER OKUYUP DÖNME AÇISINI ORANLADIK
  { 
    tekerlek.write(pos);              // YUKARIDA ORANLADIĞIMIZ DEĞERİ SERVOYA GÖNDERDİK
  } 
  // FREN TERTİBATI KODLARI BİTTİ
}


Projeye ait dosyaları konu ekinden indirebilirsiniz.

Proje istek halinde her marka vemodel araca 1000 TL ücretle tasarımcı tarafından uygulanmaktadır.

Sayfa: 1 ... 28 29 [30] 31 32 ... 45