arduino etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
arduino etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Mart 2024 Perşembe

AKVARYUM BALIKLARINI YEMLEME MAKİNESİ PROJESİ

 Selam! Bugün size, öğrencilerimle gerçekten eğlenceli bulduğumuz bir projeden bahsetmek istiyorum. Aşağıdaki hikayeyi öğrencilerim ile paylaşarak okumalarını sağladım. Bu sayede birazdan işleyeceğimiz konu ile ilgili fikir edinmelerini ve hayallerinde canlandırmalarını sağladım.

"Büyük bir telaş içindeki Kaya ailesi, uzun bir süredir bekledikleri tatil için hazırlıklarını tamamlamıştı. Valizleri paketleyip evlerini kilitleyerek güneşin tadını çıkarmak üzere yola çıktılar. Ancak, evlerinde unuttukları bir şey vardı: sevimli akvaryumları Nemo.

Tatile gitmelerine rağmen, aile akvaryumlarına olan sorumluluklarından vazgeçmek istemiyorlardı. Tekrar eve dönerek bu sorunu çözmeleri gerekiyordu ve öyle de oldu. Küçük Nemo'nun günlük doz yemi ve tatil boyunca düzenli yemlenmesi gerekiyordu. Bu durumu düşünen Kaya ailesi, yaratıcı bir çözüm bulmaya karar verdi.

Baba Can, evdeki elektronik malzemeleri inceledi ve Arduino Uno ile bir servo motor buldu. Hemen bir otomatik yemleme sistemi tasarlamaya karar verdiler. Anne Ayşe, Nemo'nun günlük yem ihtiyacını belirledi ve küçük bir yem deposu hazırladı. İki çocukları, Ece ve Mert, servonun doğru açıda dönmesi ve yemi akvaryuma bırakması için bir program yazma konusunda heyecanlıydılar.

Aile, otomatik yemleme sistemini akvaryumlarına entegre etti ve Arduino'nun başında biraz zaman geçirerek sistemi test ettiler. Yemlemeyi başarıyla gerçekleştirdiklerinde, Kaya ailesi rahat bir nefes aldı. Şimdi, tatillerini rahatça geçirebilecek ve Nemo'nun da sağlıklı ve mutlu bir şekilde bekleyişini sürdürecekti.

Tatil boyunca, Kaya ailesi deniz, kum, güneşin tadını çıkarırken, akvaryumlarındaki sevimli balıkları da otomatik yemleme sistemi sayesinde hiçbir şeyden mahrum kalmıyordu."


Bu hikaye ile şu plana bağlı olarak dersimi işlemeye başladım. 


Ders Planı: Otomatik Akvaryum Yemleme Sistemi Tasarımı


Hedef Kitlesi: Ortaokul ve lise öğrencileri


Amaç: Arduino ve servo motor kullanarak bir akvaryumu otomatik olarak günde iki kez yemlemek için bir sistem tasarlamak.Temel programlama becerilerini geliştirmek.Mekanik ve elektronik sistemlerin nasıl entegre edileceğini anlamak.

1. Giriş: Akvaryum bakımının önemi ve düzenli yemleme. Otomatik yemleme sistemi kullanmanın avantajları gibi giriş soruları ile derse başlayarak öğrencilerin yorumlar yapmasını ve  neredeyse hepsinin ilgisini çekmeyi başardım.

2. Sorular:

Akvaryumu hangi sıklıkta yemlemeliyiz?

Yemleme sırasında nelere dikkat etmeliyiz?

Otomatik bir yemleme sistemi neden önemli olabilir?

Bu soruları Google Classroom ile oluşturduğum sınıfta öğrencilerime sorarak cevaplarını birbirleriyle paylaşmalarını sağladım. Bu sayede birazdan tasarlayacakları sistem için ihtiyaçları olan verileri toplamalarını kolaylaştırdım. En önemlisi ise yorum yapmaya başladılar.

Ardından aşağıdaki projeyi oluşturmak üzere TinkerCad  uygulamasına girmelerini ve ardından elektronik devre tasarımı simülatörü oluşturmalarını istedim. Burada bir adet arduino ve servo motor kullanarak bu iki elemanın ne işe yaradığını ve nasıl bağlandığı hakkında bilgi paylaştım ve  aşağıdaki soruları sorarak cevaplarını Arduino Simülatöründen almaları için yönlendirdim.

