Deneyde Gerekli olan Malzemeler: Arduino Uno, 8.2 k direnç, buton, bağlantı kabloları



Benzer belgeler
Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

Örnek. int analogpin = 3; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogread(analogpin); Serial.

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

Mikroişlemciler ve Programlama Dersi- ARDUINO. Sensörler ve Analog-Digital Çeviriciler İle Çalışma

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ MİKROBİLGİSAYAR TABANLI SİSTEM TASARIMI DERSİ

Elif İLİKSİZ. Keziban TURAN. Radio Frekanslarla Hareket Eden Araç

Melih Hilmi ULUDAĞ. Yazılım Mühendisi Mekatronik Mühendisi. a aittir.

LED YAKMAK. Circuit 2. Kablo LED. Direnç. Arduino LED. Direnç (330ohm)

PROJE RAPORU. Proje adı: Pedalmatik 1 Giriş 2 Yöntem 3 Bulgular 6 Sonuç ve tartışma 7 Öneriler 7 Kaynakça 7

web-sitesi : satış : teknik destek : tel : IM-SMO20 Ultrasonik Mesafe Sensörü Özellikler

1- KULLANILACAK DEVRE ELEMANLARININ TANITILMASI

ARDUINO PROGRAMLAMA. Yrd.Doç.Dr. Bülent ÇOBANOĞLU

Hızlı ve Kolay Arduıno. Volkan Kanat

TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ MİKROBİLGİSAYAR TABANLI SİSTEM TASARIMI DERSİ

IOT UYGULAMALARINA GİRİŞ

İ İŞİ BÖLÜM ROBOTİK KODLAMA ÖĞRENME ALANLARI BASİT ELEKTRONİK DEVRELERE GİRİŞ AKILLI CİHAZ TASARIMINA GİRİŞ ROBOTİĞE GİRİŞ

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ GÖMÜLÜ SİSTEMLER DENEY FÖYÜ

DELTA PLC EĞİTİM SETİ KİTAPÇIĞI

ARDUİNO PROGRAMLAMA 1.ARDUİNO YU TANIMAK

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1

İÇİNDEKİLER VII İÇİNDEKİLER 1 ARDUINONUN TEMELLERİ 1

Arduino Temel Bilgiler

BİLGİSAYAR BİLİMİ DERSİ (KUR-2)

ARDUINO NEDİR? Nasıl Kullanılır? Nasıl Programlanır?

2019

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

EasyPic 6 Deney Seti Tanıtımı

VTIY DERS-4 YARDIMCI NOTLARI -2018

ARDUINO NEXTION UYGULAMASI. Bu makale, Arduino UNO kartı ile Nextion HMI ekranlarının nasıl kontrol edildiğini anlatmaktadır.

Bilgisayar ile Nasıl İletişim Kurulur?

Bütün ümidim gençliktedir.

Online Elektronik Devre Simülasyonu 123D Circuits

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

DENEY 10-A : PIC 16F877 ile DARBE GENİŞLİK MODÜLASYONU (PWM) SİNYAL KONTROL UYGULAMASI

İÇİNDEKİLER ASD-B2 Serisi Sürücü Konnektör ve Terminal Bağlantıları

ROBOTECH-10 ARDUINO UYGULAMA KARTI. SENSÖR ve ROBOT TEKNOLOJİLERİ GELİŞTİRME KARTI

Terminal Üzerinden Led Kontrol Uygulaması

Yazar Hakkında: Hasbi SEVİNÇ

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1. ARDUINO LCD ve Sensör Uygulamaları

ADUC841 MİKRODENETLEYİCİ TABANLI GELİŞTİRME KARTININ TANITIMI:

Kullanım Kılavuzu. Deneyler artık çok KOLAY! 2x16 Karekter LCD. Üniversal Motor Sürücü. HCSR04 Mesafe Sensörü. MCP9700 Sıcaklık Sensörü

