Arduino RGB Led Kullanımı - Arduino Örnekleri

Arduino RGB led 
    Merhaba, bu yazıda Arduino ile RGB led kullanımına değineceğiz. RGB led kırmızı, yeşi ve mavi renklerde 3 adet led barındıran led elemanıdır. RGB led kullanırken dikkat etmeniz gereken en önemli husus ledin ortak anot(5v) mı ortak katot(gnd) mi olduğunu bilmektir. Her ikisininde bacak ve iç yapı şemasını aşağıya ekliyorum.

                                                                                               

Malzemeler

1 adet Arduino (örnekte uno kullandım)

1 adet RGB led (örnekte katot kullandım, anot kullanırken GND yerine 5v yada 3V3 e bağlayın)

3 adet direnç(Ben 270 ohm kullandım, 1k ya kadar yolu var, eğer direnç değeri az olursa RGB Led                           bozulabilir)(eğer 5V yerine 3V3 e bağlıyacaksanız gerek yok)

1 adet Breadboard (kullanmadan da yapabilirsiniz ama zor olur )

Jumper yada kablo 

Devre Şeması

Ortak anot RGB de uzun bacak güç girişi olacak ve direnç sadece burada kullanılacak(şemada 1K), ortak katot için ise uzun bacak GND ye gidecek ve 3 adet direnç (270 lik kullandım) renk bacaklaına bağlanacak. 


Ortak Katot Arduino Devresi 
Ortak Anot RGB Arduino devresi
   










Programlama

Devremizi kurduk sıra geldi kodlamaya. Kod yazmaya başlamadan önce RGB ledimizin Anot veya Katot olmasının burada da fark yaratacığını belirtmek isterim. Aşağıda ki kod Anot için olacak ancak siz katot kullanacaksanız ters düşünmeniz gerekecek yani Anot ta HIGH kapatmak için, LOW açmak için kullanılacak, tabi PWM ile işlem yaparken 0 en yüksek değer 255 ise en düşük değer olacak. Aşağıdaki örnek için katot kullanıcıları PWM değeri X(mesela 100) iken 255-X(255-100) yazarsanız da aynı sonucu alırsınız. Anot ile katot ayırt etme işini ürün alırken öğrenmeniz iyi olacak.


int yesil = 9; //yesil bacağın 9. pinde olacağını belirtiyoruz
int mavi = 10; //mavi 10 da
int kirmizi = 11; // kırmızı 11 de
int bekleme = 5;  //renk geçişleri arası beklenecek süreyi yazıyoruz

void setup() {
//pinleri çıkış olarak ayarlıyoruz
  pinMode(yesil, OUTPUT);
  pinMode(mavi, OUTPUT);
  pinMode(kirmizi, OUTPUT);
  
}
void loop() {
 // her bir bacak için ilk değer oluşturuyoruz
 
  int kirmizi_degeri = 255;
  int mavi_degeri = 0;
  int yesil_degeri = 0;
  
  //bir for göngüsü oluşturuyoruz ve i değerini 255 e kadar birer birer artmasında for içindeki görevler yapılacak
  for( int i = 0 ; i < 255 ; i += 1 ){
    yesil_degeri += 2; // yeşil değeri iki iki artacak
    mavi_degeri += 1;  //mavi bir bir azalacak
    kirmizi_degeri -= 1; // kırmızı bir bir azalacak
  
    //daha sonra değerler bacaklara yazılıyor
    analogWrite( yesil, yesil_degeri );
    analogWrite( kirmizi, kirmizi_degeri );
    analogWrite( mavi, mavi_degeri);
    
    // eğer ortak katot ise 
    //analogWrite( yesil, 255 - yesil_degeri); gibi yazılacak
  
    //bekleme süresi kadar bekleniyor
    delay( bekleme );
  }
}


Bir sonraki yazıda RGB ledi potansiyometre ile kullanacağız.

2 yorum:

İf Else yapısı ve Karşılaştırma İfadeleri (Arduino Programlama - C/C++ dersleri 4)