3. Proje Açıklaması:

Arduino Uno ve servo motorun nasıl çalıştığını anlatın.

Akvaryumu otomatik olarak yemlemek için gerekli malzemeleri gösterin.

Servo motorun görevini açıklayın.

Yem dozajını nasıl kontrol edebiliriz?

Akvaryumun boyutuna göre sistem nasıl özelleştirilebilir?

4. Arduiono Programlama:

Arduino TinkerCad simülatörü kullanma ve temel programlama becerilerini geliştirme.

Servo motoru kontrol etmek için basit bir program yazma.

Şeklinde uygulamalı olarak dersi işlemeye başladım ve örnek projenin elektronik ve kod tasarımını tamamlamalarını sağladım.

Arduino ve Servo Motor ile Akvaryum Yemleme Projesi: 


Bu ilginç proje ile öğrencilerime kazandırmayı hedeflediğim beceri ve değerler:


Programlama Becerileri: Temel programlama becerilerini geliştirme şansı elde ediyorlar.

Elektronik Bilgi: Arduino ve servo motor gibi bileşenlerle temel elektronik kavramları öğreniyorlar.

Mekanik Tasarım Yetenekleri: Servo motorun mekanik entegrasyonu ve yem deposu tasarımı gibi aşamalarda mekanik tasarım konusundaki becerilerini geliştiriyorlar. (Bu bölümü bir sonraki yazımda detaylı olarak paylaşacağım.)

Problem Çözme Yetenekleri: Karşılaştıkları sorunları çözme becerilerini pratikleştiriyorlar.

Takım Çalışması: Aileleriyle birlikte çalışarak takım çalışması ve işbirliği yeteneklerini güçlendiriyorlar.

Teknolojik İnovasyon Bilinci: Günlük yaşantılarında teknolojiyi nasıl kullanacaklarını ve sorunları nasıl çözebileceklerini anlamalarına yardımcı oluyor.

Sorumluluk ve Planlama: Tatil sürecinde akvaryumlarını otomatikleştirme düşüncesi, sorumluluk alma ve planlama yeteneklerini geliştirmelerine olanak tanıyor.

Bu proje, öğrencilerin teknik becerilerini artırmakla kalmaz, aynı zamanda kendi projelerini hayata geçirme konusundaki özgüvenlerini güçlendirir ve mühendislikle ilgili birçok yönü keşfetmelerini sağlar.  Umarım paylaştığım bu ders planını beğenir ve uygulamaya değer bulursunuz. Bir sonraki yazımda görüşmek üzere.































15 Ocak 2024 Pazartesi

ARDUINO İLE EN UZUN GECE - EN KISA GÜNDÜZ VE EKİNOKSLAR

Merhaba sevgili çocuklar, gençler ve değerli öğretmenlerim.

Fen, matematik, mantık ve teknolojiyi bir araya getiren bir projenin heyecanını sizinle paylaşmaktan mutluluk duyuyorum. TinkerCad'in devre simülatörü üzerinden Arduino Uno kullanarak gerçekleştirdiğim bu projede, 21 Aralık En Uzun Gece etkinliğini LED'ler, Arduino Uno ve breadboard ile simüle ederek öğrencilere benzersiz bir öğrenme deneyimi sunmayı planladım.

Projemizin temelini gece ve gündüzü, ayrıca ekinoks dönemlerini temsil eden bir LED dizisi oluşturuyor. 43 kırmızı LED ile geceyi, 43 sarı LED ile de gündüzü simgeliyoruz. Bu tasarım, öğrencilere elektronik devrelerin nasıl oluşturulduğunu ve çalıştığını anlamalarını sağlarken, aynı zamanda fen bilimleri kapsamında astronomik olayları görselleştirme imkanı tanıyor.