6. Osiloskop. Periyodik ve periyodik olmayan elektriksel işaretlerin gözlenmesi ve ölçülmesini sağlayan elektronik bir cihazdır.

Yazar Hakkında: Hasbi SEVİNÇ

idea rsbasic KOMUTLARI

DENEY-2. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

TECO N3 SERĐSĐ HIZ KONTROL CĐHAZI HIZLI BAŞLAT DÖKÜMANI. ADIM 1: Sürücü beslemesini ve motor uçlarını bağlama

Ardunio ve Bluetooth ile RC araba kontrolü

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Mikroişlemciler ve Mikrodenetleyiciler

Deney 10: Analog - Dijital Dönüştürücüler (Analog to Digital Converters - ADC) Giriş

İÇİNDEKİLER ÖZELLİKLER. 3-4 KONTROL PANELİ HARİCİ KONTROL ÜNİTESİ BAĞLANTILAR VE HABERLEŞMELER 23-24

GÜÇ ELEKTRONİĞİ EĞİTİM SETİ DENEY KİTABI. KONU: SCR li Kontrol Devresi

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

DENEY 9-A : PIC 16F877 ve LM-35 ile SICAKLIK ÖLÇÜM UYGULAMASI

Sistem Programlama Deney 1

IR Modülü. Kart Özellikleri Çalısma Frekansı: 38KHz Mesafe: 6 Metre Çalısma Voltajı: 3.3-5V Kart Boyutları: 20 mm x 20 mm

DOKUMANLAR

OSİLOSKOP I. KULLANIM ALANI

ALİ ÇETİNKAYA Tuğba SARAY DERS DANIŞMANI PROF. DR. MEHMET BAYRAK

Giyilebilir Teknolojiler ve Solar Enerjili Şapka Uygulaması

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ TASARIM PROJESİ

ARDUINO PROGRAMLAMA KİTABI

FRENIC MEGA ÖZET KULLANIM KLAVUZU

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

Fline Arduino Temelli PID Programlı Çizgi İzleyen Robot Kiti Montaj Kılavuzu Robotus.net

Mikroişlemciler. Microchip PIC

Şekil-1. Dr. Özgür AKIN

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

Deneyler artık çok KOLAY!

UniGSM Arduino SHIELD (UniGSM-A) KURULUM ve KULLANIM KİTAPÇIĞI

BQ Modbus Analog Giriş Kartı 6 Kanal 4 20mA. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Keyestudio SHT31 Temperature and Humidity Module / SHT31 Sıcaklık ve Nem Modülü

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ ELEKTRONİK LAB 1 DERSİ İŞLEMSEL KUVVETLENDİRİCİ 1 DENEYİ. Amaç:

: HEE 226 Temel Elektrik I Laboratuvarı. : Laboratuvar Elemanları Tanıtımı

Endüstri 4.0 ve Nesnelerin Interneti

DY-45 OSİLOSKOP V2.0 KİTİ

SCRATCH İLE ARDUİNO PROGRAMLAMA

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ

FRENIC MEGA ÖZET KULLANIM KLAVUZU

BQ Modbus Analog Giriş Kartı 6 Kanal PT100 - PT1000. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

DY-45 OSĐLOSKOP KĐTĐ. Kullanma Kılavuzu

Tek kararlı(monostable) multivibratör devresi

OĞUZHAN ÇİFTÇİ DENEYLERLE ELEKTRONİK. Arduino Destekli

DENEY-7. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

DC motorların sürülmesi ve sürücü devreleri

SAYFA : 2 / 9 VERSİYON GEÇMİŞİ VERSİYON TARİH AMAÇ AÇIKLAMA V V

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir.

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

DENEY in lojik iç şeması: Sekil 2

Accurax G5 Serisi Dahili Pozisyonlama

T.C. RC SERVO MOTOR KONTROLÜ

FRENIC MULTİ ÖZET KULLANIM KLAVUZU

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