İf Else akış diyagramı
Merhaba bu yazıda kod deyince akla en çok gelen ve basit olan yapı olan İf - Else yapısınında bahsedeceğim. Çok bilinen yapı olduğu için kısa bir yazı olacak. İf kelime anlamı olarak "eğer" demek yani bir koşul eğer olursa bunlar olsun demek için kullanılıyor. Else is değil anlamında dır yani bir koşul olmazsa bunlar olsun demek için kullanılır. Birde bu ikisinin birleşimi  Else İf yapısı var, bu yapıda koşul birden fazla duruma sahip olabilirse kullanılıyor  Şimdi bu kalıbı Arduino da nasıl kullanacağımıza bakalım.



  /*arduonik.blogspot.com
  // bu arada tek satır yorum için kullanılırken /* - * /  çok satırlı yorum için kullanılıyor 
  */
  int acik=1; // int türünde ve acik adında bir değişken oluşturuyoruz. Bu değişken daha sonra lambamızı kontrol edecek.
              //led 0 da kapalı, 1 de yanıp sönecek ve diğer durumlarda devamlı yanacak.
              // bu örnek için değeri elle girp kodu arduinoya atacağız daha pc daha da sonra bluetooth  ve internet üzerinden ayarlıyacağız her şey zamanla :) .
  int led = 13; // Arduino üstündeki ledi kullanacağımız için led 13. pin olarak ayarlıyoruz         
  
  void yanip_sonme(int sure){// bir önceki yazıyı hatırlamak amaçlı yanıp sönme işlemini fonksiyon ile yapalım
  digitalWrite(led, HIGH); //ledimize elektrik veriyoruz
  delay(sure);             //sure değeri kadar bekliyoruz
  digitalWrite(led, LOW);  //led elektriğini kesiyoruz
  delay(sure);             // sure kadar bekliyoruz
  }  
  void setup() {   // Bu bölümün ne amaçla kullanıldığını bilmiyorsanız daha önceki yazılara kababilirsiniz
  pinMode(led, OUTPUT); //led pinimizi çıkış olarak ayarlıyoruz
  
  }
  
  void loop() {   // Bu bölümün ne amaçla kullanıldığını bilmiyorsanız daha önceki yazılara kababilirsiniz
  
  if(acik == 0){ //eğer acik değişkeni sıfıra eşitse
    digitalWrite(led, LOW); // led kapalı olsun diyoruz
    }
  else if(acik ==1){ // eğer acik değişkeni 1 ise
    yanip_sonme(650); // yanıp sönme fonksiyonumuzu çalıştırıyoruz ve bekleme değeri için 650 ms diyoruz
    }
    else{                    //diğer durumlar için yapılacakları belirtiyoruz dikkat ettiyseniz burada parantez yok
      digitalWrite(led,HIGH); //acik in 0 ve 1 olmadığı durumlarda led devamlı yanacak
      }
  }

İf else yapısı kullanılmış karanlıkta yanan led örneğini de incelemenizi tavsiye ederim.

Dikkat ettiyseniz yukarıda ki örnekte sadece eşitlik durumları kullanılmış fakat İf - Else yapısı küçük, büyük gibi karşılaştırma yapmaya imkan tanımaktadır. Bu ifadeleri liste halinde ekliyorum.

    == (eşitli)
  • != (eşit değillik)
  • < (küçüklük)
  • > (büyüklük)
  • <= (küçük eşitlik)
  • >= (büyük eşitlik)


1 yorum:

Fonksiyonlar İçine Değişken Atama (Arduino Programlama - C/C++ dersleri 3)

Merhaba arkadaşlar bu yazımda daha önce oluşturduğumuz fonksiyonları biraz daha özelleştireceğiz ve parantez içine bir şeyler ekleyip eklediğimiz şeylere göre farklı sonuçlar elde edeceğiz. Tanım biraz karışık gelmiş olabilir farkındayım ama kodlar içindeki açıklamalar size yardımcı olacaktır.


İlk olarak daha önce burada örneğini yaptığımız led uygulamasının basit halini yapacağız sizde Arduinoya ısınmak için bu örneği aşağıdaki yöntemle yaparsanız sizin için çok iyi olur. Takıldığınız yer olursa yorum olarak sormaktan çekinmeyin.

İlk örnekte devre kurmamıza gerek yok direk Arduino kartımızda bulunan ledi kullanacağız.

 
// arduonik.blogspot.com
// Bu örnekte Arduino kartımızda dahili bulunan ve 13. pine bağlı led kullanacağız
int led = 13;  // pinimize "led" adını veriyoruz


void ac_kapa(int bekleme){ //daha sonra "ac_kapa" adında bir fonksiyon oluşturuyoruz ama daha önceki parantez içinin aksine burada bekleme adında bir int değişken var
// fonksiyonu kullanırken bu değişken yerine istediğimiz değeri yazarsak sadece bu fonksiyon içinde kullanılan bekleme değişkenleri yazdığımız değeri alacak
    digitalWrite(led, HIGH);   // ilk başta ledimizi açık duruma getiriyoruz
  delay(bekleme);               // ve bekleme değişkeni kadar bekliyoruz
  digitalWrite(led, LOW);    // ardından ledi kapatiyoruz
  delay(bekleme);            // ve led kapalıyken bekleme değişkeninin değeri kadar bekliyoruz
}  // fonksiyonu kapatmayı unutmayın :)
//kendi fonksiyonumuzdan sonra Setup fonksiyonunu oluşturuyoru
void setup() {

  pinMode(led, OUTPUT);  //led olarak adlandırdığımız 13 nolu pini çıkış pini olarak ayarlıyoruz
}

// Daha sonrada loop fonksiyonuna geçiyoruz
void loop() {
ac_kapa(500);             // ac_kapa fonksiyonunu çalıştırıyoruz ve bekleme değişkenini 500 yapıyoruz yani her iki delay da 500 ms olacak
}

Şimdi bu kodu biraz daha geliştirip açık kalma ve kapalı kalma sürelerini farklı farklı olarak kullanalım

// arduonik.blogspot.com
// Bu örnekte Arduino kartımızda dahili bulunan ve 13. pine bağlı led kullanacağız
int led = 13;  // pinimize "led" adını veriyoruz


void ac_kapa(int bekleme_acik,int bekleme_kapali){ //daha sonra "ac_kapa" adında bir fonksiyon oluşturuyoruz ama daha önceki parantez içinin aksine burada 
//bekleme_acik ve bekleme_kapali adında iki int değişken ekliyoruz
// fonksiyonu kullanırken bu değişkenler yerine istediğimiz değeri yazarsak  bu fonksiyon içinde kullanılan bekleme_acik ve bekleme_kapali değişkenleri yazdığımız değerleri alacak
    digitalWrite(led, HIGH);   // ilk başta ledimizi açık duruma getiriyoruz
  delay(bekleme_acik);               // ve bekleme_acik değişkeni kadar bekliyoruz
  digitalWrite(led, LOW);    // ardından ledi kapatiyoruz
  delay(bekleme_kapali);            // ve led kapalıyken bekleme_kapali değişkeninin değeri kadar bekliyoruz
}  // fonksiyonu kapatmayı unutmayın :)
//kendi fonksiyonumuzdan sonra Setup fonksiyonunu oluşturuyoru
void setup() {

  pinMode(led, OUTPUT);  //led olarak adlandırdığımız 13 nolu pini çıkış pini olarak ayarlıyoruz
}

// Daha sonrada loop fonksiyonuna geçiyoruz
void loop() {
ac_kapa(500,250);             // ac_kapa fonksiyonunu çalıştırıyoruz ve bekleme_acik değişkenini 500, bekleme_kapalı değişkenini 250 yapıyoruz yani her iki delay da farklı olacak
}

Daha öncede dediğim gibi blogta ki örneklerden Trafik Lambası örneğinin devresini kurup kendi yazdığınız foknsiyon ile fonksiyon içine yazılan rengi yakacak bir kod yazmak size bir şeyler katacaktır. Takıldığınız yeri  yorumda sorabilirsiniz.

2 yorum:

Arduino ile Servo Motor Kullanımı - Tarama yapma (Arduino Örnekleri)

Merhaba bugün robotikte çok kullanılan motor türü olan servo motorlardan ve bu motorların Arduino ile kontrolünden bahsedeceğim. 
SG 90 Servo Motor


Yukarıda  en ucuz servo motor resmi kullanılmış, bu motor ucuzdur ancak plastik olduğu için pek bir yük kaldıramaz ama bu işlere yeni başlayanlar genelde bu motoru alırlar kararı size bırakmakla birlikte bir kaç dolar daha verip biraz daha sağlamını almanızı öneririm. Tabi bu servo ile de yapılan güzel projeler mevcut bir kaç örneğini de siteye ekleyeceğim zaman içinde.

Servo motorlar çarklardan ve içindeki sürücüden oluşur. Ayrı bir sürücü kullanmak zorunda değilsiniz. Bazı üst düzey servolar ki akıllı servolar olarakta anılırlar geri bildirim birimi de içerir yani o anki iç sıcaklık, tork, çektiği enerji ve pozisyonu gibi bilgileri kullanıcıya iletir, üst düzey projelerde akıllı servo kullanımı yaygındır.


Servolarda dikkat edilmesi gereken bazı noktalar var, en önemlisi servoların hemen hemen hepsinin belli bir açı sınırı vardır ucuz servolarda bu sınır 180 derece dense de tam olarak 180 dönmemektedirler tabi "servo hack" denilen bir olayla servolar sınırsız açı ile dönebilirler ancak bu zamanda istediğiniz pozisyona getiremezsiniz yani normal dc motor gibi davranırlar. Pahalı servolarda servoyu bozmadan tekerlek gibi kullanım özellikleri var bunu da belirteyim. Servolar hakkında bu kadar bilgi şimdilik yeter  Artık servo moturu Arduino ile kullanma zamanı.



Devre şeması yanda gözüküyor zaten 3 kablo olduğu ve sürmek için gerekli elemanlar servo motorun içinde olduğu için devre kolay. Siyah veya kahverengi olan kablo GND kablosudur, kırmızı ise 5V kablosudur ve bu renkler genelde servo dışında da bu şekilde kullanılır. Diğer renkli olan kabloda(sarı, turuncu, beyaz  olabilir) sinyal kablosudur ve Arduino nun digital pinlerinden birine bağlanır. Örnekte ben Arduino nun 9. pinine bağladım. Detaylı resim aşşağıda.

Devre bağlandıktan sonra sıra kod işine geliyor detaylı açıklamaları kodun içinde yapacağım. Dikkat etmemiz gereken servo kendine ait bir kütüphaneye sahip ve bu kütüphane Arduino yanında gelmektedir tekrar indirmeye gerek yok.

#include <Servo.h> //kütüphanemizi ekliyoruz, Taslak > kütüphaneyi içe aktar > Servo   yolu ilede eklenebilir.


int servoPin = 9; // Servonun bağlı olduğu pini ekliyoruz


Servo servo;      // Kütüphane sayesinde Servo adlı bir değişken oluyor ve tıkpı int, float gibi tanımlanıyor biz burada servo olarak adlandırıyoruz.


int aci;            // açı değerimizi tutacak integer türünde değişken oluşturuyoruz
 
void setup() 
{ 

  servo.attach(servoPin);  // .attach komutu ile servoyu ekliyoruz
 
 servo.write(0);      // bazı servolar ilk başta saçma sapan hareket yapar yada belirsiz bir konumda başlar bunu önlemek için .write komutu ile servo açısını 0 yapıyoruz.
  
  delay(1000);         //Servonun kendisine gelmesi için bekliyoruz bu süre sizin servonuza göre değiştirilebilir. 
 
// bu iki işlemi setup içinde yapıyoruz çünkü devreye elektrik deldiğinde sadece birkere çalışması yeterli eğer loop içinde olsa 
// her turda servo 0 derece olucak ve 1 sn bekliyecek
} 
 
