Arduino İle ATtiny Programlama -1
Yücel Çetin // 5 Eylül 2012 // 16 yorum // kategori: Arduino Programlamaİ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.
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.
- pinMode()
- digitalWrite()
- digitalRead()
- analogRead()
- analogWrite()
- shiftOut()
- pulseIn()
- millis()
- micros()
- delay()
- delayMicroseconds()
- SoftwareSerial
İ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.
Etiketler: arduino Attiny programlama > arduino ISP > arduino sketch > arduinoISP > ATtiny > ATtiny arduino > ATtiny ISP > ATtiny programlama > ATtiny programmer > ATtiny45 > ATtiny85 > ISP > Little wire > MISO > MOSI > program Attiny with arduino > sck
bu yöntemle attıny15l programlayabilirmiyiz ?
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
Bu programlamada, Atiny45 kütüphanesi ihtiyaç yok mu? örnek 1 atiny programı yükleseydik!!
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.
Acaba Arduino ile kullanılan kütüphaneleride kullanabilir miyiz?
her pin uymaz kutuphaneleri iyi seçmen lazım.
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?
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…
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. 😊
Hocam millis ile ledi 2 saniye yakip 1 saniye sonmesini nasil yapabiliriz
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;
}
}
Çok teşekkürler konu başlığı bulamadığım ve foruma ulaşamadığım için buraya yazdım kusura bakmayın
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;
}
}
ş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;
}
}
Attiny13a yı devre kartına lehimleyip nasıl programlarız ardunio uno ile birlikte
google la arattım gelen 5. seçenek buydu.
https://create.arduino.cc/projecthub/taunoerik/programming-attiny13-with-arduino-uno-07beba