Işıyan LED sayılarının 21 Aralık ve 21 Haziran tarihlerini temsil etmek üzere nasıl değiştiği, matematiksel düşünceyi ve mantığı kullanarak öğrencilere gün dönümü kavramlarının nasıl oluştuğunu anlama fırsatı sunuyoruz. Renk ve sayı kombinasyonlarıyla, öğrencilerin soyut kavramları somut örneklerle ilişkilendirme ve yeteneklerini geliştirmeyi önemli buluyorum.

TinkerCad Arduino simülatörü kullanarak gerçekleştirdiğimiz bu proje, öğrencilere teknolojiyi etkili bir şekilde kullanma ve programlamayı anlama becerisi kazandırıyor. Bu, öğrencilere STEM alanlarında (fen, teknoloji, mühendislik, matematik) kariyerlerine yönelik bir temel oluşturarak, gelecekteki teknoloji liderlerinin yetişmesine katkıda bulunuyor.

Bu projenin, öğrencilere sadece bilgi kazandırmakla kalmayıp, aynı zamanda eleştirel düşünmeye teşvik ederek farklı alanlardaki bilgi ve becerilerin nasıl entegre edilebileceğini gösterdiğine inanıyorum. Fen, matematik, mantık ve teknoloji, eğitimde işbirliği içinde kullanıldığında, öğrencilerin öğrenme deneyimini zenginleştirir, onları geleceğin problem çözücülerine dönüştürmeye katkı sağlar.

Projemizi sizinle paylaşmanın heyecanını yaşıyor, sizi bu eğlenceli ve öğretici yolculuğa davet ediyoruz.



21 Aralık - 21 Haziran ve Ekinokslar.


Kış mevsiminden yaz mevsimine geçerken ilk ekinoks Mart ayında.

Yaz mevsiminden kış mevsimine geçerken ikinciside Eylül ayında gerçekleşir.Simülatör devremizde geceleri kırmızı ledler, gündüzleri ise sarı ledler temsil etmektedir.

Gecenin en uzun olduğu gün kırmızı ledler en uzun seviyede yanarken, sarı ledler  en kısa günü işaret eder.

Gündüzlerin en uzun olduğu gün ise sarı ledler en uzun seviyede yanarken, kırmızı ledler en kısa geceyi işaret eder. 

Gecenin ve gündüzün eşit olduğu EKİNOKS ise kırmızı ve sarı ledlerin eşit uzunlukta olduğu sırada hızlıca üç kez yanıp sönerek EKİNOKS gününü temsil eder.

Bu çalışma  en uzun gecenin yaşandığı bugüne ithafen Bilişim Teknolojileri ve Yazılım dersinde hazırlanmış ve öğrencilerimize, bir meydan okuma çalışması olarak verilmiştir. 

Simülatördeki notları kapatmak için üst menüden notları gizle butonuna basabilir simülatörü başlatabilir ve kodları inceleyebilirsiniz.



En Uzun Gece:

En uzun gece, Dünya'nın kuzey yarımküresinde 21 Aralık'ta, güney yarımkürede ise 21 Haziran'da gerçekleşen astronomik bir olaydır. Bu tarihlerde, kuzey yarımkürede Kuzey Kutbu'na en uzak noktada bulunan yer, Güneş'in yeryüzündeki izdüşümü üzerinde en uzak noktaya denk gelir. Bu durumda, Kuzey Kutbu'ndaki yerlerde gecenin en uzun olduğu ve günün en kısa olduğu gece yaşanır.

En Kısa Gün:

En kısa gün, Dünya'nın kuzey yarımküresinde 21 Aralık'ta, güney yarımkürede ise 21 Haziran'da gerçekleşen olaydır. Bu tarihlerde, kuzey yarımkürede Kuzey Kutbu'na en yakın noktada bulunan yer, Güneş'in yeryüzündeki izdüşümü üzerinde en yakın noktaya denk gelir. Bu durumda, Kuzey Kutbu'ndaki yerlerde gündüzün en kısa olduğu ve gecenin en uzun olduğu gün yaşanır.

Ekinoks:

