Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 30 İleri Düzey Uygulamalar/Sayı Sayma-Sıcaklık Ölçme için isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

İleri Düzey Uygulamalar

Ders Kazanımları:

  • Sayaç Kullanarak 7 Segment Display Sayı Sayma Uygulaması programını yardım almadan başarılı bir şekilde tasarlar.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken bir takım hatalarla karşılaşabilirsiniz. Bu hataların kodların yazımında meydana gelen hatalar dışında başka sebeplerle ortaya çıkması muhtemeldir. Bu hatalardan sık karşılaşılanlara aşağıda değinilmiştir.

Kart Seçilmesinden Kaynaklı Hata:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru kartın seçilmesi gerekmektedir. Kart seçilmediğinde “Karta yüklenirken bir sorun oluştu” benzeri bir hata alabilirsiniz.

USB Portun Seçilmesiyle İlgili Hatalar:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru portun seçilmesi gerekmektedir. Bu port Arduino Uno’nun bilgisayara bağlandığı usb porttur. Farklı şekilde bilgisayarınız da usb driver yüklenmemiş olabilir.  Bu gibi hatalar da “port bulunamadı” gibi hatalar almanız muhtemeldir.


Uygulama 1: Sayaç Kullanarak 7 Segment Display Sayı Sayma Uygulaması

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

Resim134

  1. 7 Segment Display, noktası aşağıda olacak şekilde breadboarda yerleştirildikten sonra alt kısımdaki pinler sağdan sola doğru sırasıyla, “7” – “2” – “breadboard üzerine şekildeki gibi herhangi bir pine” – “3” – “4” nolu pinlere bağlanır.
  2. Üstteki pinler ise sağda sola doğru “1” – “0” – “breadboard üzerine şekildeki gibi diğer kablonun hizzasında herhangi bir pine” – “5” – “6” nolu pinlere bağlanır.
  3. Breadboard üzerinde aynı hizzaya bağlanan ortak pinler ise Arduino’ nun 5v hattına bağlanır.

Kodlar:

Uygulamanın “.ino” dosyasını (kod dosyasını) buradan indirebilirsiniz.

const int A = 0;
const int B = 1;
const int C = 2;
const int D = 3;
const int E = 4;
const int F = 5;
const int G = 6;
const int H = 7;
char sayilar_noktali[10]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10};
int sayilar_noktasiz[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
int harfler[]={0b00001000, 0b00000011, 0xC6, 0b10100001, 0b00000110, 0b00001110, 0x10, 0b00001001};
int sayac=0;
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(H, OUTPUT);
}
void loop(){
for(sayac=0;sayac<10;sayac++)
{
PORTD=sayilar_noktali[sayac];
delay(500);
}
for(sayac=9; sayac>=0;sayac–)
{
PORTD=sayilar_noktasiz[sayac];
delay(500);
}
fpr(sayac=0; sayac<8;sayac++)
{
PORTD=harfler[sayac];
delay(1000);
}
delay(1000);
}

  • Yukarıda ki bağlantı yapıldığında ve kodlar Arduino Uno’ ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulama da Display 0 ile 9 arası rakamları önce nokta koyarak yazacaktır.
  • Ardından 9 ile 0 arasında ki rakamlar noktasız olarak yazılacaktır.
  • Sayılardan sonra bazı harfler yazılacaktır.
  • Bu döngü tekrarlanarak devam edecektir.

Uygulama 2: Sıcaklık Ölçer

Kullanılacak Malzemeler:,

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

Resim135

  1. Arduino üzerindeki 5V pini breadboard üzerinde “+” hatta, GND pini ise yine breadboard üzerinde “-” hatta bağlanır.
  2. Isı ve Nem Sensörünün VCC pini “+” hatta, GND pini “-” hatta, DATA pini ise 5 nolu pine bağlanır.
  3. Buzzer breadboarda yerleştirildikten sonra kısa bacağı “-” hatta, uzun bacağı ise 9 nolu pine bağlanır.
  4. LEDler breadboarda şekilde ki gibi yerleştirilir. Uzun bacaklarının olduğu hizzaya dirençler şekildeki gibi yerleştirilir.
  5. Dirençlerin boşta kalan bacaklarından kırmızı LED A0 ‘ a bağlanır. Yeşil LED A1’e, diğer kırmızı LED ise A2 hattına bağlanır.
  6. LEDlerin resimde gösterilmeyen diğer kısa bacakları ise “-” hatta bağlanır.

