bilgin. 055
Moderator
“Arduino Uno R3” Donanım özellikleri arduino çeşidine göre farklılıklar gösterse de temel olarak bir arduino şu özellikleri taşımaktadır:ATmega168, ATmega328 mikroişlemci: ATmega; yüksek performanslı, düşük güç tüketimine sahip 8 bitlik bir mikrodenetleyicidir. Değişik boyutlarda SRAM, EEPROM ve FLASH belleğe sahiptir. FLASH belleğe 10000 defa yazma/okuma yapılabilmektedir. 131 adet, çoğunluğu tek çevrimde çalışan güçlü bir komut setine sahiptir. 20 MHZ’e kadar hızı desteklemektedir. ATmega tamamıyla statik bir mikrodenetleyici olarak karşımıza çıkmaktadır. ATmega’yı uyku moduna getirdiğinizde, saat durur ve ATmega uyku işleminden önce hangi durumda olduğunu size hatırlatacak çeşitli bayraklar kurar. ATmega uyku modunda yalnızca 0.1 uA değere sahip bekleme akımı çeker.
5V Voltaj Regülatörü: Entegresi sabit 5 volt gerilim almamızı sağlayan bir devre elemanıdır. bu devre elemanımız 3 bacaklıdır.
1. bacağı yüksek volt girişi, 2. bacağı GND ve 3. bacağı 5 volt çıkışıdır.
16MHz kristal osilator ya da seramik rezonatör: Kare dalga veya üçgen dalga dendiği zaman akıllara genellikle osilatör elemanı gelir. Gömülü sistemlerde, elektronik devrelerde bu dalga şekillerini osilatör yardımıyla elde ederiz. Osilatör, bir yükselteç yardımıyla verdiği çıktıyı girdi olarak geri alır. Bu duruma pozitif geri besleme denirken, bu sayede sinyal her seferinde kendini yenilemiş olur.
SRAM: SRAM, İngilizce Static random access memory kelimelerinin baş harflerinden oluşan bir kısaltmadır. Türkçe'de Durağan Rastgele Erişimli Bellek anlamına gelmektedir. SRAM; Her bit depolamak için tek şeritli dayanma devrelerinin kullanıldığı yarı iletken bellek türüdür. S harfi belleğe güç verildiği sürece belleğin içeriğini koruduğunu belirtir.
EEPROM: EEPROM (Electronically Erasable Programmable Read-Only Memory) kelimesinin baş harflerinden türetilmiştir. Türkçe olarak çevirdiğimizde; Eletriksel olarak Silinebilen Programlanabilien ve Sadece Okunabilen Hafıza demek oluyor. Bu hafıza alanına programımız işlerken müdahale edebiliyor, okuyabiliyor veya üzerine yazabiliyoruz. Ayrıca güç kesintisi ve reset olaylarında bu bölgede ki veriler silinmiyor. Ram belleklere göre çok yavaş çalışan bu bölgede sadece 2KB bir bilgi saklayabiliyoruz, harici EEPROM ile bu sayıyı yükseltmek mümkün fakat fazla hafızaya gereksinim duyuyorsanız Flash Bellek – SD Kart kullanmak daha mantıklı.
Arduino Ne İşe Yarar? |
Arduino kolay bir şekilde çevresiyle etkileşime girebilen sistemler tasarlanabilir açık kaynaklı bir geliştirme platformudur. Bu yüzden kullanıcı istediği şekilde düzenlemeler yapabilir.
Arduino kütüphaneleri sayesinde kolaylıkla programlanabilir.
Analog ve dijital girişleri sayesinde analog ve dijital veriler işlenebilir.
Sensörlerle çalışabilir olduğundan sensörlerden gelen veriler kullanılabilir.
Dış dünyaya çıktılar (ses, ışık, hareket, yazı, resim vs.) üretilebilir.
Kart ile robotik ve elektronik uygulamaları kolayca gerçekleştirilebilir.
Arduinoda kullanılan programlama dili basit olduğundan, çok sayıda kaynak bulmak mümkündür.
Yazılımları ücretsiz olarak indirilebilir ve Mac OS X, Windows ve Linux desteği bulunmasından dolayı işletim sistemi uyum problemi yaşanmadan uygulama geliştirilebilir.
Arduino Modelleri ve Çeşitleri |
Her geçen gün yeni arduino kartları ve dolayısıyla arduino çeşitleri ortaya çıkmaktadır. Genel olarak arduino çeşitleri aşağıdaki gibidir:
- Arduino Uno R3
- Arduino Leonardo
- Arduino Micro
- Arduino Pro Mini
- Arduino Robot
- Arduino Yun
- Arduino Mega ADK
- Arduino Mega 2560
- LilyPad Arduino
- Arduino Nano
- Arduino DUE
Programlar, binlerce kaynak kodu satırından oluşmaktadır. Programlama dilini bilmeyenler için fazla karışık görünebilecek bu kodlar, bir uygulama dosyası olarak derlenir. Derleme işleminden bittikten sonra kaynak kodlarına gerek kalmaz. Dolayısıyla iTunes gibi bir yazılımı çalıştırırken kaynak kodunu görmez, sadece ürünün son halini görürsünüz. Çoğumuz için bu zaten olması gereken şeydir. Açık kaynak kodlu yazılımlar ise kaynak kodlarıyla beraber yayınlanırlar. Geliştirici, bazen onları derleyip, kaynak kodlarının yanında bir uygulama dosyası da sunabilir. Bazı durumlarda ise derleme işi kullanıcıya bırakılır. Açık kaynak kodlu yazılım, kaynak kodları herkese açık olan yazılımdır. Bunun anlamı, onun üzerinde herhangi bir değişiklik yaparak kendi sürümünüzü meydana getirebileceğinizdir. Arduino ide, hem indirilebilir hem de online kodlama versiyonu ile her yerden kodlama yapma olanağı sunmaktadır. Arduino ide kullanımı kolay, hızlı bir şekilde programlamaya başlayabileceğiniz açık kaynak programıdır.arduino uno nasıl programlanır soruna yanıt olarak c/c++ dillerini bilmeniz gerekir diyebiliriz. Ancak elbette bunları bilmeden de blok tabanlı programlama yöntemiyle arduino programlama yapmak mümkündür.
Yukarıdaki metinlerde biraz da olsun arduino yu tanıdığınızı umuruyorum.Şimdi ise ufak bir proje yapıp kodları kullanıp nasıl çalıştığına bakalım.
Bu projede arduino modeli olan NANO kullanacağız. Arduino nano ya ait pin yapısını aşağıda görmektesiniz.
Toplamında 12 adet led kullanacağız ve bu ledler animasyon şeklinde yanacak.
İlk yapmanız gereken ise PC nize ARDUİNO proğramını kurmanız ve proğram ile birlikte tüm eklentilerini yüklemeniz gerekmektedir. Proğramı başarılı bir şekilde yükledikten sonra sıra geldi proğramın içerisine kodları yüklemeye...
Proğramı kurduktan sonra arduino nano yu tanıtmanız gerekir.
Yukarıda COM yazan yerde PC üzerinde hangi USB portunuza NANO yu bağladıysanız buradan PORT seçimi yapın...
Tüm ayarları doğru bir şekilde yaptıysanız geriye sadece kod yükleme işlemi kalmıştır.
Aşağıdaki kodu arduino proğramın içerisine yapıştırın.
Tüm işlemler bittikten sonra aşağıda görmüş olduğunuz gibi bütün ledleri sırası ile bağlayınız. Bağlantılar doğru bir şekilde yapıldıktan sonra aşağıdaki kod işlemini uygulayın.
Kod:
#define t 30
#define t1 20
#define t2 100
#define t3 50
void setup() {
// set up pins 2 to 13 as outputs
for (int i = 2; i <= 13; i++) {
pinMode(i, OUTPUT);
}
}
void loop(){
effect_1();
effect_1();
effect_2();
effect_2();
effect_3();
effect_3();
effect_4();
effect_4();
effect_5();
effect_5();
effect_6();
effect_6();
effect_7();
effect_7();
}
//left to right and right to left
//Effect 1
void effect_1()
{
for(int i=2; i<14; i++){
digitalWrite(i, HIGH);
delay(t1);
digitalWrite(i+1, HIGH);
delay(t1);
digitalWrite(i+2, HIGH);
delay(t1);
digitalWrite(i, LOW);
delay(t1);
digitalWrite(i+1, LOW);
delay(t1);
}
for(int i=13; i>1; i--){
digitalWrite(i, HIGH);
delay(t1);
digitalWrite(i-1, HIGH);
delay(t1);
digitalWrite(i-2, HIGH);
delay(t1);
digitalWrite(i, LOW);
delay(t1);
digitalWrite(i-1, LOW);
delay(t1);
}
}
//Effect 2
void effect_2()
{
int count = 13; // keeps track of second LED movement
// move first LED from left to right and second from right to left
for (int i = 2; i < 13; i++) {
clear();
digitalWrite(i, HIGH); // chaser 1
digitalWrite(count, HIGH); // chaser 2
count--;
// stop LEDs from appearing to stand still in the middle
if (count != 7) {
delay(t2);
}
}
// move first LED from right to left and second LED from left to right
for (int i = 13; i > 2; i--) {
clear();
digitalWrite(i, HIGH); // chaser 1
digitalWrite(count, HIGH); // chaser 2
count++;
// stop LEDs from appearing to stand still in the middle
if (count != 8) {
delay(t2);
}
}
}
//Effect 3
void effect_3()
{
for(int i=2; i<14; i++){
digitalWrite(i, HIGH);
delay(t3);
}
for(int i=2; i<14; i++){
digitalWrite(i, LOW);
delay(t3);
}
for(int i = 14; i>=2; i--){
digitalWrite(i, HIGH);
delay(t3);
}
for(int i = 14; i>=2; i--){
digitalWrite(i, LOW);
delay(t3);
}
}
//Effect 4
void effect_4()
{
for(int j = 2; j <= 13; j++){
digitalWrite(j, HIGH);
delay(t2);
j=j+1;
}
for(int j = 2; j <= 13; j++){
digitalWrite(j, LOW);
delay(t2);
}
for(int k = 15; k > 2; k--){
digitalWrite(k, HIGH);
delay(t2);
k=k-1;
}
for(int k = 15; k > 2; k--){
digitalWrite(k, LOW);
delay(t2);
}
}
//Effect 5
void effect_5()
{
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin, HIGH);
delay(t1);
digitalWrite(pin+1, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+1, HIGH);
delay(t1);
digitalWrite(pin+2, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+2, HIGH);
delay(t1);
digitalWrite(pin+3, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+3, HIGH);
delay(t1);
digitalWrite(pin+4, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+4, HIGH);
delay(t1);
digitalWrite(pin+5, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+5, HIGH);
delay(t1);
digitalWrite(pin+6, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+6, HIGH);
delay(t1);
digitalWrite(pin+7, LOW);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin+7, HIGH);
delay(t1);
digitalWrite(pin+8, LOW);
delay(t1);
}
for(int pin = 9; pin >= 2; pin--)
{
digitalWrite(pin+8, HIGH);
delay(t1);
digitalWrite(pin+9, LOW);
delay(t1);
}
for(int pin = 9; pin >= 2; pin--)
{
digitalWrite(pin+9, HIGH);
delay(t1);
digitalWrite(pin+10, LOW);
delay(t1);
}
for(int pin = 9; pin >= 2; pin--)
{
digitalWrite(pin+10, HIGH);
delay(t1);
digitalWrite(pin+11, LOW);
delay(t1);
}
for(int pin = 14; pin >= 2; pin--)
{
digitalWrite(pin+11, HIGH);
delay(t1);
}
for(int pin = 13; pin >= 2; pin--)
{
digitalWrite(pin, LOW);
delay(t1);
}
}
//Effect 6
void effect_6()
{
for(int j=2; j<14; j++){
digitalWrite(j, LOW);
delay(t);
digitalWrite(j, HIGH);
delay(t);
digitalWrite(j-2, LOW);
delay(t);
digitalWrite(j, HIGH);
}
for(int k = 15; k>2; k--){
digitalWrite(k, LOW);
delay(t);
digitalWrite(k, HIGH);
delay(t);
digitalWrite(k+2, LOW);
delay(t);
digitalWrite(k, HIGH);
}
for(int k = 2; k<14; k++){
digitalWrite(k, LOW);
delay(t);
digitalWrite(k, HIGH);
delay(t);
digitalWrite(k-2, LOW);
delay(t);
digitalWrite(k, HIGH);
}
for(int k = 15; k>2; k--){
digitalWrite(k, LOW);
delay(t);
digitalWrite(k, HIGH);
delay(t);
digitalWrite(k+4, LOW);
delay(t);
digitalWrite(k, HIGH);
}
for(int k = 2; k<14; k++){
digitalWrite(k, LOW);
delay(t);
digitalWrite(k, HIGH);
delay(t);
digitalWrite(k-4, LOW);
delay(t);
digitalWrite(k, HIGH);
}
}
//Effect 7
void effect_7()
{
for(int j=2; j<14; j++){
digitalWrite(j, HIGH);
delay(t);
digitalWrite(j+2, LOW);
delay(t);
}
for(int k = 15; k>2; k--){
digitalWrite(k, HIGH);
delay(t);
digitalWrite(k+2, LOW);
delay(t);
}
}
// function to switch all LEDs off
void clear(void)
{
for (int i = 2; i <= 13; i++) {
digitalWrite(i, LOW);
}
}