Ekinoks, Dünya'nın her iki yarımküresinde de gündüz ve gece sürelerinin eşit olduğu iki özel anı ifade eder. Yılda iki kez gerçekleşir: birincisi 20 veya 21 Mart'ta ilkbahar ekinoksu, diğeri ise 22 veya 23 Eylül'de sonbahar ekinoksu. Bu tarihlerde, Dünya'nın ekliptik düzlemiyle ekvator düzlemi kesişir, bu da günün ve gecenin eşit sürelerde olduğu bir denge noktasını oluşturur. Ekinoks, mevsim geçişlerinin başlangıcını temsil eder. İlkbahar ekinoksu ile kuzey yarımkürede günler uzamaya, güney yarımkürede ise kısalma eğilimindedir. Sonbahar ekinoksu ise tam tersine, kuzey yarımkürede günler kısalırken güney yarımkürede uzamaya işaret eder.

SERKAN UĞUR

GELECEK KOLEJİ BT VE YAZILIM DERSİ ÖĞRETMENİ

5 Mayıs 2018 Cumartesi

RGB LED Kullanımı

RGB Led ler adından da anlaşılacağı üzere kırmızı, yeşil ve mavi renkli ledlerin aynı kılıf içerisine toplanmış halidir. Her ledin iki bacağı olmasına karşın üç farklı ledin birleşimi olan bu ledin dört bacağı vardır ve bu sebeplede RGB ledler ortak bacağın anot olması veya ortak bacağın katot olması durumuna göre iki model üretilirler aralarındaki tek fark bu ortak bacağın anot (+) yada katot(-) olmasıdır. Bunun dışında görselde görüleceği üzere uzun bacak (ortak bacak) sol baştan ikinci sırada tutulacak şekilde bakılırsa her zaman en soldaki kırmızı, ortak bacağın hemen yanındaki yeşil ve en sağdaki bacak ise mavi led içindir. Bildiğiniz gibi ledler bir diyot çeşididir ve farklı ışıma yapan kısımlardan oluşur ve bu diyotların içerisinde kullanılan kimyasallar ile farklı ışımalar mümkün olmaktadır yani dış kılıfları renkli değildir. 
Bu durumda renkleri ayrı ayrı yakmakla birlikte aynı anda farklı renklerin yanması ile yeni renkler elde edilir. Yandaki görselde ana renklerin kesişim noktalarına baktığınızda mavi ve kırmızı ile mor veya magenta, mavi ile yeşilde turkuaz veya cyan, yeşil ve kırmızı karışımında sarı ve son olarak kırmızı mavi ve yeşil karışımında beyaz oluşmaktadır. Renkler konusu da 7. sınıf fen bilgisi dersi konularında aynen bu şekilde işlenmektedir.

RGB ledleri farklı projelerde birçok amaç için kullanabiliriz. tek yapmamız gereken her rengin dayanabildiği bir voltaj direnci vardır ve buna dikkat etmemiz gerekir ki buda ledlerin renklerine uygun direnç seçimi ile yapılır. Bu konu Temel elektronik anlatımları altında ayrıca anlatılmıştır.

Potansiyometre Kullanımı

Potansiyometre ortaokul 6.sınıfta fen bilgisi dersinde gördüğümüz sürgülü reosta yani ayarlı direnç olarakta bilinen bir devre elamanıdır. Orta bacaktan çıkış gerilimi alınır. İç yapısında bulunan direnç malzemesi ayarlanarak istenilen seviyeye getirilir ve  bu sayede orta bacaktan istenilen voltaj seviyesi elde edilir.

A Bacağı: +5V
B Bacağı: GND
C Bacağı ise kullanılacak(kontrol edilecek) diğer devre elemanına bağlanır.

C Bacağından 0-1023 değerleri analog sinyalleri olarak elde edilir. 0-1023 daha öncede söylediğimiz gibi arduino üzerindeki 10 bitlik adc elmanı kullanıldığından ve dolayısı ile 1024 farklı ikili sayı kodlanabildiğinden bu değerler arasında değerler görünürki bunların voltaj değeri karşılığı hesaplanarak tespit edilir.


Aralık değerleri Volt cinsinden elde edilir, eğer miliVolt olarak kullanılacak olursa bu 1000 ile çarpılarak dönüşümü yapılır.


Örnek Kullanım Kodları