Kodlar:

Uygulamanın “.ino”

#include <Adafruit_Sensor.h>//kütüphane tanımlaması
#include <DHT.h> //kütüphane tanımlanması
int buzzer = 9; //buzzerın bağlandığı pin
int length = 1;
#define DHTPIN 5 //dht sensörün bağlandığı pin
#define DHTTYPE DHT11 //dht sensörün tipi
#define sogukled A0 //ledin bağlandığı pin
#define mukemmelled A1 //ledin bağlandığı pin
#define sicakled A2 //ledin bağlandığı pin
DHT dht(DHTPIN, DHTTYPE);//dht değişkeninin tanımlanması
void setup() {
Serial.begin(9600); //serial haberleşmeyi başlatma
Serial.println("DHT11 testi!"); //serial ekrana yazdırma
dht.begin(); //sıcaklık sensörünü başlatma
}
void loop() {
pinMode(buzzer, OUTPUT); //pinlerin çıkış olarak gösterilmesi
pinMode (A0 , OUTPUT);
pinMode (A1 , OUTPUT);
pinMode (A2 , OUTPUT);
delay(2000); //2 saniye beklenmesi
float h = dht.readHumidity(); //nem ölçülüp h değişk. atanması
float t = dht.readTemperature(); //sıcaklık ölçülüp t değişk. atanması
float f = dht.readTemperature(true);//sıcaklığın fahrenayt cinsinden
//ölçülüp f değişk. atanması
if (isnan(h) || isnan(t) || isnan(f)) { // değer okunamıyorsa
Serial.println("DHT sensörden değer okuma hatası!"); //uyarısını yaz
return;
}
Serial.print("Nem: "); //ekrana nem yazılması
Serial.print(h); //ekrana nem değerinin yazılması
Serial.print(" %\t"); //ekrana % işaretinin yazılması
Serial.print("Sıcaklık: "); //ekrana sıcaklık yazılması
Serial.print(t); //ekrana sıcaklık değerinin yazılması
Serial.println(" *C "); //ekrana C yazılması
if (t <= 20) { // sıcaklık 20 dereceden küçükse
Serial.println("Çok Soğuk!"); //çok soğuk yaz
digitalWrite(A0, HIGH); //soğukled yansın
digitalWrite(buzzer, HIGH); //buzzera 5v sinyal gönder
delay (1000); //1 saniye bekle
digitalWrite(buzzer, LOW); //buzzera 0v gönder
digitalWrite(A0, LOW); //lede 0v gönder
}
if (20 < t < 27) { //eğer sıcaklık20 ile 27 derece arasındaysa
Serial.println("Mükemmel Sıcaklık!"); //mükemmel sıcaklık yaz
digitalWrite(A1, HIGH); //mükemmellede 5V sinyal gönder
delay (2000); //2 saniye bekle
digitalWrite(A1, LOW); //lede 0v sinyal gönder
}
if (t >= 29) { //eğer sıcaklık 29 dereceden büyükse
Serial.println("Çok Sıcak!"); //çok sıcak yaz
digitalWrite(A2, HIGH); //A2 ledine 5v sinyal gönder
digitalWrite(buzzer, HIGH); //buzzera 6V sinyal gönder
delay (1000); //1 saniye bekle
digitalWrite(buzzer, LOW); //buzzera 0v gönder
digitalWrite(A2, LOW); //lede 0v gönder
}
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada DHT11 Isı ve Nem Sensörü ortamdaki sıcaklığı ölçecektir.
  • Sıcaklık değeri serial ekranda görülebilecek.
  • Eğer sıcaklık değeri 20 dereceden az ise kırmızı LED yanacak ve buzzer ötmeye başlayacak.
  • Eğer sıcaklık değeri 20 dereceden çok 27 dereceden az ise yeşil LED yanacak ve buzzer ötmeyecek.
  • Eğer sıcaklık değeri 29 dereceden çok ise kırmızı LED yanacak ve buzzer ötmeye başlayacaktır.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz