Arduino Ä°le ATtiny Programlama -1

Ä°hsan Kehribar’ın  tasarlamış olduÄŸu Little Wire‘da da  kullanılan  ATtiny85,  Atmel’in üretmiÅŸ olduÄŸu 8-bit iÅŸlemcidir. 8K program aralığı, 6 I/O hattı (Input/Output) ve 4 kanal 10 bit ADC.  Harici 20MHz kristal ile çalışmaktadır ve devre üzerinde programlama özelliÄŸine sahiptir.

ATtiny85’i ;  Atmega 18 ve  Atmega16’yı programladığımız  çeÅŸitli paralel programlayıcılar ile programlayabileceÄŸimiz  gibi Arduino ile de  programlayabiliriz.  Bu yazıda ATtiny85, ATtiny45’i Arduino ile programlamak için neler yapmamız gerekir bunlara bakacağız.   Bu baÄŸlantıdaki videoyu izleyerek neler yapabileceÄŸimizi daha kolay anlayabiliriz. Görüdüğümüz gibi basit programları çalıştırmak için uygun mikrodenetleyicilerdir.
ATtiny’ler ucuz olup; ebay’dan yaklaşık 2-3 $, Türkiye’den ise yaklaşık 7-8 Tl’ye edinebilirsiniz.  ATtiny45 ve ATtiny85’in sekiz adet bacağı vardır. Ayrıca çok benzerdirler. ATtiny85’in belleÄŸi ATtiny45’in iki katıdır.  Bu da ATtiny85 ile  daha karmaşık programları saklayabileceÄŸimiz anlamına gelir.   ATtiny’i programlamak için Arduino çekirdek kütüphaneleri kullanılır.

Gerekli olan malzemeler:
Arduino Uno/Duemilanove
-ATtiny45 veya ATtiny85
-10 uF kapasite
-Breadboard ve jumper kablolara ihtiyacamızı var.

Ayrıca software olarak Arduino Version 1.0.1 veya 0022 kullanılabilir. Arasındaki farka deÄŸineceÄŸiz.Åžimdi Arduino’muz ile ATtiny’i programlamaya baÅŸlayabiliriz. Ä°lk önce Arduino’muzu ?in-system programmer? (ISP)’ye dönüştürmemiz gerekiyor. Bunun için ÅŸu basamakları izleyelim:

Arduino programını  çalıştıralım.
– Example menüsünden ArduinoISP sketch’i açalım.
-Åžimdi burada versiyon olarak 1.0.1 kullanıyorsak  upload etmeden önce ArduinoISP ‘de küçük bir deÄŸiÅŸiklik yapmalıyız; heartbeat() fonksiyonunun içerisindeki delay(40);’ı bulalım ve bunu  delay(20);  ile deÄŸiÅŸtirelim.
– Arduino’yu baÄŸladığımız Serialport’u seçelim.
-ArduinoISP  sketch’i upload edelim.

 

Arduino ile ATtiny baÄŸlantılarını Fritzing ile çizelim. Bundan önce ATtiny ‘e göz atalım.

ATtiny85 – Arduino BaÄŸlantıları

 

 

BaÄŸlantılarımızı çizdiÄŸimiz gibi yapalım. Burada baÄŸlantıları gerçekleÅŸtirirken  kapasitenin ÅŸerit kısmının eksi olduÄŸunu unutmayalım bunu Ground’a baÄŸladık.  Kapasite Arduino’nun resetlermesini önler (bootloader’ı baÅŸlatan).  Bu da Arduino IDE‘si ile  ArduinoISP (bootloder deÄŸil)’nin sketch’i upload ederken haberleÅŸmesini saÄŸlar.

Arduino ve ATtiny için kullandığımız bağlantılar:

-ATtiny Pin 2 – Arduino Pin 13 (diÄŸer programlayıcılarda  SCK)

– ATtiny Pin 1 – Arduino Pin 12 ( diÄŸer programlayıcılardaMISO)

-ATtiny Pin 0 – Arduino Pin 11 (diÄŸer programlayıcılarda MOSI )

-ATtiny Reset Pin –  Arduino Pin 10 (diÄŸer programlayıcılarda RESET )

Aşağıdaki Arduino tarafından desteklenen komutları ve bağlantılarını bulabilirsiniz.

 

Ä°leri ki yazılarda bu yöntemi kullanarak bir kaç çalışma yapacağız. ÖrneÄŸin bir ATtiny’nin bir pwm pin’ine led baÄŸlayarak bir Blink yapabilirsiniz. Bu baÄŸlantıdaki videoyu izleyerek neler yapabileceÄŸimizi daha kolay anlayabiliriz.  Bir kere upload ettikten sonra ATtiny kendi başına, Arduino baÄŸlantısı olmadan bu iÅŸlemleri gerçekleÅŸtirebilir hale gelebilir. İyi çalışmalar.

 

 

Yücel Çetin

İstanbul Üniversitesi Elektrik-Elektronik Mühendisliği'nde öğrenci, Arduino sevdalısı, python meraklısı bir canlı...

16 comments

  1. Arif dedi ki:

    bu yöntemle attıny15l programlayabilirmiyiz ?

  2. ÖZAY YILMAZ dedi ki:

    güzel açıklayıcı bir örnek olmuş ama attiny85 piyasada bulamıyorum biyerden sipariş verdim oda ellerinde kalmamış onun yerine attiny45in mikro modeli herhalde küçücük bir şey geldi nerden satınalabilirim acaba yada atmega8 atmega328 bu şekilde programlıycam bir örnek gösterebilirmisiniz

  3. Hakan dedi ki:

    Bu programlamada, Atiny45 kütüphanesi ihtiyaç yok mu? örnek 1 atiny programı yükleseydik!!

    • Ömer Koman dedi ki:

      merhaba bootloaderi yukledikten sonra ÅŸu sayfada http://www.hobbytronics.co.uk/arduino-attiny attiny desteÄŸi için gerekli attiny45_85.zip doayası var , linkteki yazıda belirtildiÄŸi gibi kurarsanız standart arduino içinden programlayabilirsinz. led blink 🙂 örneÄŸininde sadece pin numarasını 13 yerine”0″ kullanmanız yeterli. komut seti yücelin yazsındakilerle sınırlıdır.

  4. Gökhan İnce dedi ki:

    Acaba Arduino ile kullanılan kütüphaneleride kullanabilir miyiz?

    • Ömer Koman dedi ki:

      her pin uymaz kutuphaneleri iyi seçmen lazım.

      • Gökhan Ä°nce dedi ki:

        Aklımda okulda ki projectör cihazını açacak 9 volt pil büyüklüğünde kumanda yapıp hocamıza takdim etme fikri var. Onun için sordum. IRremote kütüphanesini kullanacağım. Burda seçim için nelere dikkat etmeliyim?

        • Ömer Koman dedi ki:

          ir remote kutuphanesi ve kodlar sığarsa yapabilirisin. genelde arduino modulleri ve kitleri düşük akım ve pil tasarrufunu dikkaete almazlar daha kucuk iÅŸlemci veya modul kullanmak daha az akım tuketir pille çalışır anlamına gelmiyor sadece daha az bacaklı bir urun seçmiÅŸ oluyorsun. pil enerji sorun olmayacaksa ir ledleri tiny e baÄŸlayacaksın kod yollayacaktır veya hehangi bir kumandayı verici olarak kullanıp alıcı tarafında tiny e ir alıcıyı baÄŸlayıp bir çıkışıda roleye baÄŸlayacaksın. forumdan devam edersin kodları yazarken deneyenler olabılır destek gelir…

          • Gökhan Ä°nce dedi ki:

            Teşekkür ederim Ömer hocam. Dediklerinizi dikkate alıcam. Sürekli açık durmasın diye Pilden hemen sonra attiny ile arasına switch koymayı düşünüyordum. Ama bahsettiğiniz her kütüphanenin az enerji tüketmemesi diğer projelerinde yardımcı olacak. 😊

  5. Ali dedi ki:

    Hocam millis ile ledi 2 saniye yakip 1 saniye sonmesini nasil yapabiliriz

  6. Ömer Koman dedi ki:

    sorunuzu ilgisiz konu başlıkların altına yazmayın bu sizin konulara dikkatsiz olduğunuzu ve prorgram yazma konusunda çok zorlanacağınız gösterir.

    // led pinlerin ayarlarını setup kısmına yazmanız lazım
    // ledi açma kapama satırlarında ilgili pinleri de kodun içinde yazın
    // led blink örneğine bakın orjinal kodlardaki

    int zaman;
    int leddurum;

    setup() {
    zaman=millis();
    leddurum=0;
    }

    loop {
    if (millis()-zaman>=1000 && leddurum==0) {
    // led açık komutuu buraya yaz

    zaman=millis();
    leddurum=1;
    }
    if (millis()-zaman>=2000 && leddurum==1) {
    // led kapalı komutunu buraya yaz

    zaman=millis();
    leddurum=0;
    }
    }

    • Ali dedi ki:

      Çok teşekkürler konu başlığı bulamadığım ve foruma ulaşamadığım için buraya yazdım kusura bakmayın

  7. Ali dedi ki:

    Dediğiniz gibi yaptim ama 5 kere tekrar ediyor bir yerde yanlıslık var hocam

    int zaman;
    int leddurum;

    void setup() {
    zaman=millis();
    leddurum=0;

    }

    void loop() {
    pinMode(13, OUTPUT);
    if((millis()-zaman)>=1000&&leddurum==0)
    {
    digitalWrite(13, LOW);
    zaman=millis();
    leddurum=1;
    }
    if((millis()-zaman)>=5000&&leddurum==1)
    {
    digitalWrite(13, HIGH);
    zaman=millis();
    leddurum=0;
    }
    }

  8. Ömer Koman dedi ki:

    şu şekilde denermisin zaman ı unsigned long tipte tutun

    unsigned long zaman;
    int leddurum;

    void setup() {
    zaman=millis();
    leddurum=0;
    pinMode(13, OUTPUT);
    digitalWrite(13, LOW);
    }

    void loop() {
    if((millis()-zaman)>=1000&&leddurum==0)
    {
    digitalWrite(13, LOW);
    zaman=millis();
    leddurum=1;
    }
    if((millis()-zaman)>=5000&&leddurum==1)
    {
    digitalWrite(13, HIGH);
    zaman=millis();
    leddurum=0;
    }
    }

  9. zeynep dedi ki:

    Attiny13a yı devre kartına lehimleyip nasıl programlarız ardunio uno ile birlikte

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal AÄŸlar