const int pot(A0);
int gelendeger;
float vson;
float mvson;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  gelendeger=analogRead(pot);
  Serial.print("Deger=");
  Serial.println(gelendeger);
  vson= (gelendeger/1023.0)*5;
  Serial.print("Volt=");
  Serial.println(vson);
  mvson= (gelendeger/1023.0)*5*1000;
  Serial.print("mVolt=");
  Serial.println(mvson);
  delay(750);

}

LM35 Sıcaklık Sensörü

LM35 Sıcaklık Sensörü bağlantı uçları:



Sıcaklık sensörünün bacaklarının doğru bağlanabilmesi için yazılı yüzünün bize bakması önemlidir buna göre

en soldaki bacak Vcc  = +5V
ortadaki bacak     Out  = Analog Çıkış Bacağı A0, A1, A2 hangisini isterseniz
en sağdaki bacak GND= Arduino üzerindeki GND pinlerinden birine bağlanır.

Çalışma Prensibi: Ortamın sıcaklığını doğrudan ölçmediğimizi bilmemiz gerekiyor. Bu ne demek lm35 üzerinden doğru bağlantıları yaptığımızda çıkış ucunda 0-1023 arasında değerler elde ediyoruz sebebi arduino üzerinde 10 bitlik adc kullanılmış olmasıdır. İşte tamda bu noktada lm35 i üreten firmanın bu elaman için yayınladığı değerlere ihtiyacımız var bunlara datasheet deniliyor. Demekki elimizdeki lm35 sensörünün üreticisini bilmemiz gerekiyor  bilemez isek ne olacak ortalama birbiri ile aynı olabileceğini düşünerek bulduğumuz bir lm35 datasheetine göre hareket edebiliriz. Genelde lm5 ler 1 santigrat derece için 10mV çıkış verirler yani biz Vcc bacağından giriş gönderdiğimizde lm35 içerisinden ortamın sıcaklığına göre çıkış bacağından her 1 santigrat derece için 10mVolt çıkışa izin verilir. 
Arduinomuzda 10bitlik adc den  0-1023 değeri aralığında çıkış aldığımız için önce bu dönüşümlerini yapmalıyız.

Örneğin lm35 out dan 45 değeri okunuyorsa bu değeri 1023 bölmeliyiz ve 5Volt ile çarpmalıyız ki kaç voltluk çıkış verdiğini bulalım.
 
5volt nereden geliyor çünkü Anolog girişimizden 5volt girişi yaptık ve çıkış sinyalimize düşen gerilimi hesapladık. Örnek değerimizi yani 45 değerini yerine koyarsak.
çıkan değeri lm35 için milivolta dönüştürürsek bu değerin kaç santigrat dereceye karşılık geldiğini hesaplayabiliriz. Çünkü lm35 10 milivoltta 1 santigrat dereceyi işaret ediyordu.
1mV = 0,001Volt olduğuna göre

0,439882x1000 = 439,882mV eder bunuda 10 a bölersek 43,9 santigrat derece hesaplarız. İşte bu yapılan matematiksel işlemleri arduino kodumuz içerisinde de yazdığımızda ve gelen verileri işleyip parametreleri uyguladığımızda santigrat karşılığını elde edebiliriz.

Bu bilgiler olmadan ezbere yapılan her proje havada kalır önemli olan neyin nereden geldiğini araştırmak, bulmak ve öğrenmektedir. Sevgi ve saygılarımla...

Değerleri ve parametreleri kullanarak oluşturduğum kod aşağıdadır.


const int lm35_out=A0; // Buraya Analog pinlerden hangisine bağlarsanız onu tanımlarsınız.A0,A1...
int lm35_sonuc; // A0 a ulaşan değerleri toplayacağımız bir değişken tanımlıyoruz....
float voltajout; // A0 daki değeri voltaj karşılığını tutacağımız değişken...
float derece; // Parametreleri hesapladıktan sonra dereceyi tutacağımız değişken...
void setup()
{
Serial.begin(9600);
}

void loop()
{
lm35_sonuc=analogRead(lm35_out)//prob olarak tanımladığımız A0 pinimizden gelen değerleri alıyoruz.
Serial.print("lm35 out degeri=");
Serial.println(lm35_sonuc);


voltajout=(lm35_sonuc/1023.0)*5000 ;
Serial.print("lm35 voltaj degeri=");
Serial.println(voltajout);
derece= volajout / 10.0 ;
Serial.print("ölçülen sıcaklık degeri=");
Serial.println(derece);
delay(500);

}

Toprak Nem Sensörü

Toprak Nem Sensörünün Kullanımı ve Bağlantısı

Sensör Devresi ve Sensör Probu arasındaki + ve - kutuplarının yönü farketmemektedir. Dilediğiniz gibi bağlayabilirsiniz.

Sensör Devresi üzerindeki pinlerin bağlantısı:
VCC = +5V
GND= GND
D0= Dijital Pin
A0= Analog Pin

Çalışma Prensibi: Prob üzerindeki uçlar arasında oluşan iletkenliğin şiddetini ölmeye dayalı bir mantığa sahiptir. İki sivri uç arasında iletkenliğin arttığı bir ortamda iletkenlik değeri yükselir. İletkenliğin hiç olmadığı yada boşlukta maksimum 1023 değeri ölçülür (Bu değer anolog pinlerde 0-1023 aralığında gelir sebebi arduino üzerinde 10 bit adc(analog - dijital dönüştürücü) kullanılmıştır, ayrıntılı bilgiye başka bir yazımda yer vereceğim). İletkenliği artıran bir sıvıda yada, ıslak bir ortamda bu değerden aşağıya doğru değerler ölçülür ki bu değer hiç bir zaman sıfır (0) olarak ölçülemez öyle olması için iki ucun birbirine değdirilmesi yani kısa devre yapılması gerekir.

Sensör Devresi üzerinde bir adet potansiyometre ve iki adet smd led bulunur. Ledlerden birisi devrenin aktif olduğunu belirtirken diğer led potansiyometreye yapılan ayara göre aktif olur. Potansiyometre üzerinden iletkenlik eşik değerini değiştirebiliyoruz yani led lambayı atıyorum 800 değerinin altında yanmasını ayarlayabiliyor bu sayede görsel olarakta problar arasındaki iletkenlik değerinin 800 altında olduğunu aktif olan bu ledden anlayabiliyoruz. Potansiyometre üzerinden bu ayar yapılarak istenilen seviyede led yakılıp söndürülebilir.

Toprak Nem Sensörü için arduinoda bir kütüphaneye ihtiyaç duyulmamaktadır. Çok basit bir yapıda bağlantısı yapılarak kodlar arasında kullanılır. Genellikle A0 analog pin üzerinden kullanılır. Dijital pinlere de bağlantısı D0 üzerinden yapılır.

En sık kullanılan proje sulama projeleridir. Toprağın nem seviyesini gözlemleriniz ile tespit edebildiğiniz sürece bu sensör ile gözlemlediğiniz toprağın iletkenlik eşiğini baz alır bu değerin üzerinde olan seviyelerde bir sulama motorunu açıp kapatabilirsiniz. Örnekler çoğaltılabilir genellikle birlikte çalıştığım çocuk ve genç öğrencilerim bu projeden çok keyif alıyorlar. 



const int prob=A0; // Buraya Analog pinlerden hangisine bağlarsanız onu tanımlarsınız.A0,A1...
int sonuc; // A0 a ulaşan değerleri toplayacağımız bir değişken tanımlıyoruz....
void setup()
{
Serial.begin(9600);
}

void loop()
{
sonuc=analogRead(prob)//prob olarak tanımladığımız A0 pinimizden gelen değerleri alıyoruz.
Serial.print("iletkenlik degeri=");
Serial.println(sonuc);
delay(500);

}

4 Mayıs 2018 Cuma

Hc-Sr04 Mesafe Sensörü ve 29.1 ?



