Kategori:

Arduino

Başlık:

Arduino Başlangıç Etkinlikleri

Arduino ile robotik kodlamaya başlamak ilk bakışta karmaşık gelebilir. Hele hele yapılan örneklere bakıp oradan buradan çıkan kablolar ve dağınık görüntü bu işin çok zor olduğu algısını oluşturmaktadır. Halbuki işin temeline indiğimizde her parçayı tek tek inceleyip işi basit parçalara böldüğümüzde aslında bu işin yapılamayacak kadar zor olmadığını görürüz. Bu yazının Arduino ile kodlamaya ve proje geliştirmeye ilk defa başlayacak kişiler hedeflenmekle beraber sık unutulan bağlantıların ve basit kodların hatırlanması amacıyla da hızlı bir kılavuz olması da hedeflenmektedir.

Etkinliklere başlamadan önce belirtmek gerekiyor ki Arduino ile proje yapmak için mutlaka Arduino setine sahip olmanıza gerek yok. Arduino devrelerini sanal olarak oluşturabileceğiniz Fritzing gibi offline programlar, Tinkercad gibi web ortamları mevcut. Özellikle Tinkercad ile hazırladığınız devreleri sistemin elverdiği ölçüde simüle edebiliyorsunuz. 

İlk defa başlayacak kişiler için bu etkinlikleri sırayla yapmalarını tavsiye ediyoruz. Devrenizi öncelikle Fritzing veya Tinkercad gibi ortamlarda öncelikle sanal olarak oluşturmanız faydalı olacaktır. Soru, görüş ve önerilerinizi yorumlar kısmına bırakabilirsiniz. 

1) Arduino ile kod yazmadan led yakmak:

Amaç: Bir ledi Arduino ile kod yazmadan yakmak.

Malzemeler:

  • Arduino Uno
  • Led
  • 220 Ohm Direnç
  • Breadboard
  • Jumper kablolar

Fritzing ile oluşturulmuş yukarıdaki devre şemasına bakarak devre yapısını oluşturalım. Ardından Arduino ile bilgisayar bağlantısını yaparak enerji verelim. Arduino çalıştığı anda ledimizin de yandığını görmemiz lazım. Aslında bu etkinlikte Arduino sadece bir elektrik kaynağı olarak kullanıldı. Ama bu etkinlikle ledin ve Arduino üzerindeki GND ve 5V pinlerinin ne işe yaradığı hakkında fikir sahibi oluyoruz. Burada ledin yanmaması için direnç kullanıyoruz. Eğer direnç kullanmazsak ledimiz büyük ihtimalle kullanılmaz hale gelecektir. 220 Ohm direnç yerine 330 Ohm veya daha yüksek seviyeli bir dirençte kullanabiliriz. Direnç ne kadar yüksek olurda ledin parlaklığı o kadar az olacaktır.

2) Arduino ile sırayla led yakmak

Amaç: 3 tane ledi 0,5 saniye aralıklarla sırayla yakmak.

Malzemeler:

  • Arduino Uno
  • 3 adet led
  • 3 adet 220 Ohm Direnç
  • Breadboard
  • Jumper kablolar

Yukarıdaki şemaya göre devremizi oluşturalım. Sonra da aşağıdaki kodu Arduino ya yükleyelim.

void setup() {
  // 2,4 ve 6 nolu dijital pinleri çıkış (output) olarak ayarlıyoruz
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(6, OUTPUT);
}

// loop döngüsüyle Arduinonun sürekli yapmasını istediğimiz işlemleri kodluyoruz
void loop() {
  digitalWrite(2, HIGH);  //2 nolu pinle lede elektrik verip yanmasını sağlıyoruz
  delay(500);             //Yarım saniye bekletiyoruz                    
  digitalWrite(2, LOW);   //2 nolu pinle verdiğimiz elektriği kesiyoruz böylece led sönüyor
  digitalWrite(4, HIGH);  
  delay(500);                      
  digitalWrite(4, LOW);
  digitalWrite(6, HIGH);  
  delay(500);                      
  digitalWrite(6, LOW);
}

Burada delay(500) ışığın ne kadar açık kalmasını istiyorsak o kadar sayı yazıyoruz. delay(1000) 1 saniye boyunca bekletir.

3) Arduino ile RGB ledi zamanlamayla 3 farklı renkte yakmak

Amaç: RGB ledi 0,5 saniye aralıkla kırmızı, yeşil, mavi renklerde ışıklandırmak.

Malzemeler:

  • Arduino Uno
  • 1 adet RGB led
  • 3 adet 220 Ohm Direnç
  • Breadboard
  • Jumper kablolar


Bu şema ortak anot(-) içeren türden rgb ledler içindir

RGB ledlerin ortak anot(-) ve ortak katot(+) içeren 2 türü vardır.

RGB ledde normal 2 bacaklı ledden farklı olarak 4 bacak vardır. Ortak anot içeren türde bu bacaklardan birisi (sağdan 2.si) toprağa bağlanır. Diğer ledler yukarıdaki şemada bağlandığı kablo renklerinin gösterdiği sırayla kırmızı, yeşil ve mavi renk değerleri almak için kullanılır. Ortak katot içeren türdeki rgb ledlerde ise uzun bacak voltaj bacağıdır. Ortak katot(+) pini olan rgb ledlerin uzun bacağı yukarıdaki şemadan farklı olarak 5v pinine bağlanır. Bu pinleri djital pwm pinlerle göndereceğimiz 0-255 değerler arasındaki değerlere göre led renk alacaktır.

Yukarıdaki şemaya göre devremizi oluşturalım. Sonra da aşağıdaki kodu Arduino ya yükleyelim. 

int red=3;
int blue=5;
int green=6;
 
void setup() {
pinMode(red,OUTPUT);
pinMode(green,OUTPUT);
pinMode(blue,OUTPUT);
}
 
void loop() {
analogWrite(red,0);  //Sadece kırmızı renk için sadece bu pine 255 değeri veriyoruz.
analogWrite(green,255);
analogWrite(blue,255);
delay(500);
analogWrite(red,255);
analogWrite(green,255);
analogWrite(blue,0);  //Sadece mavi renk için sadece bu pine 255 değeri veriyoruz.
delay(500);
analogWrite(red,255);
analogWrite(green,0); //Sadece yeşil renk için sadece bu pine 255 değeri veriyoruz.
analogWrite(blue,255);
delay(500);
}

4) Arduino ile ledi butonla yakıp söndürmek

Amaç: Normal bir ledi butonla açıp kapatmak. Butona bastığımızda açılacak, bir daha bastığımızda kapanacaktır.

Malzemeler:

  • Arduino Uno
  • Led
  • 220 Ohm Direnç (led için)
  • Buton
  • 10K Ohm direnç (buton için)
  • Breadboard
  • Jumper kablolar

Pek çok sitede butonla led yakma örneği verilirken atlanan şey, butona bir defa bastığımızda ledin yanması, bir defa daha batığımızda sönmesidir. Genellikle sitelerin çoğunda buton basılı tutulduğunda yanan basılı olmadığında sönen örnek yapılmaktadır ki burada durum biraz farklıdır. İstenen durumun sağlanması için "butonDurum" ve "ledDurum" adıyla iki değişken kullanmaktayız.

Yukarıdaki şemaya göre devremizi oluşturalım. Sonra da aşağıdaki kodu Arduino ya yükleyelim. 

int ledPin=2;
int butonPin=4;
int butonDurum=0;
bool ledDurum=0;
void setup(){
    pinMode(ledPin,OUTPUT); //led pinimizi çıkıs ayarladık
    pinMode(butonPin,INPUT); // buton pinimizi giriş ayarladık
 
}
void loop(){
    
    butonDurum=digitalRead(butonPin); // butondan değeri okuyoruz 
    if(butonDurum==HIGH){
       if(ledDurum==0)
       {  
       ledDurum=1;
       }
       else
       {
       ledDurum=0; 
       }
       delay(250); //Basma esnasındaki hızlı geçişleri engellemek için ufak bir bekleme koyuyoruz
    };

      if(ledDurum==1)
    digitalWrite(ledPin,HIGH);
    else
    digitalWrite(ledPin,LOW);
}

5) Potansiyometre ile bir ledi kademeli olarak yakma

Amaç: Bir ledin potansiyometre ile değişen düzeylerde ışık vermesini sağlamak.

Malzemeler:

  • Arduino Uno
  • 1 adet  led
  • 1 adet 220 Ohm Direnç (led için)
  • 10K potansiyometre
  • Breadboard
  • Jumper kablolar


Bu etkinlikle ilk defa potansiyometre kullanılmış oldu. Potansiyometrenin çalışma prensibi bu etkinlikle anlaşılacaktır. Ayrıca map fonksiyonuyla kodda yazılan nedenden dolayı oran orantı kurulması sağlandı.

Yukarıdaki şemaya göre devremizi oluşturalım. Sonra da aşağıdaki kodu Arduino ya yükleyelim. 

int analogValue = 0; 
int digitalValue = 0; 

void setup() {
pinMode(3, OUTPUT); 
}
void loop(){
analogValue = analogRead(A0);
digitalValue= map(analogValue,0,1023,0,255); //A0 dan gelen 0-1024 arası değeri map fonksiyonuyla 0-255 arasına oranlıyoruz
analogWrite(3, digitalValue); // 3 nolu dijital pine analog değerden gelen dönüşümü veriyoruz.
}

6) Potansiyometre değerine göre 3 ledi kademeli olarak yakma

Amaç: 3 adet ledin potansiyometreden gelen değere göre aşamalı olarak yakılması sağlanacaktır. En yüksek değerde 3 led birden yanacak, en düşük değerde hiçbir led yanmayacaktır. Ara değerlerde değerin miktarına oranla ledler yanacaktır.

Malzemeler:

  • Arduino Uno
  • 3 adet  led
  • 3 adet 220 Ohm Direnç (ledler için)
  • 10K potansiyometre
  • Breadboard
  • Jumper kablolar


Bu etkinlikte potansiyometre ile çok sayıda ledin potansiyometre değerine göre yanması "if" yapısıyla sağlandı.

Yukarıdaki şemaya göre devremizi oluşturalım. Sonra da aşağıdaki kodu Arduino ya yükleyelim. 


int analog_value = 0; 
int digital_value = 0; 
void setup() {
pinMode(2, OUTPUT); //2.pini çıkış olarak ayarladık
pinMode(4, OUTPUT); //4.pini çıkış olarak ayarladık  
pinMode(6, OUTPUT); //6.pini çıkış olarak ayarladık
}
 
void loop(){
analog_value = analogRead(A0); //Potansiyometreden değeri değişkene aktarıyoruz
digital_value= map(analog_value,0,1023,0,255); //Analog değeri map fonksiyonuyla dijital değere dönüştürüyoruz

if(digital_value<20){   //Dijital değer 20 den aşağı ise hiçbir led yanmayacak. Diğer durumlarda da ledler kademeli olarak yanacak
   digitalWrite(2, LOW);
   digitalWrite(4, LOW);
   digitalWrite(6, LOW);
  
} 

if(digital_value>19 && digital_value<85) {

   digitalWrite(2, HIGH);
   digitalWrite(4, LOW);
   digitalWrite(6, LOW);
  
}

if(digital_value>84 && digital_value<170) {

   digitalWrite(2, HIGH);
   digitalWrite(4, HIGH);
   digitalWrite(6, LOW);
  
}

if(digital_value>169){
   digitalWrite(2, HIGH);
   digitalWrite(4, HIGH);
   digitalWrite(6, HIGH);
  
} 

}

7) Potansiyometre değerine göre Rgb ledi 3 renkte kademeli yakma

Amaç: RGB ledin potansiyometreden gelen değere göre aşamalı olarak kırmızı, mavi ve yeşil  renklerinde ışık vermesi sağlanacaktır.

Malzemeler:

  • Arduino Uno
  • RGB led
  • 1 adet 220 Ohm Direnç
  • 10K potansiyometre
  • Breadboard
  • Jumper kablolar

RGB ledin 3 farklı renkte değişen tonlarda ışık vermesini sağlamak için bir önceki etkinlikte olduğu gibi map() fonksiyonuyla oran orantı yapıldı. Potansiyometreden gelen 0-1024 aralığındaki değer üçe bölünerek ilk bölüm kırmızı, ikinci bölüm mavi ve üçincü bölüm yeşil renk değerleri için kullanıldı. Her renk için bağımsız "if" yapısı kullanıldı.

Yukarıdaki şemaya göre devremizi oluşturalım. Sonra da aşağıdaki kodu Arduino'ya yükleyelim. 

int red=3;
int blue=5;
int green=6;
int analogValue = 0; 
int digitalValue = 0;
int redValue = 0;
int blueValue = 0;
int greenValue = 0;
void setup() {
pinMode(3, OUTPUT);
pinMode(5, OUTPUT); 
pinMode(6, OUTPUT);  
}
void loop(){
Serial.begin(9600);
analogValue = analogRead(A0);
digitalValue= map(analogValue,0,1023,0,255); //A0'dan gelen 0-1024 arası değeri map fonksiyonuyla 0-255 arasına oranlıyoruz
if(digitalValue<82)
{
  redValue= map(digitalValue,0,81,0,255); //dijital değer aralığını kırmızı tonları için oranlıyoruz
  analogWrite(red,redValue);  //Sadece kırmızı renk değerleri
  analogWrite(green,0);
  analogWrite(blue,0);
}
if(digitalValue>81 && digitalValue<164)
{
  blueValue= map(digitalValue,82,163,0,255); //dijital değer aralığını mavi tonları için oranlıyoruz
analogWrite(red,0); //Sadece mavi renk değerleri analogWrite(green,0); analogWrite(blue,blueValue); } if(digitalValue>163) { greenValue= map(digitalValue,164,255,0,255); //dijital değer aralığını kırmızı tonları için oranlıyoruz analogWrite(red,0); //Sadece yeşil renk değerleri analogWrite(green,greenValue); analogWrite(blue,0); } }

8) Buzzerdan düz ve kesintili sesler çıkarma

Amaç: Arduino ile buzzer modülünden düz ve kesikli sesler çıkarmak

Malzemeler:

  • Arduino Uno
  • Buzzer
  • 1 adet 150 Ohm Direnç
  • Breadboard
  • Jumper kablolar

Buzzer modülü gelen elektriksel frekanslara göre değişik tonlarda ses çıkaran bir modüldür. Buzzer ile alarm, uyarı sesleri yapılabilir. Hatta çeşitli notalarda melodiler bile çalınabilir. Bu konuda daha önce siteye eklenmiş bir örneğe buradan ulaşabilirsiniz. Burada buzzerın çalışma mantığını basit olarak kavramamızı sağlayacak örnekler yapacağız. Öncelikle yukarıdaki şekilde devremizi oluşturalım. Bu devrede direnç kullanılmasının sebebi buzzerdan gelecek cızırtılı sesi önlemektir. Eğer yeteri kadar ses çıkmıyorsa daha düşük bir direnç kullanabilirsiniz. Direnç kullanmadan da buzzeri bağlayabilirsiniz. Ama o zaman sesi biraz rahatsız edici olabiliyor. Büyük boyutlu bir direnç kullanırsanızda ses az çıkabilir.

Buzzerdan  sürekli ses çıkmasını sağlayan kaynak kod:

int buzzerPin = 2;
void setup()
{
   pinMode(buzzerPin, OUTPUT);
}
void loop()
{
   digitalWrite(buzzerPin,HIGH);
}

Buzzerdan 1 saniye aralıklı kesikli ses çıkmasını sağlayan kaynak kod:

int buzzerPin = 2;
void setup()
{
   pinMode(buzzerPin, OUTPUT);
}
void loop()
{
   digitalWrite(buzzerPin,HIGH);
   delay(1000);
   digitalWrite(buzzerPin,LOW);
   delay(1000);
}

9) Buton ile Buzzer kontrolü

Amaç: Arduino ile buzzer modülünden butonun basıl olup olmama durumuna göre ses çıkartma

Malzemeler:

  • Arduino Uno
  • Buzzer
  • Buton
  • 1 adet 10K Ohm Direnç (buton için)
  • Breadboard
  • Jumper kablolar

Buzzer modülünü butonla kontrol ederken bu örnekte 2 farklı durum uygulayacağız. Birinci durumda buton basılı iken buzzerdan ses çıkması değilken çıkmaması, ikinci durum da butona basılınca buzzerdan ses gelmeye başlaması, bir daha bastığımızda da buzzerdan  ses çıkmaması durumudur. Aslında bu durumun benzerini 4. etkinlikte yapmıştık. Burada led yerine buzzer kullanılacaktır.

Buton basıldığında buzzerdan ses veren, basılmadığında ses vermeyen kod bloğu söyledir:

int buttonPin=2;
int buzzerPin=4;
int buttonDurum=0;

void setup(){
    pinMode(buzzerPin,OUTPUT); //buzzer pinimizi çıkıs ayarladık
    pinMode(buttonPin,INPUT); // buton pinimizi giriş ayarladık
 
}
void loop(){
    
    buttonDurum=digitalRead(buttonPin); // butondan değeri okuyoruz 
    if(buttonDurum==HIGH)
    digitalWrite(buzzerPin,HIGH);
    else 
    digitalWrite(buzzerPin,LOW);
       
    delay(250); //Basma esnasındaki hızlı geçişleri engellemek için ufak bir bekleme koyuyoruz
}

Buton bir defa basıldığında buzzerdan ses vermeye başlayan, bir defa daha basıldığında sesi kesen kod şu şekildedir:

int buttonPin=2;
int buzzerPin=4;
int buttonDurum=0;
int buzzerDurum=0;
void setup(){
    pinMode(buzzerPin,OUTPUT); //buzzer pinimizi çıkıs ayarladık
    pinMode(buttonPin,INPUT); // buton pinimizi giriş ayarladık
 
}
void loop(){
    
    buttonDurum=digitalRead(buttonPin); // butondan değeri okuyoruz 
    if(buttonDurum==HIGH){
       if(buzzerDurum==0)
       {  
       buzzerDurum=1;
       }
       else
       {
       buzzerDurum=0; 
       }
       delay(250); //Basma esnasındaki hızlı geçişleri engellemek için ufak bir bekleme koyuyoruz
    };

      if(buzzerDurum==1)
    digitalWrite(buzzerPin,HIGH);
    else
    digitalWrite(buzzerPin,LOW);
}

10) Buzzerdan farklı butonlarla farklı tonlarda ses alma ve ses tonuna göre led yakma

Amaç: Arduino ile buzzer modülünden 2 butonla 2 farklı tonda ses alma bu sırada basılan butona göre led yakma.

Malzemeler:

  • Arduino Uno
  • Buzzer
  • 2xButon
  • 2xLed
  • 2 adet 10K Ohm Direnç (butonlar için)
  • 2 adet 220 Ohm Direnç (ledler için)
  • Breadboard
  • Jumper kablolar

Bu etkinlikte ilk defa "Select-Case" yapısı kullanıldı. Bu yapı ile bir değişkenin farklı durumlarına göre farklı kodlamalar yapılabilmektedir. Uygun durumlarda "Select-Case" yapısının kullanılması "if-Else if"-else" yapısına göre daha pratiktir. Ayrıca bu etkinlikte  buzzer için tone() fonksiyonu kullanıldı. Bu fonksiyon ile buzzerdan değişik frekanslarda ses çıkmasını sağlayabiliyoruz.  Bu fonksiyonun parametreleri

tone(pin_no,frekans,zaman_aralığı) şeklindedir. Aşağıdaki kodda zaman aralığı belirtilmediği için kesintisiz bir ses duyulacaktır. Yine aşağıdaki kod ile iki butona aynı anda basıldığında buzzerdan çıkan ses kesilecektir.