ZX2 Lazer Ölçüm Sensörü Kullanım Kılavuzu

Transkript:

MİKRODENETLEYİCİ II LAB. DENEY FÖYÜ Deneyin Adı: Buton Kontrol Deneyde Gerekli olan Malzemeler: Arduino Uno, 8.2 k direnç, buton, bağlantı kabloları Deneyin Yapılışı: Dijital pinler giriş olarak ayarlandığında pullup yada pulldown direnç kullanılarak normal şartlardaki lojik durumu belirlenir. Giriş olarak ayarlanan pine bağlı bir buton ve direnç vardır. Butona basıldığında, giriş pinine HIGH değer gelecektir. Giriş pini direnç ile Gnd ye bağlanmamış olsaydı ne olurdu. Fiziksel olarak 0 Volt yada 5 Volta bağlı olmadığı için elektriksel gürültülerden ve yandaki pinlerin lojik durumlarından etkileneceği için giriş pininin lojik durumunda kararsızlık olacaktır. Bu olumsuzluğu ortadan kaldırmak için pullup veya pulldown dirençleri ile pinin lojik durumu normal şartlarda HIGH yada LOW bir değere sabitlenir. Pulldown direnci olarak 8.2 k lık direnç seçilmiştir. 10k dan büyük direnç değerlerinde pinin toprak seviyesine çekilmesi zorlaşacaktır. const int Led=13; //Led in bağlı olduğu pin numarası const int Buton=4;//butonun bağlı olduğu pin numarası void setup() pinmode(led,output); pinmode(buton,input); void loop() if (digitalread(buton)==high) digitalwrite(led,high); else digitalwrite(led,low); Butonlar, herhangi bir cihazı kontrol etmek istediğimizde kullandığımız en basit elektrik devre elemanlarından birisidir. Butonun yapı olarak basitliği, maliyeti azaltıp, güvenliği ve kullanımı kolaylaştırsa da mekanik olarak çalışan parçaları olduğu için butona basılma ve bırakma anlarında elektriksel salınım meydana gelir. Bu salınımlar her uygulamada karşımıza problem olarak çıkmayabilir. Yüksek hızda çalışan uygulamalarda butona basma süresinin milisaniyelerle ölçüldüğü noktalarda butonun 5 ms lik süre boyunca lojik durumunun 0 ve 1 arasında gidip gelmesi, tasarımcı için başlı başına bir sorun olur. Butona basıldığı an bu salınımlar başlar ve 5 ms lik bir süre boyunca devam eder. Bu süre zarfında kontrolü kaybetmemek için yazılımsal olarak 5 ms lik sürenin gözönüne alınması gerekir. Bunu için programı şu şekilde düzenleyebiliriz. 1. Butonun şimdiki ve sonraki durumlarını kaydet. 1

2. Butonda değişim olup olmadığını kontrol et. 3. Butonda değişim varsa 5 ms bekle tekrar kontrol et. 4. Sonraki durum aynı ise çıkışa ver, değilse 2. maddeye git. const int Led=13; const int Buton=4; boolean oncekidurum=low; boolean sonrakidurum=low; void setup() pinmode(led,output); pinmode(buton,input); void loop() sonrakidurum=digitalread(buton); if(sonrakidurum=!oncekidurum) delay(5); sonrakidurum=digitalread(buton); if(sonrakidurum=!oncekidurum) if (digitalread(buton)==high) digitalwrite(led,high); else digitalwrite(led,low); programı bir fonksiyon ile yazmak istersek; *******programın diğer bir versiyonu const int Led=13; const int Buton=4; boolean oncekidurum=low; boolean sonrakidurum=low; void setup() pinmode(led,output); pinmode(buton,input); boolean butonkontrol(boolean oncekidurum) 2

boolean sonrakidurum=digitalread(buton); if(sonrakidurum!=oncekidurum) delay(5); boolean sonrakidurum=digitalread(buton); if(sonrakidurum!=oncekidurum) return sonrakidurum; else return oncekidurum; else return oncekidurum; void loop() if (butonkontrol(oncekidurum)==high) digitalwrite(led,high); else digitalwrite(led,low); Deney Adı: Bir anahtar yardımıyla dc motoru çalıştırmak Gerekli olan malzemeler: (Şekil 1.1 de gösterilmiştir.) - Arduino uno - motor shield - on/off switch 3

- dc motor - breadbord - dc güç kaynağı - bağlantı kabloları Şekil 1.1 Donanımın Hazırlanması: İlk önce motor shield ile arduino uno arasındaki bağlantılar yapılır. Daha sonra motor shielddeki A terminaline dc motorun uçları bağlanır. Sonra on/off switch arduino nun ground ve 10 nolu dijital ucuna bağlanır. Son olarak dc güç kaynağı bağlantıları da motor shield üzerindeki yerlerine bağlanır. (Şekil 1.2, 1.3 ve 1.4 bu bağlantıları göstermektedir.) Şekil 1.2 Şekil 1.3 4

Şekil 1.4 Programın Yazılması: Bu projenin yazılımında bir dijital giriş, bir dijital çıkış ve çıkışı kontrol etmek için if şartlı yapısı kullanılmıştır. Yazılımın kodları aşağıda verilmiştir. 5

Bu programda buttonpin isimli değişkene sabit olarak 10 nolu pin değeri, motorpin e 3 nolu pin değeri ve buttonval isimli değişkene sayısal olarak 0 değeri atanmıştır. Daha sonra setup yapısında buttonpin giriş olarak, motorpin ise çıkış olarak ayarlanmıştır. Önemli bir ayarlama işlemi de 10 nolu pin in pull-up direncinin aktif hale gelmesidir. Bu da devre içerisindeki direncin digitalwrite() fonksiyonu ile aktif hale getirilmesiyle olur. Mesela 10 nolu pin i giriş olarak belirlediğimiz halde digitalwrite(10,high) fonksiyonu 10 nolu pin e bağlı pull-up direncini aktif hale getirir. (Eğer bunu yapmasaydık 10 nolu uca harici bir direnç bağlamamız gerekecekti tâki switch doğru çalışsın.) Loop döngü yapısı içinde buttonpin nolu pinden okuduğumuz dijital değeri buttonval isimli değişkene atarız. Daha sonra if şartlı yapısıyla buttonval değişkeninin değerini kontrol ettiririz. Eğer buttonval değeri lojik 1 ise motorpin numaralı çıkışa HIGH (yani lojik 1), değilse LOW (yani lojik 0) gönderilir. Böylece motor çalıştırılmış veya durdurulmuş olur. 6

Deney Adı: Potansiyometre ile bir dc motorun hızının kontrol edilmesi Dc motor hız kontrolünde potansiyometrenin kullanımı temel becerilerden biridir. Bu deneyde daha önce görmediğimiz map() fonksiyonunun kullanımını da öğreneceğiz. Arduino daki analog girişi kullanarak dc motorun hızını kontrol edeceğiz. Potansiyometreden gelen analog voltajı (bu voltaj 0 ile 5 volt arasındadır.) dijitale çevirip, bu voltaj ile doğru orantılı 0-1023 arasında bir sayı elde edeceğiz. Bu sayıyı ölçeklendirerek, motor shield üzerindeki pwm girişinin (ki bu aynı zamanda dc motorun hızını kontrol eder.) duty cycle nı kontrol edecek 0-255 arasında sayılar üreteceğiz. Gerekli olan malzemeler: (Şekil 2.1 de gösterilmiştir.) -Arduino Uno -motor shield -dc motor -10 kohm potansiyometre -ayarlı güç kaynağı -bread bord -bağlantı kabloları Şekil 2.1 Öncelikle motor shield ı arduino ya bağlamalıyız. Daha sonra potansiyometreyi arduinoya bağlamamız gerekir. Potansiyometrenin orta ucunu arduinonun analog pin 0 a, diğer uçlarının birini +5V pin ucuna diğerini ground ucuna bağlarız. Daha sonra motoru, motor shieldın A portuna bağlar 7

ve gerekli motor besleme bağlantısını yaparız. Daha sonra arduinoyu USB kablosuyla bilgisayara bağlayarak yazılımı yükleriz. Şekil 2.2 Şekil 2.3 Programın yazılması: 8

Bu deneyde analog pin ve dijital pwm pinini kullanacağız. Bu sebeple pot ile motor arasındaki iletişimi sağlamak için analogread() ve analogwrite() fonksiyonlarını kullanacağız. Program kodları aşağıda verilmiştir. Program potpin=a0, motorpin=3, potval=0 ve mappedpotval=0 değerleri atanarak başlar. Daha sonra setup yapısında potpin, giriş olarak, motorpin ise çıkış olarak atanır. Sonra loop yapısında potpin numaralı girişden okunan analog voltaj değeri ile orantılı bir sayı değeri (0-1023) potval değişkenine atanır. Bu değer map() fonksiyonu kullanılarak ölçeklendirilir ve (0-255) arasında bir değer pwm sinyalinin duty cycle nı belirler, bu da motorun hızını tayin eder. map(potval,0,1023,0,255); fonksiyonu pot un ürettiği 0-1023 arasındaki değeri 0-255 arasında ölçekler. Bu fonksiyonun genel kullanımı şu şekildedir: programı çalıştırdığımızda potansiyometreden okunan değerlerle orantılı bir pwm değeri 3 nolu uçdan motor shielda uygulanır. Bu da motorun hızını belirler. Potaniyometrenin değerini değiştirdikçe motorun hızının değiştiğini görürüz. 9

Deney Adı: İki adet dc motorun arduino ile kontrolü Gerekli olan malzemeler:(şekil 3.1 de gösterilmiştir.) - arduino uno - motor shield - iki adet dc motor - iki adet anahtar - bread bord - ayarlı güç kaynağı - bağlantı kabloları Şekil 3.1 Donanımın Hazırlanması: Bu deneyde iki adet push buton bulunmaktadır. Butonlardan birincisinin bir ucu arduinonun 9 nolu dijital pinine diğer ucu grounda bağlanır. İkinci butonun bir ucu 10 nolu dijital pine diğer ucu da grounda bağlanır. Motorlar motor shieldın A ve B portlarına bağlanır. Motorların beslemesi bağlanır. Bu deneyde motor hızı kontrol edilmeyeceğinden pwm sinyali kullanılmayacaktır. Şekil 3.2, 3.3 ve 3.4 yapılan bağlantıları göstermektedir. 10

Şekil 3.2 Şekil 3.3 Şekil 3.4 11

Programın Yazılması: Bu deneyde arduino ile haberleşmek için digitalread() ve digital Write() fonksiyonlarını kullanacağız. Butonlardan biri A portundaki motoru çalıştırmak için diğeri ise B portundaki motoru çalıştırmak için kullanılmaktadır. Yazılımın kodları aşağıda verilmiştir. Kodun başlangıcında pin değerleri ayarlanmış buttonval1 ve buttonval2 değişkenlerine 0 değeri atanmıştır. Setup yapısında ise butona bağlı pinler giriş olarak, motora bağlı pinler çıkış olarak belirlenmiştir. Bu ayarlamalardan sonra giriş butonlarına bağlı pinlerdeki pull-up dirençleri aşağıdaki iki komutla aktif edilmiştir. 12

digitalwrite(buttonpin1,high); digitalwrite(buttonpin2,high); Daha sonra loop yapısı içerisinde buttonpin1 in aldığı değere göre buttonval1, buttonpin2 nin aldığı değere göre buttonval2 ayarlanmıştır. Bunun için şartlı durumlarda kullandığımız if yapısı kullanılmıştır. 13

Deney Adı: Arduino ile dc motorun hız ve yön kontrolü Gerekli olan malzemeler:(şekil 4.1 de gösterilmiştir.) - arduino uno - motor shield - 10 kohm potansiyometre - anahtar (switch) - dc motor - ayarlı güç kaynağı - breadbord - bağlantı kabloları Şekil 4.1 Donanımın Hazırlanması: Bu deneyde yapılacak ilk iş motor shield ı arduino ya bağlamaktır. İkinci olarak potansiyometrenin orta ucu analog pin 0 a diğer iki ucu +5V ve Ground a bağlanır. Daha sonra on/off anahtarı (switch) dijital pin 10 ile toprak (ground) arasına bağlayın. En son USB den Arduino yu bilgisayara bağlayın. ( Şekil 4.2, Şekil 4.3 ve Şekil 4.4 de gösterilmiştir.) 14

Şekil 4.2 Şekil 4.3 15

Şekil 4.4 Programın Yazılması: Bu deneyde hem dijital hem analog pinleri kullanacağız. Analog pin motorun hızını kontrol etmek için, dijital pin motorun yönünü kontrol etmek için kullanılacak. Yazılımın kodları aşağıda verilmiştir. 16

Bu kodlarda ilk önce switchpin, potpin, motorpin, SwitchVal, potval ve mappedpotval in başlangıç değerleri belirlenir. Daha sonra setup yapısında switchpin ve potpin giriş olarak, motorpin çıkış olarak belirlenir. Sonra digitalwrite() fonksiyonu ile pull-up direnci aktif hale getirilir. Daha sonra döngü yapısı içerisinde switchpin den okuduğumuz değeri switchval e, potpin den okuduğumuz değeri potval e aktarırız. Potansiyometreden gelen analog voltaj değerine göre map() fonksiyonu kullanılarak 0 ile 255 arasındaki değerler mappedpotval e aktarılır. Bu da motorun hızını kontrol etmek için motorpin e gönderilir. Son olarak if yapısıyla da motorun yönü kontrol edilir. Eğer switchval değeri lojik 1 olursa motor saat yönünde, lojik 0 olursa saat yönünün tersinde döner. 17

Deney Adı: Potansiyometre ile servo motor kontrolü Gerekli olan malzemeler 1 adet Arduino 1 adet potansiyometre(5-10 Kohm yeterli olacaktır.) 1 adet servo motor Erkek jumper kablo 1 adet breadboard (Şekil 1.1 de gösterilmiştir) (şekil 1.1) Donanımın Hazırlanması Servo motorun kahverengi bacağı (Toprak) ve potansiyometrenin en sağdaki bacağı Arduinonun gnd bacağına bağlanır. Servo motorun kırmızı bacağı (Artı) ve potansiyometrenin en sol bacağı Arduino mikrokontrolörün 5V bacağına bağlanır. Servo motorun turuncu ucu (bilgi ucu) Arduinonun D9 bacağına bağlanır. Servo motorumumuzu bu pinden kontrol edeceğiz. Potansiyometrenin orta bacağı (bilgi ucu) Arduinonun A0 bacağına bağlanır. Mikrodenetleyici A0 pininden analog değer okuyacaktır(şekil 2.2 de gösterilmiştir.) 18

Programın Yazılması: #include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() myservo.attach(9); // attaches the servo on pin 9 to the servo object void loop() val = analogread(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there İlk önce servo kütüphanesi çağırılıyor. Servo Motor un kontrolü için servom adında bir nesne oluşturuluyor. Potansiyometre analog sıfır pinine bağlanıyor. Potansiyometreden gelen analog değeri taşıması için oluşturulan val değişkeni tanımlanıyor.servo Motor 9. pine bağlanıyor. Potansiyometreden aldığımız değeri val değişkenine yüklüyoruz(yüklenen değer 0 ile 1023 arasında).değişkenin sayısal değerini servo motora göre oranla (0 ile 1023 arasında olan değer 0 ile 19

180 arasına çekildi).servo Motor u val değişkeninde bulunan açı değerine karşılık gelecek şekilde konumlandır.15 milisaniye beklenilir. 20

Deney Adı: Arduino ile PIR sensor Gerekli olan malzemeler 1 adet Arduino PIR sensor Erkek jumper kablo 1 adet breadboard 1 adet led (Şekil 1.1 de gösterilmiştir) (şekil 1.1) Donanımın Hazırlanması İlk olarak PIR sensorumuzun kenar bacaklarını gnd ve 5v a bağlıyoruz. Orta bacağını digital pin 3 e bağlıyoruz. Led in + bacağını digital pin 4 e - bacağını da gnd ye bağlıyoruz. Donanım şekil 1.1 de gösterilmiştir.. Sensörün 3 pini bulunmaktadır. 21

1-Pozitif 2-Data 3- Negatif Programın Yazılması: int pirpin = 3; // PIR pin int ledpin = 4; // LED pin int deger = 0; void setup() pinmode(pirpin, INPUT); // PIR Pin'i giriş yapılıyor pinmode(ledpin, OUTPUT); // LED Pin'i çıkış yapılıyor Serial.begin(9600); //Serial Porttan veri göndermek için baundrate ayarlanıyor. void loop() deger = digitalread(pirpin); // Dijital pin okunuyor Serial.println(deger); // Okunan değer seri porttan okunuyor. if (deger == HIGH) digitalwrite(ledpin, HIGH); // Eğer okunan değer 1 ise LED yakılıyor. else digitalwrite(ledpin,low); // Eğer okunan değer 0 ise LED söndürülüyor. Deney Adı: Arduino ile HC-SR04 Ultrasonic Ping Sensor Gerekli olan malzemeler 1 adet Arduino Ultrasonic sensor Erkek jumper kablo 1 adet breadboard 2 adet led (Şekil 1.1 de gösterilmiştir) 22

(şekil 1.1) Donanımın Hazırlanması. Breadboard için HC-SR04 sensoru ve LED'leri board a yerleştirin.yeşil ledi Arduino Pin 3 e, Kırmızı ledi Pin 2 ye takın sensör üzerinde ki 5v u VCC pimini takın sensör üzerinde trigonometri pimini Pin 13 e takın. Sensör üzerinde echo pimini Pin 12 ye takın.aşağıdaki kodu yazıp, bilgisayarınıza Arduino bağlayın, ve upload ediniz. Programın Yazılması: const int pingpin = 13; int inpin = 12; int safezone = 5; int greenled = 3, redled = 2; void setup() Serial.begin(9600); void loop() long duration, cm; pinmode(pingpin, OUTPUT); 23

pinmode(greenled, OUTPUT); pinmode(redled, OUTPUT); digitalwrite(pingpin, LOW); delaymicroseconds(2); digitalwrite(pingpin, HIGH); delaymicroseconds(5); digitalwrite(pingpin, LOW); pinmode(inpin, INPUT); duration = pulsein(inpin, HIGH); cm = microsecondstocentimeters(duration); Serial.print(cm); Serial.print("cm"); Serial.println(); if (cm > safezone) digitalwrite(greenled, HIGH); digitalwrite(redled, LOW); else digitalwrite(redled, HIGH); digitalwrite(greenled, LOW); delay(100); long microsecondstocentimeters(long microseconds) return microseconds / 29 / 2; Deney Adı: Arduino ile LCD keypad e yazı yazma Gerekli olan malzemeler 1 adet Arduino LCD Keypad Shield Erkek jumper kablo 1 adet breadboard 24

(Şekil 1.1 de gösterilmiştir) (şekil 1.1) Donanımın Hazırlanması. Programın Yazılması:. #include <Wire.h> #include <LiquidCrystal.h> LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); void setup() lcd.begin(16, 2); lcd.print("karatekin"); 25

