GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ 4.HAFTA Yrd. Doç. Dr. Fecir DURAN Arş. Gör. Esra SÖĞÜT
İÇİNDEKİLER SERİ HABERLEŞME SERİ DİJİTAL OKUMA UYGULAMASI GEREKLİ FONKSİYONLAR SERİ DİJİTAL YAZMA 4*3 TUŞ TAKIMI SWITCH-CASE
Seri Haberleşme Mikrodenetleyiciler, diğer mikrodenetleyicilerle, bilgisayar ile ve cihazlar ile iletişim kurabilir. İletişim seri ve paralel olarak 2’ye ayrılır. Paralel iletişimde 8 bitlik veriler 8 kablo aracılığı ile iletilir. Seri iletişimde veriler 2 kablo aracılığı ile iletilir. Doğal olarak paralel iletişim hızlıdır ancak uzun mesafelerde aşırı kablo kullanımına neden olur. Bu yüzden seri iletişim tercih edilir.
Seri Haberleşme Haberleşme ayrıca kablolu ve kablosuz olarak ikiye ayırılır. Kablosuz haberleşmeye örnek olarak, bluetooth, kızılötesi, wifii örnekleri verilebilir. Arduino Uno üzerinde 1 adet seri haberleşme alıcı-verici çifti bulunmaktadır. Arduino unonun 0. pini alıcı-receiver(RX) 1. pini verici-transmitter (TX) olduğunu kartınıza bakarak rahatlıkla görebilirsiniz. Seri haberleşme üzerinden veriler 0 ve 1 dizileri olarak iletilirler.
Seri Dijital Okuma Uygulaması Arduino’yu kullanarak seri haberleşme ile Buton’un durumunu kontrol edeceğiz. Buton’un durumu (açık/kapalı) hakkındaki bilgiyi, Ardunio board ile seri iletişim kurarak elde edeceğiz. Gerekli Donanımlar: • Arduino Board • Buton • 10k ohm direnç • Devre Tahtası(Breadboard) • Kablo
Seri Dijital Okuma Uygulaması Yukardakı gibi butonu ve dirençi bağladıktan sonra yapmamız gereken sadece kodumuzu board'a yüklemek. Kodu File=>Examples=>Basics=>DigitalSerialRead yolunu izleyerek açabilirsiniz.
Seri Dijital Okuma Uygulaması Algoritma: 1. pushbutton tanımla 2. butona basıldığında seri monitöre 1 döndürsün 3. butona basılmadığında seri monitöre 0 döndürsün
Fonksiyonlar Serial.begin(9600); //Board ile bilgisayar arasında saniyede 9600 bitlik veri ile seri iletişim başlatır Seri.println (sensorValue); //Board girişi okuduktan sonra, bu bilgiyi ondalık değer olarak bilgisayara yazdırır
Seri Dijital Okuma Uygulaması BAŞLA BUTON’A BASILDI MI? SERİ MONİTÖR’E 1 GÖNDER 0 GÖNDER EVET HAYIR
Seri Dijital Okuma Uygulaması-KODLAR Daha sonra yapmanız gereken Seri Monitörü açıp dijital 1 ve 0 'ları görmektir. Eğer devre açıksa 0 ,açık değilse 1'i göreceksiniz.
Seri Dijital Okuma Uygulaması Daha sonra yapmanız gereken Seri Monitörü açıp dijital 1 ve 0 'ları görmektir. Eğer devre açıksa 0 ,açık değilse 1'i göreceksiniz.
Seri Dijital Yazma Uygulaması Tuş takımında basılan tuşları, serial monitörde yazdıracak bir uygulama yapınız. Gerekli Donanımlar: • Arduino Board • Tuş Takımı • Kablo
Seri Dijital Yazma Uygulaması Uygulamada keypad’in hazır kütüphanesini kullanacağız. Öncelikle bilgisayarınıza Keypad.h kütüphanesini indirip, arduino programının bulunduğu klasörde libraries dosyasının içerisine atmanız gerekmektedir. Bu adresten indirebilirsiniz: http://playground.arduino.cc/uploads/Code/keypad.zip
4*3 Tuş Takımı Yapısı
Bağlantı Şeması
BASILAN KARAKTERİ SERİ MONİTÖR’E GÖNDER GEREKLİ AYARLARI YAP SERİ HABERLEŞMEYİ BAŞLAT BAŞLA KEYPAD’E BASILDI MI? BASILAN KARAKTERİ SERİ MONİTÖR’E GÖNDER BEKLE EVET HAYIR BİTİR KEYPAD’E BASILDI MI?
Kodlar #include <Keypad.h> void setup() const byte SATIR = 4; { const byte SUTUN= 3; char keys[SATIR][SUTUN] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} }; void setup() { Serial.begin(9600); //seri portun //tanıtılması (9600 baud) pinMode(A0, OUTPUT); } void loop() { char key = kpd.getKey(); if(key){ digitalWrite(A0, HIGH); Serial.println(key); //hangi butuna basıldığını göster delay(15); digitalWrite(A0, LOW); } byte rowPins[SATIR] = { 9, 8, 7, 6 }; //row bağlantı pinleri byte colPins[SUTUN] = { 12, 11, 10 }; //coloumn bağlantı pinleri Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, SATIR, SUTUN );
Switc-case Switc-case: Bir switch deyimi, bir değişkenin değerini case ifadelerinde belirtilen değerlerle karşılaştırır. Değişkenin değeriyle eşleşen bir case ifadesi bulunursa, bu case ifadesinin kodu çalıştırılır. Break anahtar sözcüğü switch ifadesinden çıkmayı sağlar ve ve genellikle her bir case'in sonunda kullanılır. Break ifadesi olmadan, switch ifadesi bir mola verene kadar veya switch ifadesinin sonuna ulaşana kadar yürütmeye devam eder.
Switc-case switch (var) { case 1: //do something when var equals 1 break; case 2: //do something when var equals 2 default: // if nothing else matches, do the default // default is optional }