#define btnlow 2 //düşük ton butonu için 2 nolu pin belirlendi
#define btnhigh 4 //yüksek ton butonu için 4 nolu pin belirlendi
#define ledlow 5 //düşük ton ledi için 5 nolu pin belirlendi
#define ledhigh 6 //yüksek ton ledi için 6 nolu pin belirlendi
#define buzzerPin 9 //yüksek ton ledi için 6 nolu pin belirlendi
int btnlowDurum=0;
int btnhighDurum=0;
int buzzerDurum=0;
void setup(){
    pinMode(btnlow,INPUT); 
    pinMode(btnhigh,INPUT);
    pinMode(ledlow,OUTPUT); 
    pinMode(ledhigh,OUTPUT);    
    pinMode(buzzerPin,OUTPUT);  
}
void loop(){
    
    btnlowDurum=digitalRead(btnlow); 
    btnhighDurum=digitalRead(btnhigh); 


   if(btnlowDurum==HIGH && btnhighDurum==HIGH){
    buzzerDurum=0; //her iki butona aynı anda sesin kesilmesi için buzzerDurum değişkenini 0 yapıyoruz
  }


     if(btnlowDurum==HIGH){
    buzzerDurum=1; //düşük frekanslı ses için buzzerDurum değişkenini 1 yapıyoruz
  }

     if(btnhighDurum==HIGH){
    buzzerDurum=2; //yüksek frekanslı ses için buzzerDurum değişkenini 2 yapıyoruz
  }


switch (buzzerDurum) {
    case 0:
      digitalWrite(ledlow, LOW);
      digitalWrite(ledhigh, LOW);
      digitalWrite(buzzerPin, LOW);
      break;
    case 1:
      digitalWrite(ledlow, HIGH);
      digitalWrite(ledhigh, LOW);
      tone(buzzerPin, 264); //Düşük frekanslı ses için 264 değeri verildi siz daha farklı bir sayı yazabilirsiniz
      break;
    case 2:
      digitalWrite(ledlow, LOW);
      digitalWrite(ledhigh, HIGH);
      tone(buzzerPin, 528); //Yüksek frekanslı ses için 528 değeri verildi siz daha farklı bir sayı yazabilirsiniz
      break;
  }
}

11) Arduino ile 16x2 LCD'ye mesaj yazdırma

Amaç: Arduino ile 16x2 LCD modülüne istenen metni yazdırma

Malzemeler:

  • Arduino Uno
  • 16x2 LCD ekran
  • 10K potansiyometre
  • Breadboard
  • Jumper kablolar


Görüldüğü gibi biraz karmaşık görünen bir şema var. Eğer bu şekilde kablolarla uğraşmak istemiyorsanız LCD modülüyle I2C modülünü beraber kullanabilirsiniz. Ayrıca bu bağlantıyı yapmadan önce LCD modülüne bacakların lehimlenmiş olmasına dikkat edin.

Bu temel bağlantı şemasını yaptıktan sonra aşağıdaki kodu yükleyerek LCD'de istediğiniz yazının görünmesini sağlayabilirsiniz.

#include "LiquidCrystal.h"

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
lcd.begin(16, 2);
lcd.print("Merhaba dostlar");
}
void loop() {

}

12) 16x2 LCD'ye basılan butona göre değer yazdırma

Amaç: Arduino ile 16x2 LCD modülüne basılan butona göre istenen değeri yazdırma

Malzemeler:

  • Arduino Uno
  • 16x2 LCD ekran
  • 10K potansiyometre
  • Breadboard
  • 3 adet buton
  • 3 adet 10K Direnç (Butonlar için)
  • 1 adet 1K direnç (LCD için)
  • Jumper kablolar

Arduino ile lcd ve buyon kullanımı

Yukarıdaki şemaya göre devremizi oluşturduktan sonra aşağıdaki kodu Arduino'ya yükleyelim:

#include "LiquidCrystal.h"
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#define btnApin 8 
#define btnBpin 9 
#define btnCpin 10
int btnAdurum=0; 
int btnBdurum=0;
int btnCdurum=0; 
int btnDeger=0;  
void setup() {
lcd.begin(16, 2);
pinMode(btnApin,INPUT);
pinMode(btnBpin,INPUT);
pinMode(btnCpin,INPUT);
}
void loop() {
  btnAdurum=digitalRead(btnApin); 
  btnBdurum=digitalRead(btnBpin);
  btnCdurum=digitalRead(btnBpin);
 if(btnAdurum==HIGH){    lcd.clear();
    btnDeger=1; //LCD de sıcaklık ve nem gösterilmesi için
  }
  
  if(btnBdurum==HIGH){    lcd.clear();
    btnDeger=2; //LCD de gaz değeri gösterilmesi için
  }
 
  if(btnCdurum==HIGH){   lcd.clear();
    btnDeger=3; 
  }
switch (btnDeger) {
    case 0:
        lcd.setCursor(0, 0);
        lcd.print("LCD");
        lcd.setCursor(0,1);
        lcd.print("Butonlar");
      break;
    case 1:
        lcd.setCursor(0, 0);
        lcd.print("Mod 1");
      break;
    case 2:
 
        lcd.setCursor(0, 0);
        lcd.print("Mod 2");
      break;
      break;
    case 3:
 
        lcd.setCursor(0, 0);
        lcd.print("Can");
      break;
    default:
        lcd.setCursor(0, 0);
        lcd.print("LCD");
        lcd.setCursor(0,1);
        lcd.print("Butonlar");
      break;
  }   
}

13) I2C modülünü kullanarak 16x2 LCD'ye mesaj yazdırma

Amaç: Arduino UNO ile lcd ve i2c modüllerini beraber kullanma

Malzemeler:

  • Arduino Uno
  • 16x2 LCD ekran
  • i2c modülü
  • Breadboard
  • Jumper kablolar

Yukarıdaki gibi devre şemasını oluşturduktan sonra I2C modülünün kütüphanesi bilgisayarınızda yüklü değilse aşağıdaki bağlantıdan indirerek kurmanız gerekmektedir:

https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

Bağlantıda bulunan kütüphane dosyalarından birini bilgisayarınıza indirdikten sonra Arduino'nun kurulu olduğu dizindeki Libraries klasörünün içine  veya Windows kullanıyorsanız Belgelerim/Arduino/Libraries klasörüne klasör olarak açmanız gerekmektedir. Ya da Arduino IDE'den de aşağıdaki resimdeki yolu izleyerek ZIP kütüphane dosyasını yükleyebilirsiniz.

Kütüphaneyi yükledikten sonra aşağıdaki kaynak kodu Arduino'ya yükleyebilirsiniz.

#include "Wire.h" // I2C modülünü kullanmak için bu kütüphaneyi ekliyoruz
#include "LiquidCrystal_I2C.h"  //LCD modülü kullanmak için bu kütüpnaheyi ekliyoruz
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //  LCD I2C adresini tanımlıyoruz

void setup() {

  lcd.begin(16,2);
  lcd.setCursor(0, 0);
  lcd.print("Merhaba Dünya");
  lcd.setCursor(0,1);
  lcd.print("I2C ve LCD");
 
}
void loop() {

}

Eğer LCD ekranındaki yazının kayan yazı şeklinde olmasını istiyorsanız bu kodu aşağıdaki şekilde düzenleyebilirsiniz:

#include "Wire.h" // I2C modülünü kullanmak için bu kütüphaneyi ekliyoruz
#include "LiquidCrystal_I2C.h"  //LCD modülü kullanmak için bu kütüpnaheyi ekliyoruz
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //  LCD I2C adresini tanımlıyoruz

void setup() {

  lcd.begin(16,2);
  lcd.setCursor(0, 0);
  lcd.print("Merhaba Dünya");
  lcd.setCursor(0,1);
  lcd.print("I2C ve LCD");
 
}
void loop() {

  lcd.scrollDisplayLeft(); //Sola doğru kalmayı sağlar
  delay(1000

}

13) LM35 Sıcaklık sensörü ile dijital termometre yapma

Amaç: Arduino UNO ile LM35 sıcaklık sensörü kullanarak ortam sıcaklığını i2c vasıtasıyla LCD modülünde yazdırmak.

Malzemeler:

  • Arduino Uno
  • LM35 sıcaklık sensörü
  • 16x2 LCD ekran
  • i2c modülü
  • Breadboard
  • Jumper kablolar

Yukarıdaki devre şemasına göre devreyi oluşturduktan sonra aşağıdaki kaynak kodu Arduino'ya yükleyelim:

#include "Wire.h" // I2C modülünü kullanmak için bu kütüphaneyi ekliyoruz
#include "LiquidCrystal_I2C.h"  //LCD modülü kullanmak için bu kütüpnaheyi ekliyoruz
int lm35Pin=A0;
float lm35_gerilim;
float lm35_sicaklik;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //  LCD I2C adresini tanımlıyoruz
void setup() {
  lcd.begin(16,2);
  analogReference(INTERNAL);
  lcd.setCursor(0, 0);
  lcd.print("Sicaklik:");
}
void loop() {

  lm35_gerilim = analogRead(lm35Pin);
  lm35_sicaklik = lm35_gerilim / 9.31; 
  lcd.setCursor(0,1);
  lcd.print(lm35_sicaklik);
  delay(500);
}

14) Arduino ile Servo motor Bağlantısı

Amaç: Arduino UNO ile servo motor bağlantısı yapma ve servo motora hareket verme.

Malzemeler:

  • Arduino Uno
  • S90 Servo Motor
  • Breadboard
  • Jumper kablolar

Yukarıdaki şemaya göre servo motoru Arduino'ya bağlayınız ve aşağıdaki örnek kodu yükleyin.

#include "Servo.h"  // Servo kütüphanesini dahil ediyoruz
Servo srv;  // srv adıyla servo nesnesi oluşturuldu
void setup()
{
  srv.attach(3);  // Servo motoru 3 nolu pine bağladığımızı belirttik
}
 
void loop()
{
  srv.write(0);  //Servo motor 0 dereceye dönüyor
  delay(1000);
  srv.write(180);  //Servo motor 180 dereceye dönüyor 
  delay(1000);
}

Yukarıdaki kod vasıtasıyla birer saniye aralıkla servo motorumuzu ilk ve son konumlarına döndürmüş oluyoruz.

15) İki adet butonla servo motoru ileri geri hareket ettirme

Amaç: Arduino UNO ile servo motor bağlantısı yapma ve servo motoru 2 buton ile ileri-geri pozisyonlarda yönlendirme

Malzemeler:

  • Arduino Uno
  • Servo Motor
  • Breadboard
  • Jumper kablolar
  • 2 adet push buton
  • 2 adet 1k Ohm direnç(butonlar için)

arduino servo ve butonlar

Yukarıdaki şemaya göre devre sistemini oluşturunuz ve aşağıdaki örnek kodu yükleyiniz.

#include "Servo.h"  // Servo kütüphanesini dahil ediyoruz
Servo srv;  // srv adıyla servo nesnesi oluşturuldu
#define btnileri 5 //servo motoru ileri komutunu verecek buton pini tanımlandı
#define btngeri 6  //servo motoru geri komutunu verecek buton pini tanımlandı
int btnileriDurum=0;
int btngeriDurum=0;

void setup()
{
  srv.attach(3);  // Servo motoru 3 nolu pine bağladığımızı belirttik
  pinMode(btnileri,INPUT);
  pinMode(btngeri,INPUT);
}
 
void loop()
{
  btnileriDurum=digitalRead(btnileri);
  btngeriDurum=digitalRead(btngeri);
  if(btnileriDurum==HIGH){
  srv.write(0);  //Servo motor 0 dereceye dönüyor
  }
  
  if(btngeriDurum==HIGH){
  srv.write(180);  //Servo motor 0 dereceye dönüyor
  }
}

2027 views
YORUMLAR