void loop() 
{
  //Tarama hareketi için iki for döngüsü yazıyoruz burada servonun en fazla 180 derece gittiği varsayıldı farklı değerler için 180 değeri değiştirilebilir
 
 for(aci=0;aci<=180;aci++){ // açımız 0 olduğunda 180 dereceye kadar bir bir artacak 
    servo.write(aci); // ve bu değer servoya yazılarak servonun hareketi sağlanacak
    delay(25);        // araya çok az bir bekleme koyuyoruz ki sistem saçmalamasın 
  }
   for(aci=180;aci>=0;aci--){ // açımız 180 olduğunda 0 dereceye kadar bir bir azalacak
    servo.write(aci);  // bu değer servoya yazılacak
     delay(25);        //tekrar her derece arasında kısa bir süre beklenecek 
 } 
}

1 yorum:

Fonksiyonlar ve void setup - void loop ( BareMinimum) (Arduino Programlama - C/C++ dersleri 2)





    Uzun bir aradan sonra merhaba. Bu yazımda önce Arduino programlarken her zaman kullanacağımız   Setup, loop terimlerinden ve kendimiz nasıl yeni fonksiyon yazacağımız dan bahsedeceğim. Zaten yandaki şekil Setup ve Loop için kafanızda bir şeyler canlandırmıştır. Bu arada Void setup ve Void loop yani Arduinonun çalışması için gereken kodlara BareMinimum denmektedir.



    Void Setup

    void setup bir fonksiyondur ve yeni Arduino IDE lerinde siz yazmadan yeni sayafada karşınıza gelir. bu fonksiyon karta elektrik verdiğimizde sadece bir sefer çaılışır ve sırasını loop fonksiyonuna bırakır. Eğer reset butonuna basarsak yani gücü kesip geri verirsek tekrar çalışır. Sadece bir defa çalıştığı için adından da anlaşıldığı üzere kartın kurulum bilgilerini barındırır. Genelde seri bağlantı başlatılması, pinlerin nasıl çalışacağının belirlenmesi gibi sadece başta ve  bir defa yapılması gereken işlemler burada belirtilir. pinlere isim takma yada değişken belirleme işleri ise bu fonksiyon çalışmadan yapılır.

   Void Loop

   Setup fonksiyonun bir sefer çalışması ardından devamlı çalışan kısımdır. Bu kısımda devamlı olarak çalışmasını istediğimiz sensör ölçümü ve işlenmesi, veri alışverişi, pini aktif ve pasif ( 1-0 durumu) gibi kodlar içerir.


    Kullanımları aşağıda ki gibidir.

void setup() {
  // yalnızca bir sefer çalışacak kurulum kodları
}

void loop() {
  // devamlı bir döngü ile çalışacak işlem kodları
}

   Fonksiyon Oluşturma

    Fonksiyonlar bir işleme isim takma gibi düşünebiliriz. Özellikle uzun kodlarda kafamız karışabilir veya bir işlemi birçok kez kullanmamız gerekebilir, bu gibi durumlarda fonksiyonları kullanmak çok yararlı olacaktır. Mesela bir çizgi izleyen robot yaptığımızda motrun sola ve sağa dönmesi için iki farklı fonksiyon yazdığımızda kodumuz dağa anlaşılır olacak ayrıca düzeltmeleri  daha kolay yaparsınız. sözlü anlatımdan ziyade bir örnek daha anlaşılır olacaktır.


int led = 13; // 13. pinimizin adını led olarak belirliyoruz
void setup() {
  // sadece bir defa çalışacak kurulum kodlarımızı yazıyoruz(pin mod, seri bağlantı başlangıcı gibi)
  pinMode(led, OUTPUT); // led pinini çıkış pini olarak ayarlıyoruz
}

void loop() {
  //sürekli döngü içinde çalışacak kodumuzu yazıyoruz
ac_kapa();//ac kapa fonksiyonunu çalıştırıyoruz fonksiyon loop içinde olduğu için 
}

void ac_kapa(){
  //kendimize ait bir fonksiyon yazıyoruz
  digitalWrite(led, HIGH);   // Ledi yakıyoruz
  delay(1000);                  // bir saniye led açık durumda bekliyoruz
  digitalWrite(led, LOW);    // ledi kapıyoruz
  delay(1000);                  // bir saniye daha bekliyoruz
  }

Daha sonra eklenecek örnek projelerde kullanımları ile fonksiyonları daha iyi kullanacağız.Ayrıca devre şemasını eklemiyorum sitemde 3 farklı örnek bulunmakta. Direnç eklemeyi unutmayın her ledin farklı bir iç direnci olduğu için bazı ledler direnç kullanmadan yanarken bazıları küçük dirençler kullansanız dahi bozulabilir bunun hesabını da ilerleyen günlerde paylaşacağım

5 yorum:

İTÜ Robot Olimpiyatları 2015


      Türkiye'nin en büyük robotik etkinliği olan İTÜRO İTÜ Kontrol ve Otomasyon Kulübü tarafından 9-10-11 Nisan 2015’te, İTÜ Ayazağa Kampüsü Süleyman Demirel Kültür Merkezi’nde dokuzuncusu düzenlenecek olan İTÜ Robot Olimpiyatları, robotik alanında çalışma yapmakta olan öğrencileri, akademisyenleri ve endüstri temsilcilerini düzenlenecek etkinlikler aracılığıyla bir araya getirmeyi hedefleyen ve meydana gelen teknolojik gelişmeler ışığında bu alanda yapılan çalışmaları sorgulamayı planlayan bir oluşumdur.
     Her yıl Türkiye’nin dört bir yanından binlerce lise ve üniversite öğrencisi İTÜRO’ya yarışmacı veya izleyici olarak katılmaktadır. Proje kayıtlarının internet üzerinden yapıldığı İTÜRO’da robotlar Çizgi İzleyen, Mikro Sumo, Basketbol, Yangın Söndüren, Merdiven Çıkan, Labirent, Renk Seçen, Kendini Dengeleyen, Senaryo ve Serbest Kategori olmak üzere on farklı yarışmada yer almakta, aynı zamanda organizasyon katılımcıları Süleyman Demirel Kültür Merkezi’nde kurulan masalarda robotlarını sergileme fırsatı bulmaktadır. İTÜ Robot Olimpiyatları kapsamında akademisyenler, sanayi katılımcıları ve deneyimli öğrenciler tarafından, robotik ve kontrol bilimi gibi alanlarda seminerler, söyleşiler, paneller ve sergiler düzenlenmektedir. Yarışmalarla eş zamanlı olarak düzenlenen bu etkinlikler, bu alanda çalışmalar yapmakta olan katılımcılara yol göstermekte ve katılımcıların bakış açılarını genişletmektedir.

      Ayrıntılı bilgiyi bu adresten edinebilirsiniz.
     
      Son kayıt Tarihi 7 Nisan 2015 saat 23.59

0 yorum:

Değişkenler (Arduino Programlama - C/C++ dersi - 1)

Merhaba arkadaşlar bugün Arduino programlarken temel dil olan C dilinin değişkenlerinden bahsedeceğiz. Kod yazarken bir çok hesaplama, eşitleme ve adlandırma yaparız değişkenler bu değerlerin saklandığı yerlerdir. Mesela Arduino da pinler sayı olarak belirtilir ancak çok fazla pin kullınca hangi pin neye bağlı olduğunu karıştırabiliriz bu nedenle her bir pine ad veririz ve bu esnada değişken kullanırız, yada sensör değerlerini değişkenler de saklarız. Fark ettiyseniz verdiğim iki örnekten biri harf lerden oluşurken diğeri sayılardan oluşur ve biz bu ikisini farklı tür değişkenler de kullanırız. Bu yazıda en çok kullanılan char, int, long, float, double ile ön ekleri olan const ve unsigned terimlerini inceleyeceğiz. Önce ön ekleri inceleyelim bu ekler hepsinde geçerli ancak basit projeler de pek kullanılmazlar

Const 

Const önüne geldiği değişkenin daha sonra değişmesine engel olur. Yani sadece okunabilir yapar ve genelde Pi gibi sabit değerler ile pin tanımlamaları yapılırken  kullanılır.
const float pi = 3.14;

Unsigned

Önüne geldiği değişkenin negatif kısımlarını da pozitife ekler ve sadece pozitif sayıları algılatır. Mesela Char -128 ile 127 arsında sayı alırken Unsigned Char 0 ile 255 arasında değer alır. 
unsigned char e = 240;
Artık değişkenlere geçelim üsteki ön ekler için her bir değişkene özel örnek belirtmeyeceğim.

Char (character)
Char veri tipi her tek karakteri veya İşaretli -128 ile 127 arası tam sayı saklaya bildiğimiz ve hafızadan 1 byte yer çalan değişkendir. 
char c = 'd';

Int(integer)
Bu değişken türü en çok karşılaşılan değişkenlerin başında gelir. Uno gibi ATmega tabanlı kartlarda -32768 ile 32768 arası tam sayı değeri alıp 2 byte(16 bit) harcarken Due gibi kartlarda -2147483648 ile 2147483647 arsında tam sayı değeri alıp 4 byte ( 32 bit) yer kaplar.
int b= 3;   


Long
-2147483648 ile 2147483647 arasındaki sayıları barındırır ve 4 byte yer kaplar. Eğer int ile long değişken türleri arasında matematiksel işlem yapılacaksa sonuna rakamın sonuna L eklenir. 7 basamak hassasiyetine sahiptir.
 long l = 186000L;
 long f= -135.7;

Double
Long ile benzerdir ancak basamak hassasiyeti 16 dır. Uno gibi ATmega kartlarda 4 byte Due gibi kartlarda 8 byte yer kaplar. Long double ile hassasiyet 20'ye kadar artar.
 double g= -135.16;

Float
Bu değişken -3.4028235E+38 ile   -3.4028235E+38 arsındaki sayıları 4 byte yer kaplayarak saklar. Ondalıklı sayılar için sıkça kullanılır. İnteger ile işlem yapmadan önce integer değerin önüne "(float)" almalıdır.
    float s = 1.117;
    int x = 3;
    float z = (float)x / 2.2;

