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
« : 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. 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. #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ü:Arduino dosyaları ve LCD Assistant programı konu ekinde mevcuttur.
437
« : 22 Kasım 2015, 15:32:19 »
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: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. 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
« : 15 Kasım 2015, 23:30:49 »
439
« : 15 Kasım 2015, 12:43:03 »
Uygulama videosu: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
« : 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. | Ö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. |
| 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. |
| 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. Ş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ı 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öndermeHat 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:// 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ı:// 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
« : 31 Ekim 2015, 23:32:13 »
Kodlamada pratiklik olması bakımından konunun ilk mesajına farklı bir arduino kodlamasına ait dosyalar eklenmiştir. (kısa_kod.rar)
442
« : 30 Ekim 2015, 00:58:34 »
443
« : 25 Ekim 2015, 23:46:34 »
444
« : 18 Ekim 2015, 23:38:49 »
445
« : 18 Ekim 2015, 04:34:44 »
Bu devre istek üzerine yapılmıştır. Devreye ait dosyalar konu ekinde mevcuttur. Arduino kodları: 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
« : 17 Ekim 2015, 14:52:34 »
447
« : 15 Ekim 2015, 23:22:22 »
Konuya ait video ve resimler eklenmiştir.
448
« : 11 Ekim 2015, 18:12:13 »
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ı devresiMalzeme listesi:Arduino kodları: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
« : 10 Ekim 2015, 20:49:03 »
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
« : 08 Ekim 2015, 23:52:48 »
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
|