# Arduino

Arduino|  |
| Arduino Uno SMD R3 |
| Tip | Tekli mikrodenetleyici |
| İşletim sistemi | Yok |
| CPU | Atmel AVR (8-bit), ARM Cortex-M (32-bit), Intel Quark (32-bit) |
| Depolama kapasitesi | Flash, EEPROM |
| Hafıza | SRAM |
| Grafik | Yok |
| Website | arduino.cc |

Arduino Uno ile bana dokun projesi. Kurşun kalem yazısına dokununca LED ışığı yanıyor
**Arduino** bir G/Ç (I/O) kartı ve Processing/Wiring dilinin bir uygulamasını içeren geliştirme ortamından oluşan bir fiziksel programlama platformudur. Arduino tek başına çalışan interaktif nesneler geliştirmek için kullanılabileceği gibi bilgisayar üzerinde çalışan yazılımlara da (Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider gibi) bağlanabilir. Hazır üretilmiş kartlar satın alınabilir veya kendileri üretmek isteyenler için donanım tasarımı ile ilgili bilgiler mevcuttur.

## Donanım

Arduino Diecimila
Arduino Açık kaynak donanım'dır. Donanım referans tasarımları Creative Commons Attribution Share-Alike 2.5 lisansı altında dağıtılır ve Arduino web sitesinde mevcuttur. Donanımın bazı sürümleri için düzen ve üretim dosyaları da mevcuttur.

Arduino kartları bir Atmel AVR mikrodenetleyici (Eski kartlarda ATmega8 veya ATmega168, yenilerinde ATmega328 ya da ATmega4809) ve programlama ve diğer devrelere bağlantı için gerekli yan elemanlardan oluşur. Her kartta en azından bir 5 voltluk lineer regülatör ve bir 16 MHz kristal osilator (bazılarında seramik rezonatör) bulunur. Mikrodenetleyiciye önceden bir bootloader programı yazılı olduğundan programlama için harici bir programlayıcıya ihtiyaç duyulmaz.

RS-232 seri arayüzü (sol üst) ve Atmel ATmega8 mikro denetleyici çipi (siyah, sağ alt) ile erken bir Arduino kartı; 14 sayısal G/Ç pimi üstte, 6 analog giriş pimi sağ altta ve güç konnektörü sol alttadır.
Arduino mikrodenetleyicileri, programların çip üzerindeki flash belleğe yüklenmesini kolaylaştıran bir önyükleyici ile önceden programlanmıştır. Arduino Uno'nun varsayılan önyükleyicisi Optiboot önyükleyicisidir. Başka bir bilgisayara seri bağlantı yoluyla bağlanarak kartlara program kodu yüklenir. Bazı seri Arduino kartlarının RS-232 mantık seviyeleri ve transistör–transistör mantığı (TTL) seviye sinyalleri arasında dönüştürme için seviye değiştirici devreleri vardır. Mevcut Arduino kartları, FTDI FT232 gibi USB'den seriye adaptör çipleri kullanılarak uygulanan Evrensel Seri Veriyolu (USB) aracılığıyla programlanır. Daha sonraki model Uno kartları gibi bazı kartlar FTDI çipini, kendi “Sistem içi programlama(ICSP)” başlığı aracılığıyla yeniden programlanabilen USB'den seriye bellenim (İngilizce:firmware) içeren ayrı bir AVR çipiyle değiştirir. Arduino Mini ve resmi olmayan Boarduino gibi diğer çeşitler, ayrılabilir USB'den seriye adaptör kartı veya kablosu, Bluetooth veya başka yöntemleri kullanır. Geleneksel mikrodenetleyici araçlarıyla kullanıldığında Arduino IDE yerine standart AVR sistem içi programlama (ISP) kullanılır.

I/O konum açıklamalarıyla birlikte resmi Arduino Uno R2 kartı
Arduino kartı, diğer devreler tarafından kullanılmak üzere mikrodenetleyicinin I/O pinlerinin çoğuna sahiptir. *Diecimila*, *Duemilanove*, *Duemilanove* ve mevcut *Uno* ‘da altısı darbe genişlik modülasyonlu sinyaller üretebilen 14 dijital I/O pini ve altı dijital I/O pini olarak da kullanılabilen altı analog giriş vardır. Bu pinler, 0.1 inçlik (2,54 mm) dişi başlıklarla kartın üstündedir. Çeşitli eklenti uygulama kartları da ticari olarak bulunur.
Arduino Nano ve Arduino uyumlu Bare Bones kartı ve Boarduino kartları, kartın alt tarafında lehimsiz breadboard‘lara takılabilen erkek başlık pinleri sağlayabilir.

## Arduino çeşitleri

Arduino kartları yetenek ve bağlantı sayılarına göre farklı modeller olarak sunuluyor. Bu çeşitliliğin ardında ise Arduino'nun açık ve özgür bir platform olması yatar. Arduino tabanlı donanım kartlarını özellikleri ve hedef alanları bağlamında aşağıdaki gibi bir sınıflandırmaya ayırmak mümkün:

### Resmi kartlar

Orijinal Arduino donanımı, İtalyan Smart Projects şirketi tarafından üretildi. Arduino markalı bazı kartlar, Amerikan şirketleri SparkFun Electronics ve Adafruit Industries tarafından tasarlandı. 2016 itibarıyla, Arduino donanımının 17 versiyonu ticari olarak üretilmiştir.

* Arduino RS232
(thru-hole parts)
* Arduino Diecimila
* Arduino Duemilanove
(rev 2009b)
* Arduino Uno R2
* Arduino Uno SMD R3
* Arduino Leonardo
* Arduino Pro
(No USB)
* Arduino Mega
* Arduino Nano
(DIP-30 footprint)
* Arduino LilyPad 00
(rev 2007) (No USB)
* Arduino Robot
* Arduino Esplora
* Arduino Ethernet
(AVR + W5100)
* Arduino Yun
(AVR + AR9331)
* Arduino Due
(ARM Cortex-M3 core)

### Arduino Eklentileri

Arduino ve Arduino uyumlu kartlar, normalde tedarik edilen Arduino pin başlıklarına takılan “shields” denilen baskılı devre genişletme kartlarını kullanır. Eklenti kartları, 3D baskı ve diğer uygulamalar için motor kontrolleri, GNSS (uydu navigasyonu), Ethernet, Sıvı kristal ekran (LCD) veya breadboard (prototip yapımı) için kontroller sağlayabilir. Birkaç eklenti kartı da kendin yap (DIY) yöntemiyle yapılabilir.

* Bazı eklentiler, birden fazla eklentinin Arduino kartına takılmasına izin veren yığınlama başlıkları sunar. Burada, iki Adafruit motor eklenti V2'si üzerine bir prototipleme eklentisi takılmıştır.
* Kanat tipi biçimde vidalı terminal breakout eklentisi, çıplak uçlu kabloların herhangi bir özel pin gerektirmeden kartla birleştirilmesine imkan verir.
* Adafruit Veri Kaydı eklentisi, bir Secure Digital (SD) kart yuvası ve gerçek zamanlı saat (RTC) çipinin yanı sıra özelleştirme için bileşenler ve modüller eklemek için yere sahiptir.
* Adafruit Motor eklentisi, motorlara bağlantı için vidalı terminallidir. Resmi olarak durdurulan bu eklenti, resmi olmayan kanallarda hala mevcut olabilir.
* Adafruit Industries motor eklentisi V2, entegre devresini kullanır ve her bir motoru doğrudan bağlamaktan çok daha az sayısal I/O pini gerektirir.
* Arduino kartının klavye veya fare gibi bir USB cihazı ile iletişim kurmasını sağlayan bir USB ana bilgisayar eklentisi.
* Arduino'ya birçok eklenti üstüste takılabilir.
* Dragino Lora eklentisi

## Yazılım

Arduino Software IDE| Arduino IDE'nin *Blink* programını gösteren ekran görüntüsü |
| Geliştirici | Arduino Software |
|  |
| Programlama dili | Java, C, C++ |
| İşletim sistemi | Microsoft Windows, macOS, Linux |
| Platform | IA-32, x86-64, ARM |
| Tür | Tümleşik geliştirme ortamı |
| Lisans | LGPL veya GPL license |
| Resmî sitesi | arduino.cc/en/Main/Software |

Arduino IDE, kod editörü ve derleyici olarak görev yapan, aynı zamanda derlenen programı karta yükleme işlemini de yapabilen, platform bağımsız çalışabilen Java programlama dilinde yazılmış bir geliştirme çatısıdır.

Geliştirme ortamı, sanatçıları programlamayla tanıştırmak için geliştirilmiş Processing yazılımından yola çıkılarak geliştirildi.

### IDE

Arduino Tümleşik geliştirme ortamı (IDE), (Microsoft Windows, macOS ve Linux için) Java programlama dilinde yazılmış bir Çapraz platform yazılımı uygulamasıdır. *Processing* ve *Wiring* dilleri için IDE'den türetilmiştir. Metin kesme ve yapıştırma, metin arama ve değiştirme, otomatik girintileme, köşeli ayraç eşleştirme ve sözdizimi vurgulama gibi özelliklere sahip bir kod düzenleyici içerir, derlemek için basit "tek tıklama" mekanizmaları sağlar ve programları Arduino kartına yükler.
Ayrıca mesaj alanı, metin konsolu, ortak fonksiyonlar için düğmeleri olan araç çubuğu ve işlem menü hiyerarşisini kapsar. IDE'nin kaynak kodu GNU Genel Kamu Lisansı, sürüm 2 altında yayınlandı.

Arduino IDE, özel kod yapılandırma kurallarını kullanarak C ve C++ dillerini destekler. Arduino IDE, birçok ortak giriş ve çıkış prosedürü sağlayan Wiring projesinden bir yazılım kütüphanesi sağlar.

Sketch ve ana program döngüsünü başlatmak için kullanıcı tarafından yazılan kod, derlenen ve *main()* program parçacığı ile ayrıca IDE dağıtımına dahil GNU araç zinciri ile yürütülebilir döngüsel yönetici programa bağlanan sadece iki temel fonksiyon gerektirir. Arduino IDE, çalıştırılabilir kodu, kartın bellenimindeki bir yükleyici program tarafından Arduino kartına yüklenen onaltılık kodlamalı metin dosyasına dönüştürmek için *avrdude* programını kullanır.

### Sketch

*Sketch*, Arduino IDE ile yazılmış bir programdır. Sketch'ler, geliştirme bilgisayarına **.ino** dosya uzantısıyla metin dosyaları olarak kaydedilir. Arduino Yazılımı (IDE) 1.0 öncesi sketch‘leri **.pde** uzantılı olarak kaydetti.

Minimal bir Arduino C/C++ programı yalnızca iki fonksiyondan oluşur:

* `setup()`: Bu fonksiyon, güç açıldıktan veya sıfırlandıktan sonra bir sketch başladığında bir kez çağrılır. Değişkenleri, giriş ve çıkış pin modlarını ve sketch‘de gerek duyulan diğer kitaplıkları başlatmak için kullanılır. `main()` fonksiyonuna benzer.
* `loop()`: `setup()` fonksiyonu bittikten sonra ana programda `loop()` fonksiyonu tekrar tekrar yürütülür. Kart kapanana veya sıfırlanana kadar kartı kontrol eder. `while(1)` fonksiyonuna benzer. Led yakıp söndürme örneği

Arduino uyumlu bir kartta pin 13'e bağlı Güç LED'i (kırmızı) ve Kullanıcı LED'i (yeşil)
Çoğu Arduino kartının bir LED’i (ışık yayan diyot) ve pin 13 ile toprak arasına bağlı bir akım sınırlayıcı direnci vardır; bu, birçok test ve program fonksiyonu için uygun bir özelliktir.

Yeni başlayanlar tarafından kullanılan tipik bir program, Merhaba, Dünya!'ya benzer Arduino kartına entegre yerleşik LED'i art arda yakıp söndüren "blink" ‘dir (Türkçe: yanıp söner). Bu program, IDE ortamında bulunan dahili kitaplıklar tarafından sağlanan `pinMode()`, `digitalWrite()` ve `delay()` fonksiyonlarını kullanır. Bu program genellikle üretici tarafından yeni Arduino kartına yüklenir.

```
int LED\_PIN = 13 // 13 numaralı pin için değişken oluşturma

void setup() {
 pinMode(LED\_PIN, OUTPUT); // 13 numaralı pini "Çıkış" olarak ayarlama
}

void loop() {
 digitalWrite(LED\_PIN, HIGH); // LEDi çalıştırma
 delay(1000); // 1000 milisaniye (1 saniye) bekleme
 digitalWrite(LED\_PIN, LOW); // LEDi kapatma
 delay(1000); // 1000 milisaniye (1 saniye) bekleme
}

```

### Kütüphaneler

Arduino projesinin açık kaynak yapısı, diğer geliştiricilerin projelerini geliştirmek için kullandıkları birçok özgür yazılım kütüphanesinin yayınlanmasını kolaylaştırdı.

### İşletim sistemleri

Atmega328p (Arduino Uno ve aynı çipe sahip diğerleri) için temel özelliklerin çoğunu içeren Xinu işletim sistemi bağlantı noktası (ing:port) vardır. Bu sürümün kaynak kodu ücretsiz olarak kullanılabilir.

Protothreads adlı bir iş parçacığı aracı (ing:threading) da vardır. Protothreads, "küçük gömülü sistemler veya kablosuz sensör ağ düğümleri gibi ciddi ölçüde bellek kısıtlı sistemler için tasarlanmış son derece hafif yığınsız iş parçacıkları" olarak tanımlanır.

## Özgür donanım ve açık kaynak kodu

Arduino v0011'in Tümleşik geliştirme ortamı. Bu Arduino TGO'su basit bir led açma ve kapama kodunu göstermekte.
Arduino donanım referans tasarımları Creative Commons Attribution Share-Alike 2.5 23 Şubat 2011 tarihinde Wayback Machine sitesinde arşivlendi. lisansı ile dağıtılmaktadır ve Arduino web sitesinden indirilebilir. Bazı Arduino donanımları için yerleşim ve üretim dosyaları da bulunmaktadır. Geliştirme ortamının kaynak kodu ve Arduino kütüphane kodları GNU Genel Kamu Lisansı sürüm 2 ile lisanslanmıştır.

## Geliştirme takımı

Arduino ekibi, Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino ve David Mellis'den oluşur. Nicholas Zambetti başından beri katkıda bulunmuştur.

## Kaynakça

## Dış bağlantılar

Wikimedia Commons'ta Arduino ile ilgili ortam dosyaları mevcuttur.

* Arduino projesi ana sayfası: arduino.cc23 Şubat 2011 tarihinde Wayback Machine sitesinde arşivlendi.