Boolean
Doğru ve yanlış anlamında "True" ve "False" değerleri içerir ve bir byte yer kaplar.
boolean calisma = false;

0 yorum:

Arduino 7 segment LED display - arduino ile sayaç örneği


    Merhaba arkadaşlar bugün arduino ile Yedi segment LED görüntü modülü yada kısaca 7 segment kullanımına bakıp basit bir örnek yapacağız. 

Yedi segment LED görüntü modülü
    7 segment yanda da gördüğünüz gibi 8 şeklinde 7 adet led çubuğun birleşmesi ile oluşur istediğimiz rakam yerinde ki ledleri yakarak tüm rakamları elde edebiliriz. Renk ve boyut olarak çok çeşitli olsa da asıl farklılık ortak katot ve ortak anot modelleri arasındadır. Ortak anot modelinde tüm ledler eksi uca bağlanırken gereken güç( genelde 5 volt) tek bacaktan verilir, ortak katot ta ise güç her lede ayrı ayrı verilir ground çıkışı tek olur bağlanmaları yanı sıra kodlamaları da terstir. Bu yazıda ortak katot modelini kullandık bu model bana daha kolay geliyor. Ayrıca bu arkadaşı sürmek için 74HC595 veya 7447 entegresi kullanabiliriz nu sayede arduino da daha az pin kullanırız ve kodlamamız daha kısa olur ancak bu entegre olmadan da led display arduino ile sürülebilir bu yazıda entegre kullanmayacağız ancak önümüzde ki günlerde bu entegre ile daha karmaşık bir 7 segment projesi paylaşacağım. Ayrıca 7 segment yönü noktası aşşağıda olacak şekilde kabul edilse de  direk arduino ya bağlanırken şart değil bu örnekte nokta üstte olacak şekilde ayarlamışım. Şimdi örneğimize geçelim. Örnekte her bir saniyede display da gösterilen rakam 1 artacak 9 olunca sıfırlanacak, bu  projeyi ilerde geliştirip saat, klonometre ve zamanlayıcı gibi kullanışlı örnekler yapacağız.

7 segment pin şeması
    Malzemeler
    1 adet 7 segment led display ( ortak katot)
    1 adet arduino
    1 adet bradboard
    8-9 adet jumper yada kablo kesiti
    7 adet direnç (100-220 ohm olabilir ancak ben bu çizim de kullanmadım)

   Devre Kurulumu
     7 segment in ilgili bacaklarını sıra ile  arduino nun  digital pinlerine bağlanır ortak katot ( ground) da GND pinine bağlanır. Şemayı ekliyorum çok kablo olduğu için karışabilir ancak kod içinden kolayca anlayabilirsiniz.
7 segment LED display Arduino örnek devresi
    Programlama
   Her zaman ki gibi burada da söyleyeceklerimi  kod içine ekliyorum ancak bu devreyi çalıştırdıktan sonra 7 segmenti doğru şekilde ( nokta aşşağıda) noktası bağlanmış olarak çalıştırmanız bu anlatımı daha verimli kılacaktır yararlı olacaktır.