void loop() //Ana Döngü kodu yazımı Deneyin Adı: Kesme(Interrupt) Kontrol 26

Deneyde Gerekli olan Malzemeler: Arduino Uno, 8.2 k direnç, pır dedektörü, bağlantı kabloları Deneyin Yapılışı: Yazdığımız uygulamaların kesintiye uğramadan çalışması istenilen bir durumdur. Interrupt yani kesme ise en temel anlamda işlemcinin hali hazırdaki aktivitesini kesip başka bir iş yapabilmemize imkan sağlar. Mikrodenetleyici hassas bir kontrol işlemi gerçekleştirirken o süre içinde pinlere gelen herhangi bir istek yada veri değişimi söz konusu olabilir. Bu değişimlere cevap verebilmek için Interrupt kullanabiliriz. Program normal akışı içerisinde devam ederken, zamanlama yada donanım kesmelerinden birisi aktif olduğunda program akışı o kesme ile ilgili alt programa yönlendirilir. Altprogramdaki komutlar çalıştırıldıktan sonra ana program kaldığı yerden çalışmasına devam eder. Interrupt fonksiyonları oldukça basit ve belirli bir işi yerine getirecek şekilde yazılır. Bu fonksiyonların mümkün olduğunca çabuk çalıştırılıp bitirilmesi beklenir. Arduino uno iki adet donanım interruptına sahiptir. Gerekli ayarlamalar yapıldıktan sonra 2 ve 3 nolu dijital pinlerin lojik seviyesi değiştiğinde kesme(interrupt) tetiklenir ve ilgili kesme fonksiyonu çalıştırılır. Donanım kesmesinin tetiklenmesinde 4 mod vardır. LOW: kesme pini LOW seviyesinde olursa. CHANGE: kesme pinine uygulanan gerilim değiştiğinde, LOW iken HIGH, HIGH iken LOW olduğunda. RISING: yükselen kenar. kesme pini LOW konumundan HIGH konumuna çekildiğinde. FALLING: düşen kenar. kesme pini HIGH konumundan LOW konumuna geçtiğinde. Bu modlardan herhangi birisi seçilerek istenen donanım kesmesinin tetiklenmesi sağlanır. program yazarken dikkat etmemiz gereken noktalardan birisi de kesme fonksiyonu içerisinde delay() ve Serial.available() metodlarını kullanamayız. Kesmeleri kullanabilmek için öncelikle ayarlarını yapmalıyız. attachinterrupt(0,fonksiyon,mod) metodu ile kesme aktifleştirilir. Burada 0 ile belirtilen ilk parametre INT0 olarak 2 nolu dijital pinin parametresidir. Daha sonra ikinci parametre olarak kesme sinyali geldiğinde çalışmasını istediğimiz fonksiyonun ismini yazıyoruz. Bu fonksiyonun diğer fonksiyonlardan farkı geri dönüş değerinin olmaması ve parametre almamasıdır. Mod parametresi ise kesmenin nasıl tetikleneceğini belirtir. Kesmeleri pasifleştirmek için nointerrupts() metodu, pasif olan kesmeleri tekrar aktifleştirmek için interrupts() metodu kullanılır. Kesmenin kapatılması için detachinterrupt(interrupt) metodu kullanılır. 27

Devremizde arduino uno nun 2 nolu dijital bacağını kesme giriş sinyali için kullandık. Kesme sinyalini pır dedektörünün tetikleme ucundan aldık. Kesme oluştuğu zaman da seri monitörden kesme oluştu yazısını yazdırdık. Programın kodları; const int Led=13; void setup() pinmode(led,output); Serial.begin(9600); attachinterrupt(0,kesme,rising); kesme() Serial.println( kesme calisti ); void loop() digitalwrite(led,high); delay(1000); digitalwrite(led,low); delay(1000); 28