Hc-Sr04 Mesafe Sensörü ve Bağlantı Uçları
Arduino projelerimizde sıkça kullanılan sensörlerin başında olan ultrasonik mesafe sensöründen bahsedeceğim. Bu sensör yarasaları taklit eden bir yapıya sahiptir. Sensörün üzerinde bulunan bir adet hoparlör ve bir adet mikrofon sayesinde karşıda bir engel olup olmadığını algılamanın yanında ne kadar uzaklıkta bir cisim olduğunu da hesaplayabilmekteyiz. Aşağıdaki görselden de anlaşılacağı üzere hoparlörden çıkan yüksek frekanstaki ses bir engele çarpıp yankısının tekrar geri dönmesi sonucu mikrofona ulaştığı an engel ve mesafe hakkında veriler oluşturulmaktadır.

Trigger bağlı olduğu ardunio Output (Çıkış) pininden Sinyal değerini  Lojik 1 (açık) olarak işaretlendiğinde sensörün hoparlöründen ultrasonic ses dalgaları yayıyor, bu ses dalgaları bir cisme çarpıp  geri döndüğünden dönen ses dalgaları sensörün mikrofon tarafından algılandığında Echo  pininden arduino üzerinde bağlı olan Input (Giriş)  dijital pine Lojik 1 (açık) değerini aktarıyor ve bu sayede sensör önünde bulunan nesneleri en az 2cm en fazla 4m den algılayabilmektedir. Arduino açık  bağlantı şeması aşağıdaki gibi yapılır.


Gelelim ölçümü nasıl hesapladığına: Öncelikle 29.1 değeri nedir nereden geliyoru anlamamız gerekir. Bu sensörün çalışma prensibi yazımın başında da belirttiğim gibi yarasalardan ilham alınarak yapılmıştır. Hoparlörden çıkan ultrasonic ses dalgaları cisme kadar gidip çarpar ve mikrofon alıcısına kadar gittiği yolu tekrar dönerek ulaşır. Burası önemli mesafe hesaplanırken yolun sadece gidiş yada dönüş kısmı hesaplanmalıdır dolayısı ile giden ve gelen ses dalgasının süresi mesafeyi iki kez hesaplanmaması için geçen süre ikiye bölünmelidir.
Buraya kadar tamamdır umarım ancak 29.1 hala açıklığa kavuşmadı dediğinizi duyar gibiyim işte şimdi bu değerin geldiği yeri açıklıyorum. Ses dalgası sıfır santigrat derecede 331 metre/saniye yol almaktadır, bu bir fizik kuralıdır ayrıca normal oda sıcaklığının 20 santigrat derece kabul edildiğinide hatırlarsak bu değeri ispatlamaya başlayalım.


Ses dalgasının hızı bulunulan konumun sıcaklığına bağlı olarak değişkenlik gösterdiğinden sıcaklık faktörünü dikkate alan şu formülü kullanarak bu değere ulaşmaya çalışalım.


T (Bulunulan ortamın sıcaklığı) değerine bağlı olarak ses dalgası saniyede kaç metre yol alıyor hesaplanıyor. Oda sıcaklığı 20 santigrat derece alarak yerine koyarsak.

Bizim ardunio da sensör üzerinden bu değerin hesabında mikro saniye ve cm cinsinden hesaplıyoruz ve ayrıca zaman / uzunluk oranı yapılırken, ispat formülünde bulunan sonuç metre ve sn cinsinden olması ve ayrıca oranın uzunluk / zaman olduğuna dikkat ediniz.

Metreden santimetreye ve saniyeden mikrosaniye dönüşüm yapmak istersek dönüşüm birimleri 
1 metre = 100cm
1 sn = 1 000 000 MikroSaniye olduğuna göre bu oran ile çarparsak



Burada dikkat ederseniz uzunluk / zaman oranı var bizim arduinodaki oranımız zaman / uzunluk bu orana dönüştürmek için sonucu ters çevirme işlemini 1 / 0.3429102606 yapıyoruz.



gördüğünüz gibi 29.1 değerinin 20 santigrat dereceli ortamda kullanıldığını ispatlamış olduk. Sorulması gereken şu olmalı peki ölçüm yapılan ortamın sıcaklığı 30 santigrat derece olursa ne olur?
Elbette hatalı bir ölçüm yapmış oluruz. Ortamın sıcaklığına göre davranan bir yapı kurmamız ve bu sıcaklığı tespit ettikten sonra yukarda gördüğünüz hesaplamaları arduino programında hesaplatmalısınız böylece gerçek ölçüm sonucuna ulaşabilirsiniz.






2 Mayıs 2018 Çarşamba

16x2 LCD Tanıyalım

16x2 LCD ve Bağlantı Uçları?

Arduino projelerimizde çokça kullandığımız LCD lerin en yaygınlarından birisi 16 sütun 2 satırdan oluşan en bilinen modelin bağlantı uçlarından bahsedeceğim.

VSS: Besleme Gerilimi Hattının GND ucu
VDD Besleme Gerilimi Hattının +5V ucu
V0: LCD ekranında Kontrast ayarı yapmak için uç (Potansiyometrenin orta bacağına bağlanır)
RS: LCD nin hafızasına kayıt yapan uç
RW: LCD den veri okuma veya veri yazma şekline göre değiştirilebilen uç (Kullanılmaz ise GNDye bağlanır.)
E: LCD den veri alma açık(1) kapalı(0) şeklinde kullanılan uç (Dijital Pine  bağlanır.)
D0: 8 Bit veri için data ucu başlangıcı (Dijital Pine  bağlanır.)
D1: 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
D2: 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
D3: 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
D4: 4 Bit veri için data ucu başlangıcı aynı zamanda 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
D5: 4 Bit veri için data ucu aynı zamanda 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
D6: 4 Bit veri için data ucu aynı zamanda 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
D7: 4 Bit veri için data ucu aynı zamanda 8 Bit veri için data ucu (Dijital Pine  bağlanır.)
A: LCD Panelin aydınlatma ledinin Anod ucu +3V (+5V dan beslerseniz 220ohm koruma direnci bağlayın)
K:LCD Panelin aydınlatma ledinin Katod ucu GND

Arduino Üzerine Bağlantı Şekli


Bilinmesi Gerekenler

Arduino için gerekli kütüphane (#include <LiquidCrystal.h>)

Nesne Tanımı ve Bağlantı Uçları LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Pin numaraları değiştirilebilir. 
Bağlantı Karşılıkları şu şekildedir. LiquidCrystal lcd(RS, E, D4, D5, D6, D7);

En Bilinen Fonksiyonları ve Kullanım Şekilleri

lcd.begin(16,2) 16 Sütun 2 Satırdan oluştuğunu belirten başlangıç fonksiyonu

lcd.print("Ekrana Yazılacak Metin") Ekrana yazdırma fonksiyonu int, char gibi  veri tipinden oluşturulmuş ve atanmış değişkenleri de doğrudan  çağırabiliriz.
lcd.print(a) a değişkeni int veya char olabilir.
lcd.print(300) 300 sayısını doğrudan ekrana yazar.
lcd.print(300, BIN) Binary dönüşümü yaparak ekrana 300 sayısının ikili sayı tipini yazar.
lcd.print(300, OCT) Sekizli dönüşümü yaparak ekrana 300 saysının sekiz tabanı karşılığını yazar.
lcd.print(300, HEX) Onaltılı dönüşümü yaparak ekrana 300 sayısının onaltı tabanı karşılığını yazar.

lcd.clear() Ekranı ve Hafızayı temizler.
lcd.cursor() İmleçi ekranda _ alt tire şeklinde gösterir.
lcd.noCursor() İmleci kapatır.
lcd.setCursor(0,0) Yazının başlangıc sütunu ve satırını belirtir. satır ve sütun 0 dan başlar. birinci sütun birinci satır (0,0) parametresi ile belirtilir. örneğin 3 sütun 2. satır için (2,1) kullanılır.
lcd.home() yine aynı şekilde yazının başlangıç konumunu belirtir. lcd.setCursor(0,0) demekle aynı anlama gelir.

lcd.blink() yanıp sönen bir imleç şeklinde imleç görünür.
lcd.noBlink() yanıp sönen imleci kapatır.

lcd.noDisplay() LCD ekranını hafızayı temizlemeden ekranı kapatır.
lcd.display() Kapanan LCD ekranını tekrar açar.
lcd.scrollDisplayRight() Soldan sağa doğru yazıyı kaydırır.
lcd.scrollDisplayLeft() Sağdan sola doğru yazıyı kaydırır.