void setup()
{
  // pinleri tanımlıyoruz, isterseniz int a = 0; gibi tanımlamalar ile bacak numaralrını adlandırabilirsiniz ancak bu projede pek gerek yok
  pinMode(0, OUTPUT);//a
  pinMode(1, OUTPUT);//b
  pinMode(2, OUTPUT);//c
  pinMode(3, OUTPUT);//d
  pinMode(4, OUTPUT);//e
  pinMode(5, OUTPUT);//f
  pinMode(6, OUTPUT);//g
}
void loop(){
  // istersek kodu while, case filan ekleyerek daha profesyonel hale getirebilirz ancak sonuç aynı olacak :)
  // 0 dan 9 kadar sayıp tekrar 0 a dönecek delay olarak 1 sn ayarladım bu sayede kronometre gibi kullanılabilir
  // 0
   digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
  delay(1000);
  // 1
    digitalWrite(0, LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
  delay(1000);
  // 2
   digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,LOW);
  delay(1000);
    // 3
   digitalWrite(0,HIGH);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  //4
     digitalWrite(0,LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  // 5 
     digitalWrite(0,HIGH);
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  
  //6
     digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  
  //7
     digitalWrite(0,LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
  delay(1000);
  
    // 8
   digitalWrite(0,HIGH);
    digitalWrite(1,HIGH);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  
  // 9
     digitalWrite(0,LOW);
    digitalWrite(1,LOW);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(6,HIGH);
  delay(1000);
  }

Başka bir yazıda görüşmek üzere, Devreyi nokta altta olacak şekilde kurmayı unutmayın yoksa gelişmiş 7 segment projelerinde bocalarsınız.

0 yorum:

Arduino Buton Kulanımı - Buton ile led yakma


    Merhaba bu yazıda basit bir şekilde buton kullanımına değinip ledi buton ile kontrol edeceğiz. Butonların bir çok çeşidi vardır biz bu yazıda 4 bacaklı en çok kullanılan modeli inceleyeceğiz. Öncelikle buton bağlanmasını inceleyip ardından kodlarına göz atacağız sonuçta buton ile ledi kontrol edeceğiz.




Malzemeler
  • 1 adet buton
  • 1 adet led ( Arduino da bulunan ledi kullanabiliriz 13. pin)
  • 1 adet 10Kohm direnç
  • 1 adet 100 - 220 ohm direnç (dahili ledi kullanırsak gerek yok)
  • 1  adet Arduino
  • 1 adet breadboard
  • Yeteri kadar jumper yada kablo kesiti (6 - 8 adet)

    Devre Kurumu
    Buronun bir ucunu 10k lık dirence ve direnci GND pinine bağlıyoruz. Butonun direncin bağlandığı bacağın yanındaki bacağı 5 volt çıkışlı pine son olarak ta direnç bağlı pinin karşısındaki bacağı Arduino da digital pinlerden birine bağlıyoruz. Butonun son bacağı boş kalacak. Led ise dağa önce öğrendiğimiz gibi bağlanacak ancak daha hızlı ve zahmetsiz proje için 13. pine bağlı dahili led kullanılabilir. Devre şemasını ekliyorum.
Arduino buton ile led kontrolü
     Programlama
     Burada yazacak çok fazla bir şey yok gerekli açıklamalar kod içersin de mevcut.

int buton = 9;     // butonun bağlandığı pin
int led =  13;      // ledin bağladığı pin dahili pin ile beraber çalışır

// durumu değişecek değişken tanımı
int butonDurumu = 0;         // buton durumu 0 olarak bağlayacak

void setup() {
  // led pinini çıkış olarak ayarlıyoruz
  pinMode(led, OUTPUT);      
  // buton pinini giriş olarak kuruyoruz
  pinMode(buton, INPUT);     
}

void loop(){
  // buton durumunu okuyoruz
  butonDurumu = digitalRead(buton);

  // butonun basılı olup olmadığını kontrol ediyoruz
  // eğer basılı ise 
  if (butonDurumu == HIGH) {     
    // led yanıyor   
    digitalWrite(led, HIGH);  
  } 
  // basılı değilse
  else {
    // led kapalı
    digitalWrite(led, LOW); 
  }
}

1 yorum:

Arduino LDR kullanımı, karanlıkta yanan led, Arduino örnekleri

Merhaba arkadaşlar bugün sizle LDR (ışığa duyarlı direnç) kullanarak karanlıkta yanıp aydınlıkta sönen ışık devresi yapacağız. Projeye geçmeden önce Biraz LDR hakkında bilgi edinelim. Daha sonra proje hakkında konuşmaya devam edebiliriz.


    LDR (  light-dependent resistor- Foto direnç)



LDRler üzerine düşen ışık ile ters orantılı olarak lineer olmayan bir grafikle değer değiştiren dirençlerdir. Yani ldr üzerine düşen ışık 2 kat artarsa direnç değeri azalır ancak tam yarıya inmez. LDR nin birçok kullanım alanı mevcut biz bu yazıda nasıl kullanıldığını çok basit bir uygulama ile öğreneceğiz ilerleyen günlerde LDR içeren eğlenceli ve biraz daha karışık örnekler blogumuzda olacak.


    Malzemeler
  •         1 adet LDR
  •         1 adet led
  •         1 adet 10K ohm direnç
  •         1 adet 220 ohm direnç
  •         5 adet jumper yada kablo kesiti
  •         1 adet arduino
  •         1 adet breadboard
  •         Bilgisayar 


        Devre Kurulumu
Karanlıkta yanan led devresi - Arduonik
            LDR nin bir ucunu GND pinine diğer ucuna ise 10Kohm direnç bağlıyoruz ayrıca direnç bağladığımız ucu A0 pinine bağlamayıda unutmuyoruz. Led ise dağa öğrendiğimiz gibi kısa bacağını GND pinine uzun bacağınıda diğer ucunu 6. pine bağladığımız 220 ohm luk dirence bağlıyoruz.                
Daha iyi anlamanız içn yandaki şemayı kullanabilirsiniz



        Programala
Bu başlıkta pek bir şey yazmaya gerek yok basit bir İf-Else ile kuruyoruz mantığı Serial bağlantısı hakkında yakın zamanda bilgi vereceğim. Zaten gerekli açıklamalar satır sonlarında yazıyor
// Karanlıkta yanan ışık projesi, arduonik.blogspot.com
int ldr = A0;             // ldr mizi analog pine bağlıyoruz 
int ldr_deger ;        //ldr değerinin tutulacağı değişkeni tanımlıyoruz değişkenimiz tam sayı olacağı için int(integer) olarak belirliyoruz
int led = 6;           // led bağladığımız pini tanımlıyoruz
void setup()
{
 pinMode(led, OUTPUT);  //led pinimizi çıkış olarak kuruyoruz
  pinMode(ldr, INPUT);  //ldr pinimizi veri giriş pini olarak kuruyoru
  Serial.begin(9600);
}

void loop()
{
  ldr_deger = analogRead(ldr);          // ldr değerimizi analog pinden okuyoruz
  Serial.println(ldr_deger); // Serial ekranımıza ( Arduino ide açıkken ctrl+shit+m tuş kombinasyonu ile yada üst taraftaki simgesi yada üsteki menüden açabilirsiniz) ldr değrini yazdırıyoruz
  if (ldr_deger > 600){ // eğer ldr değerimiz 600 den fazla olursa
     digitalWrite(led, HIGH);  // led yanacak
  }
  else{   // 600 den küçük değilse
    digitalWrite(led, LOW); // led yanmauacak 
    }
  delay(100); // 0.1 saniye sonra ldr değeri okunarak yukarıda istenilen şartlar kontrol edecek ve güç kesilene kadar bu işlemler devam edecek 
}

Eşik ışık yoğunluk değerini, led sayısını filan arttırarak benzer devre kurmak yalnızca LDR öğrenmenize derğil arduino mantığı ve proje geliştirme yönünüze de faydalı olacaktır.

0 yorum:

Arduino Led kullanımı - Trafik lambası yapımı - Arduino Örnekleri

    Merhaba arkadaşlar uzun bir süredir yazı yazamadım. Daha önce Arduino kartları hakkında bilgiler vermiştim inan bunlar led yakmak yada uzunluk ölçmekten daha önemli çünkü hiç bir şey kapasitesini bilmeden tam verimle çalışmaz zorlarsak yakarız zorlamazsak ziyan ederiz. Tabi buradan led yada sensörleri gereksiz sanmayın.


    Projeye başlayalım zaten bu sırada led kullanmayı öğreneceğiz. Ancak daha öncesinde led ve direnç hakkında kısa bilgi verelim.

    LED ve Direnç
     Led elektroniğin lambasıdır, ışık gereken yerde ledler kunlanılır. Çeşitli renkleri vardır ve genelde 3-5 vold arası çalışır düşük güç ile çalışmaz veya az ışık verir, çok fazla güç verirsek yanarlar. Uzun bacağı artı kısa bacağı eksi uçlardır.
      Dirençlerin ise artı eksi uçları yoktur ve uçlar arası gerilimi düşürmek için kullanılır. Farklı değerleri vardır ve bu değerler direnç üzerindeki renkli halkalar ile belli olur.






    MALZEMELER
    1 * Arduino ( proje UNO üzerinden ilerleyecek)
    1'er adet sarı, yeşil, kırmızı led
    3 adet direnç ( 0 ohm - 2 kohm arası istersek hiç olmaz bu led e bağlı biz 220 kullanıcaz)
    Yeteri kadar kablo yada jumper
    Breadboard ( bu olmadan olur(zorlar) ama bu  bize neredeyse her zaman yardımcı olur)
    Arduinoyu çalıştıracak güç ( bilgisayar, pil yada adaptör)

 
    Devre Kurulumu

     Devreyi breadbord üzerine kuracağız kodlarda yeşil ledi 5, sarı ledi 6, kırmızı ledi 7 nolu pinlere bağlanmış olarak ayarladık ledleri Arduino ya bağlarken pinlerin ucuna önce direnç bağlıyoruz direncin diğer ucunu ledin artı ucuna ( uzun bacak) bağlıyoruz ledin diğer bacağınıda Arduino da bulunan GND( ground - toprak - eksi) pinine bağlıyoruz devre aşağıdaki görsele benzeyecek.


Devre kurulumu

       Programlama
    
  Devremizi kurduk sıra elektriği kontrol etmekte buzu Arduino kartımızı programlayarak yapacağız bu kısmı uzatmadan kodları ekliyorum zaten gerekli açıklama kodlarda mevcut .

int yesil = 5;  
int sari = 6;
int kirmizi = 7;
//Üst tarafta ledlerin hangi pinlere bağlanacağını tanımladık eğer bu işlemi yapmasaydık "sari" yazacağımız yerlere 6 yazardık ancak bu karışıklığa sebep olabilir bu yüzden bu tanımlamaları yapmaya alışmak iyi olur
void setup(){ // bu blok kodları sadece bir defa başlangıçta çalışır adı üstünde Arduino kartımızı kuruyoruz
  pinMode(yesil, OUTPUT);
  pinMode(sari, OUTPUT);
  pinMode(kirmizi, OUTPUT);  
// üst tarafta ise ledleri taktığımız pinleri çıkış olarak ayarladık bu sayede bu pinleri bir güç kaynağı gibi kullanıp ledlere gerekli gücü göndereceğiz  
}
void loop(){ // bu blok içine yazılan kodlar devamlı olarak bitip başa döner Arduinoya güç geldiği sürece devam eder 
  digitalWrite(yesil, HIGH); // yeşil ışık yanıyor
  delay(5000); // yeşil ışık 5 saniye boyunca açık kalıyor
  digitalWrite(yesil, LOW); // yesil ışığı kapatıyoruz
  digitalWrite(sari, HIGH); // sarı ışığı yakıyoruz
  delay(750); // 0.75 sn bekliyoruz
  digitalWrite(sari, LOW); // sari ışık sönüyor
  digitalWrite(kirmizi, HIGH); // kırmızı ışık yanıyor
  delay(3500); // 3.5 sn bekliyoruz
  digitalWrite(kirmizi, LOW); // kırmızı ışık sönüyor
  // sistem buradan sonra yeşil ışığı yazdığımız koda döner 
}


   Işık sürelerini pin yerlerini filan değiştirerek devreyi tekrar kurmanızı öneririm. Herhangi bir sorunuz olursa alta yorum olarak ekleyebilirsiniz.

1 yorum: