Arduinoya yeni başlayacaklar için ve amatörler için bir yol haritası

 

Bu yazımda öncelikle yeni başlayacak olan kişileri hedefledim. Fakat başlamış olanlar için de bir yardımcı kaynak olmasını istedim.

Arduinoya başlamadan önce şunun bilinmesi lazım.

ARDUINO KART ALMANIZA GEREK YOK.

ARDUINO KİT SATIN ALMANIZA GEREK YOK.

O zaman nasıl öğreneceğim diyorsanız. Okumaya devam edin.
Sizlerde ne kadar kolay olduğunu görebileceksiniz.

Arduino kartları programlamak için bir IDE programa ihtiyacınız var. (BEDAVA) indirip kullanabilirsiniz.
Fakat arduinoya başlamadan evvel bazı şeyleri de öğrenmeniz gerekiyor.
Mesela arduinoya 1 LED bağlamak istediniz. Bu LED gerçek devrede bir süre çalışır. Fakat uzun sürede ortam sıcaklığına göre kartınızın bozulmasına yol açabilir.
Bunu önlemek için DİRENÇ kullanmanız gerekecektir. Bunun için de diğer örnek devrelere bakabilirsiniz. Ya da işin temelini öğrenmek için Aşağıdaki Yazılarıma göz atarak başlangıç için size lazım gelen temel bilgilere ulaşabilirsiniz.

Gerekli olan yazıların linkleri:

Bu yazılar, gerçek devreye geçtiğinizde KARTLARINIZI korumak için gerekecektir.

Yukarıdaki yazılara göz attıktan sonra bir de Arduino ya da diğer işlemciler ve bilgisayarların kullandığı ikili kodlama gibi temel bilgilere ulaşmanız iyi olacaktır. Bazı komutları ve data tiplerini anlamanızı kolaylaştıracaktır. Mesela aşağıdaki ikili kodlama resmi neleri öğrenmeniz gerektiğiniz açıklayacaktır.

İkili kodlama ve HEX sayılar ile ilgili bilgiler için bu sayfaya bakabilirsiniz. Bu link pdf dosyasını PC nize indirilecektir.

Bu terimler arduino programlarda kullanılmaktadır. Bu temel bilgileri öğrendikten sonra artık programlamaya geçebilmeniz için gereken ARDUINO IDE programını BURADAN İNDİREBİLİRSİNİZ.

1.Videoyu seyrederseniz orada hangi versiyonu kurmanız gerektiğini anlattım. Ben Arduino 1.8.19 versiyonunu kullanıyorum. Siz de bunu, ya da üst versiyonunu kurabilirsiniz. Sayfa açıldığında sisteminize uygun olan dosyayı indirebilirsiniz.

Yukarıda indirme linkini verdiğim sayfanın en üstünde online web editör de bulunuyor. 1. Videoyu izlerseniz nasıl kullanabileceğinizi görebilirsiniz.
Bunun yanı sıra komut açıklamalarını ve örneklere ulaşmanız için BU SAYFAYA BAKABİLİRSİNİZ.

Bu sayfada komutların tümünü görebilirsiniz ayrıca komut linkine bastığınızda ne işe yaradığını gösterir ayrıca örnek ile açıklar. Bunun yanı sıra açılan sayfanın altında ise o komutla ilişkili parametrelere de ulaşabilirsiniz.
Aşağıdaki resimler örnek sayfalardır.



Yukarıdaki 1. Resim komutun kullanımını gösterir. 2. Resim ise o komutla beraber kullanılabilecek komut ya da parametreleri gösterir.

Arduino IDE ile çalışırken aşağıdaki gibi bir ekran görünecektir.


Resimde gördüğünüz gibi bir ekranda programınızı yazabilirsiniz. Ya da DOSYA-ÖRNEKLER menüsünden bir örnek seçerek örnek programları inceleyebilir veya deneme yapabilirsiniz.
Örnekler içinde basic kısmında BLINK programını seçerseniz size ilk programınızda LED yakma işlemini gösterecektir. Burada LED_BUILTIN kelimesini göreceksiniz. Burada anlatılmak istenen yanıp sönmesi gereken ledin ARDUINO kart üzerinde bir led olmasıdır. Gerçek ARDUINO UNO kartında bu led vardır ve sizin bir şey bağlamanıza gerek kalmadan kartı ve programı denemenizi sağlar. Siz bunun yerine dijital çıkışlardan 2. Sine LED bağlamak isterseniz o zaman bu kelimeyi nerede görürseniz orada 2 rakamı ile değiştirin. Bu kez dijital 2. Pime bağlayacağınız LED yanıp sönmeye başlayacaktır.

Arduino IDE de yapmanız gereken ilk ayarlama ARAÇLAR menüsünden Arduino kartınızı seçmek. Kartınızı seçtikten sonra derleme yapabilirsiniz. Programınız kontrol edilir hatasız ise derlenir. Kart belirlenmez ise HATA verecektir. Kartınız, kart seçim listesinde yoksa KART YÖNETİCİSİ ni seçerek kartınız ile ilgili bilgileri resimdeki gibi yükleyebilirsiniz.


Bunun yanı sıra, bir de Arduinoda bazı programlamalar yaparken Kütüphaneye ihtiyacımız olabilir. Bu kütüphaneler ARDUINO IDE de kayıtlı değil ise TASLAKLAR- LIBRARY EKLE- KÜTÜPHANELERİ YÖNET seçilerek ilgili kütüphane aranır ve bulununca KUR butonu ile kurulacaktır.
Kütüphaneler programa eklenirken INCLUDE komutuyla SETUP öncesinde programın en başında eklenir.

#include <SoftwareSerial.h> satırı gibi. Burada dikkat ediniz ; işareti kullanılmaz.
Şayet kütüphane yöneticisi size kütüphaneyi sağlayamıyorsa, bir başka kaynaktan bulduysanız, bilgisayarınızın BELGELERİM- -ARDUINO – LIBRARY dizinine kopyalayın. Programınız derlenirken ARDUINO IDE buradan kütüphane bilgilerinizi alacaktır.



Arduino programında  2 bölüm her daim sabittir. Bu bölümler VOID SETUP ve VOID LOOP.
VOID SETUP : program başladığında ilk çalışan bölümdür. Bu bölüme 1 kez çalışması gereken ayarlama komutları yazılır. Program çalışırken bir daha buraya uğramaz.

VOID LOOP: sonsuz döngü diye anılır. Bu program boyunca devamlı çalışır. Buradaki tüm komutlar devamlı çalışır.

2 şekilde DEĞİŞKEN TANIMLANIR. Değişken nedir derseniz. Bir yerde tanımlandıktan sonra programın çeşitli yerlerinde aynı isimde kullanılan bir kelimedir. Bunlar data tipleriyle birlikte tanımlanır.
Amacı ise program içerisinde kolay hatırlanabilir olması ve kolaylıkla değiştirilmesidir.
Bununla birlikte bazı değişkenler 1 kez tanımlanır ve bir daha değişmez. Mesela LEDPIN=2 dediğinizde artık LEDPIN yazdığınız yerde, gerçek değeri 2 olacaktır.

Ya da SAY=0 dedikten sonra say=say+1 dediğinizde bu satırdan her geçtiğinde SAY değişkeninin değeri her defasında 1 arttırılır.
Değişken tanımlamalarını Arduino.cc sitesinde reference menüsünde bulabilirsiniz. Örneklerle açıklamaları mevcuttur.

Değişkenler GLOBAL ve LOCAL olarak tanımlanır. GLOBAL dediklerimiz programın başında SETUP öncesinde tanımladıklarımızdır. Bu değişkenler programın her yerinde kullanılabilir. Fakat LOCAL(yerel) değişkenler ALT program içerisinde tanımlanır ve o alt programdan çıkıldığında kaybolurlar. Geçici değişkenlerdir.

ARDUINO IDE de program yapmak için bazı kurallar vardır.

Bu kurallardan ilki komut satırının sonunda ; işaretini kullanmanız gerekmektedir.
pinMode(2, OUTPUT);

Bununla birlikte her void ile başlayan fonksiyon ya da alt program diyebiliriz. Bunlar küme paranteziyle başlayıp küme paranteziyle kapatılır. { } iki parantez arasına komutlar yazılır.
void loop() { komutlar }

Ayrıca Kendinizde bu alt programları çoğaltabilirsiniz. O zaman kendiniz VOID kelimesinden sonra bir isim vermek zorundasınız. Bu isimler, bu alt programın çağırılmasında kullanılacaktır.

// işareti ise programda açıklama satırlarını temsil eder. Bu işaretlerin sağındaki karakterler programa dahil olmazlar.
digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)

Bir de /*  */ işaretleri vardır. Bu da birkaç satırlık açıklama yapacaksanız kullanılır. Bu açıklama işaretlerini mutlaka doğru açıp kapatmanız gerekir. Çünkü yapılmadığında birkaç program satırı iptal olabilir. Programınız çalışmaz.
/*  Blink  Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
*/

Son olarak bir tavsiye vereceğim. ALT programlar oluşturursanız bunları VOID LOOP satırının üstüne yazın. Eski IDElerde karşılaştım programın en altına yazdığımda alt programa git dediğimde hata veriyordu. Sonradan düzeltilmiş olsa da, Sizler bu şekilde yaparak garantilemiş olursunuz.

Alt programa neden ihtiyacımız olur: Bir programda her şeyi LOOP altına yazarsanız gecikmeler oluşur. Mesela her şeyi LOOP döngüsüne yazdınız. Yaklaşık 50 satır oldu. LOOP döngüsünde bir de Buton kontrolü yaptınız. Bu şekilde program çalışırken LOOP döngüsü satırları sırayla işlerken gecikmeye sebep oldu. Bu kez butona parmağınızı basıp çektiğinizde geç kaldığı için butona bastığınızı hissetmeyecek ve işlem yapmayacaktır. Bundan dolayı Ortak işlemler, çok kullanılan işlemler, gecikme sağlayan ve her zaman kontrol edilmesi gerekmeyen işlemler ALT programlara bölünür ki çağırılmadığı zamanlarda gecikmeye sebep olmasın.

Program yazılırken hatalar olduğunda En soldaki DERLEME (VERIFY) butonuna basılırsa hataları size bildirir. Bu hataları düzelterek programınıza devam edebilirsiniz. Bu hatalar yazım hatalarıdır. Mantık hatasını görmez ve düzeltmez.

Bunların yanı sıra bir de Arduino kart harici, programlanabilen kartlar vardır. Mesela ESP8266 gibi. Bu kartları da ARDUINI IDE ile programlayabilirsiniz. Fakat bunu yapmak için aşağıdaki resimdeki gibi bir satırı
DOSYA- TERCİHLER menüsünde aşağıdaki resimdeki gibi koymanız gerekmektedir.


Burada farklı bir BLINK programı vardır. Ve her satırın görevi burada açıklanmıştır.

// LED'in bağlı olduğu pin numarasını tanımla
const int ledPin = 13;

void setup() {
  // Setup kodları buraya yazılır ve sadece bir kez çalışır

  // LED pinini çıkış olarak ayarla
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // Loop kodları buraya yazılır ve sürekli olarak çalışır

  // LED'i aç
  digitalWrite(ledPin, HIGH);

  // 1000 milisaniye (1 saniye) bekle
  delay(1000);

  // LED'i kapat
  digitalWrite(ledPin, LOW);

  // 1000 milisaniye (1 saniye) bekle
  delay(1000);
}

KOMUT kullanımlarını YAPAY ZEKA yardımı alarak da öğrenebilirsiniz. CHAT GPT 3.5 sitesinde yapay zeka örnekleri ile birlikte size açıklayacaktır. Bu link’i kullanabilirsiniz.

Şimdi de KARTLARI tanıyalım.

Kartlardan bazıları aynı mikrokontrolcüyü kullansa bile pim bağlantılarında farklılık vardır.
Ayrıca burada sadece en popüler kartlar alınmıştır. Daha çok kart çeşidi vardır.

Atmega 328 işlemcisini kullanan kartlar.

ARDUINO UNO, ARDUINO NANO, ARDUINO MINI, ARDUINO PRO MINI

ATMEGA 2560 işlemcisini kullanan ARDUINO MEGA dır.

Çok popüler olanlar bunlardır. Atmega 328 kullananlarda 1 donanımsal seri port vardır.  Arduıno mega da ise 4 donanımsal seri port vardır.
MEGA modelinde çok daha fazla dijital giriş çıkış vardır.
Bununla birlikte ATMEGA 328 kullanan kartlar oldukça fazla kullanılır. Şayet dijital ya da diğer özellikler yetmez ise o zaman MEGA modeli seçilebilir.
Bu modellerden en küçüğü MINI modelidir. Küçük yerlere yerleştirilebildiğinden tercih edilebiliyor.
MINI ve PRO MINI modellerinde ise PC den data bağlantısı yapan USB konektörü yoktur. Bunun yerine bir USB seri çevirici ile PC ye bağlanabilir. UNO ve NANO kadar kolay bir şekilde USB den PC ye bağlanamaz.
Bazı MINI modellerinde USB konnektör görürseniz, bu sadece USB den 5V almak içindir. 

Bu tip farklılıklar vardır.
Fakat alınacak ise ARDUINO UNO veya ARDUINO NANO ile başlamak daha iyidir.
Genelde ARDUINO UNO kullanıyorum. Daha oturaklı olduğundan değil. Üzerinde 5V ta dönüştüren akımı yüksek bir voltaj regülatörü olduğundan ve 3V3 regülatör olduğundan dolayı.

Aşağıda Arduıno NANO ve UNO için PİM çıkışlarını gösteren resimler var. Bu resimlerde şunu göreceksiniz. 1 tane pim, birden fazla görev yapabiliyor. Bunu siz programdan ayarlayabiliyorsunuz. Ayrıca ATMEGA 328 entegresinin pim çıkışları da resimde var. Bu çıkışları Arduıno Pimleriyle ilişkilendirebilirsiniz.

DENEME.INO programı aşağıdadır. Açıklamalar buna göre yapılacaktır. 

//String inputString = "";         // a String to hold incoming data
//bool stringComplete = false;
//int myInts[6];
//int myPins[] = {2, 4, 8, 3, 6, 4};
//int mySensVals[5] = {2, 4, -8, 3, 2};
//char message[6] = "hello";

float dene=0.123;

#define LEDPIN 2 // bu komutun sonunda ; işareti kullanılmaz. hata verir.

const int LEDPINS=3;
//const float pi = 3.14;// şayet bir sabiti programda kullanmak üzere bir değişken adına atama yapıyorsanız
// bu şekilde kullanırsınız. Bu değişkenin değeri bir daha değiştirilemez.

//float x;// sadece değişken tanımlama yapıyorsunuz Bu değişken değeri program iöerisinde değişebilir.

/*SOFTSERIAL
The circuit:
* RX is digital pin 10 (connect to TX of other device)
* TX is digital pin 11 (connect to RX of other device)
#include // dahil edilir.
SoftwareSerial mySerial(10, 11); // RX, TX // dahil edilir.
*/

void setup() {
//Serial.begin(9600);

pinMode(LEDPIN,OUTPUT);// output küçük harf yazılamaz.hata verir.
pinMode(LEDPINS,OUTPUT);

// mySerial.begin(4800);
// mySerial.println("Hello, world?");
}

// ALT FONKSİYONLAR LOOP DÖNGÜNÜZDEN ÖNCE YAZILMASI İYİ OLUR.
void deneme1(){

}
void deneme2(){

}

void loop() {
int localvalue=0;// bu değişken sadece bu loop döngüsünde kullanılır.
// şayet her yerde kullanılacaksa GLOBAL değişken yeri olan en başta tanımlanmalı.

//Serial.println(" serial port working ");
//delay(300);
digitalWrite(LEDPIN, HIGH);// HIGH küçük harf tanımaz.
delay(500);
digitalWrite(LEDPIN, LOW);
delay(500);
}

 

Deneme programında setup bölümünün üstünde çeşitli değişken tanımlamaları var. Bu değişkenlerden // işareti ile başlayanlar size örnek olarak verildi. Programa dahil değil.
Bu değişkenlerden float dene=0.123; değişkeni sadece örnek olarak verildi. Bu float ondalıklı sayı değişkenidir. INT yazdıklarınız tamsayıdır. Float yazdıklarınızı ondalıklı kullanabilirsiniz.
#define LEDPIN 2 gördüğünüz gibi komut sonunda ; işareti yoktur. Bu işareti koyarsanız HATA verir.
Anlamı LEDPIN değişkeninin değerini 2 yapar ve LEDPIN değişken değeri bir daha değiştirilemez.
const int LEDPINS=3; yine bir değişken tanımlamasıdır bu da LEDPINS değişken değerini 3 yapar ve bir daha programın herhangi bir yerinde değiştirilemez. Sabittir. Bu tanımlamalar GLOBAL değişken bölümünde yapıldığından programın her yerinde değişken ismiyle kullanılır.
pinMode(LEDPIN,OUTPUT); bu komut ise define komutuyla belirtilen değişken ismine ait pimin OUTPUT olmasını bildirir. Bu komut SETUP bölümünde yer alır. Yani bu şekilde dijital 2 piminin OUTPUT olmasını istiyoruz demektir.
digitalWrite(LEDPIN, HIGH); komutu ise LEDPIN ledinin HIGH ya da LOW olmasını sağlar. LED yanar ve söner. Tabii ki bağlantı şekline göre bu değişir.
Bu ne demek derseniz. Aşağıdaki resme dikkatli bakın. Burada Pim seviyesi HIGH iken ledin 1 tanesi yanar. LOW seviyesindeyken diğeri yanar. PİM HIGH seviyesindeyken +5V verir. LOW seviyesindeyken GND ye bağlanır. LED in bir ucu PİM e bağlanır. Diğer ucu +5V veya GND ye bağlanır. Böylelikle hangi durumda yanmasını istiyorsanız siz seçersiniz. Tabii ki Her daim bir direnç seri olarak kullanılmalı ve arduinoyu korumalıdır.


delay(500); bu komut ise BEKLEME komutudur. Burada 500ms bekleme yap sonra kaldığın yerden devam et demektir. Bazen komutlardan dolayı bazen de çıkıştaki bilginin okunabilmesi için programı yavaşlatmamız gerekecektir. Bu komut bunu sağlamaktadır. Bu komut milisaniye olarak gecikme verir. 1000ms=1s olacaktır. Bunun yanı sıra delayMicroseconds() komutu vardır bu da mikrosaniye olarak gecikme verecektir. 1000000us=1saniye olacaktır. Daha hassas bekleme durumunda kullanılır. Genellikle milisaniye gecikmesi verilir.

void deneme1(){

}
bu ise bir alt program ya da fonksiyon olarak adlandırılır.  Bunun mantığı ise şu şekildedir. LOOP döngüsüne yüzlerce satırlık program satırı koyabilirsiniz. Bir de bu döngüye buton kontrolü koydunuz. Butona bastığında hissetmesini ve bir şeyler yapmasını istiyorsunuz. Program LOOP döngüsünde çalışmaya başladığında tüm satırlara uğramak zorundadır. Bu da bir gecikmeye neden olacaktır. Bu gecikmeden dolayı siz butona basıp elinizi kaldırdığınızda o sırada buton kontrolü yapamayacak ve sizin bastığınızı göremeyecektir. Bundan dolayı ortak kullanılacak ya da bir koşul ile kullanılabilecek  program satırları varsa alt program şeklinde yazılır.
Örneğin, butona basıldığında gerekli hesaplamaları yap ve sonucu göster diyorsanız LOOP döngüsünde butona basıldığını hissedecek satırı yazarsınız ve devamlı bu satır kontrol edilir. Şayet butona nasıldıysa deneme1 alt programına giderek gerekli hesaplamaları yapar ve sonucu yazdırıp tekrar LOOP döngüsünde kaldığı yerden devam ederek, butonu kontrol etmeye devam eder.

Bu tip durumlarda alt programlar yapmak hem zaman gecikmesini önler hem de programın rahat bir şekilde okunarak gerekli düzenlemelerin yapılmasını sağlar. Hatta alt programlar başka koşullarda da da kullanılacaksa programın bir çok yerinden çağırılan ortak bir alt program olarak programınızın kapladığı alanı da küçültür.

Not: Arduino ve diğer mikrokontrolcülerin hafızası PC lere göre çok küçüktür. Bundan dolayı programınızı yazarken hafızadan tasarruf edersiniz. Bu alt program ya da LOCAL(yerel ) değişkenler tanımlayarak hafızayı daha verimli kullanırsınız.
Hafızayı verimli kullanmazsanız ne olur derseniz Arduino MİNİ kullanabileceğiniz bir program için Arduino MEGA kullanırsınız ki bu da masraflı olacaktır.

Şimdi de SERİ PORT haberleşmeye bakalım.

/*
  Serial Event example

  When new serial data arrives, this sketch adds it to a String.
  When a newline is received, the loop prints the string and clears it.

  A good test for this is to try it with a GPS receiver that sends out
  NMEA 0183 sentences.

  NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or
  other ATmega32U4 based boards.

  created 9 May 2011
  by Tom Igoe

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/SerialEvent
*/

String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // initialize serial:
  Serial.begin(9600);
  mySerial.begin(9600);
  mySerial.println("Hello, world? softserial");
}

void loop() {
  // print the string when a newline arrives:
  
    Serial.println(" serial port working ");
 delay(300);
mySerial.println(" SOFT serial port working ");
 delay(300);
 
}

 


Bir program yaptıysanız sonuçları bir çıkış ile görmek istersiniz. Bunu LED, MOTOR, LCD ekran gibi çıktı araçlarıyla görebilirsiniz. Bir de Arduino IDE de kolaylık vardır. Bu da seri port monitör dür. Programınızı yazarken bazı çalışmalar yaparsınız ve sonucu görmek istersiniz. Bunu seri port ekranına göndererek görebilirsiniz. Ya da başka bir cihaz ile seri port üzerinden haberleşebilirsiniz.
Bu gibi durumlarda seri port çıkışlarına ihtiyacınız olacaktır. Bu çıkışlar TX ve RX çıkışlarıdır.
Arduino UNO,NANO,MINI,PRO MINI kartlarında 1 adet donanımsal seri port vardır. Donanımsal seri port çıkışları kart üzerinde işaretlenmiştir. Bu çıkışlardan TX olan çıkış, RX olan ise giriştir. Diğer cihazlara bağlanırken, Arduinonun TX çıkışı, diğer cihazın RX girişine bağlanır ki birisi verirken diğeri alabilsin.

Seri port donanımsal olarak 1 adet var. fakat isterseniz YAZILIMSAL seri port da kullanabilirsiniz. Burada ise TX ve RX pimlerini siz belirlersiniz. Herhangi 2 dijital pimi Tx RX olarak seçebilirsiniz.
Bu şekilde aynı anda 2 adet seri port kullanabilirsiniz.
Bunlar arasında ne fark var derseniz.
Donanımsal seri port yüksek hızlarda haberleşme yaparken kolay kolay hata yapmaz. Fakat Yazılımsal seri port yüksek hızlarda hata yapabileceği için düşük hızlarda haberleştirilmelidir.
Ayrıca ARDUINO IDE ye ait Seri port monitör sadece donanımsal seri port için çalışır. Yazılımsal seri port bilgilerini göstermez.
3 adet seri port ihtiyacınız varsa 1 adet donanımsal ve 2 adet yazılımsal seri port kullanabilirsiniz.

Bununla birlikte ARDUINO MEGA 4 adet donanımsal seri port’a sahiptir.

Hangi Arduino kartını seçmeliyiz.

Bu soruya projenizi nasıl oluşturacağınıza göre karar verebilirsiniz.
Küçük bir yere koyabilecekseniz ve sizin giriş çıkış pim ihtiyaçlarınızı karşılıyorsa MİNİ kullanabilirsiniz. Giriş çıkış pimleri yetmiyorsa başka bir çözümünüz de yoksa daha fazla giriş çıkışa sahip NANO veya UNO yu seçebilirsiniz. Şayet 6 taneden fazla ADC girişine ihtiyacınız varsa 8 adet ADC ye sahip NANO kartını seçebilirsiniz. Ya da UNO, NANO giriş çıkış pimleri yetmiyorsa Ya da donanımsal PWM fazla gerekiyorsa ARDUINO MEGA kullanabilirsiniz. Tabii ki buna karar verirken hem masraf, hem de projenizin yeri önemli olacak. Alternatif ne derseniz MINI kullanıp bir de I2C pim çoklama kartı kullanıp Giriş çıkış pimlerini çoğaltabilirsiniz. Bu da bir çözümdür. Ya da alternatif olarak PWM yetmiyorsa MEGA kullanmak yerine ekstra PWM sürücü kullanabilirsiniz.

Yani önce projenizi belirleyeceksiniz. Sonrasında yetmiyorsa alternatif çözümlere bakabilirsiniz ya da arduino kartınızı değiştirirsiniz.

Ben denemelerimi ARDUINO UNO ile yapıyorum. Deneme kolay olsun diye. Fakat gerçek bir projede Arduino MINI ya da NANO kullanmak isterim. Tabii ki yer sorunum varsa. Yer sorunum yoksa UNO ya da MEGA kullanabilirim.
Ayrıca 3V3 ile çalışan devrelerle de çalışacaksam UNO kartını seçerim. Arduino NANO 3V3 çıkışı çok zayıftır. Bundan dolayı UNO, denemelerinizde iyi sonuç verecektir. 3V3 için en iyi çözüm arduinoya bağlanan 5V gerilimi alıp kendi 3V3 regülatörümüzü yaparak Arduinoyu devreden çıkarmamız olacaktır. Mesela ESP8266-01 modülü 3V3 ile çalışıyor ve yaklaşık 80-100mA akım çekiyor. Arduino uno bunu karşılasa bile bir süre sonra ısınabilecektir. Bundan dolayı denemeler için 3V3 regüle devresi almanız yerinde olacaktır.

Söz gerilimlere gelmişken buna da dikkat etmeniz gerekir. Arduino çıkışları 5V tur. ESP gibi kartlar ya da bazı entegreler 3V3 ile çalışır. Bundan dolayı Arduinonun çıkış gerilimini düşürerek 3V3 devrelere vermemiz gerekir. 3v3 devrelerin çıkış uçlarını arduinoya direkt bağlayabiliriz.
Bu tip bir dönüştürücüye LEVEL SHIFTER denir. Dirençlerle ya da transistörlerle yapılabilir.
Seviye çevirici (LEVEL SHIFTER) yazımı buradan okuyabilirsiniz.

ARDUINO IDE farklı kartlar için de programlama yeri olarak kullanılabilir.
Bu kartlar ESP serisi, STM serisi gibi kartlardır. Bu kartları programlamak için kütüphane gerekecektir. Bunu kütüphane ekle bölümünden yapabiliriz. Fakat bir de Arduino IDEnin DOSYA – tercihler menüsünden resimde gördüğünüz yere Arduıno dışında programlamak istediğiniz kartın bilgilerine ulaşılacak linki yazmanız gerekiyor.


Buraya kadar ARDUINO hakkında bilgiler verdim. Yukarıda hatırlarsanız size KART ALMAYIN demiştim.

Evet bunu dememin sebebi PROTEUS programında ÜCRETSİZ olarak her şey var.

Proteus programında, ARDUINO kütüphaneleri ile Arduino üzerinde gerçekten çalışıyormuşsunuz gibi denemelerinizi yapabileceksiniz. Hem de UNO, NANO, MINI ve MEGA kartlarına ücretsiz sahip olmuş olacaksınız. Bunun yanı sıra ÜCRETSİZ olarak Elektronikçide satılan bir çok Arduino modülüne ve yine elektronikçide satılan bir çok komponente erişebileceksiniz. Bunun yanı sıra VOLTMETRE AMPERMETRE, OSİLASKOP gibi cihazlara ücretsiz erişebileceksiniz.

Proteus için Öncelikle bir Türkçe Kullanım kılavuzumuz var. Ayrıca daha ayrıntılı bir İngilizce Kullanım kılavuzumuz var. Bunun yanı sıra Proteusu ücretsiz olarak (Tabii ki Lisanssız olarak) indirebileceğiniz yerler var.

Kullanım kılavuzunu tüm dosyaların bulunduğu linkten alabilirsiniz.
PROTEUS başarılı bir simulatör programıdır. Bütün denemelerinizi bu program ile gerçek ortamda yapıyormuş gibi yapabileceksiniz. Proteus yıllardan beri kullanıldığı için sınırsız örnek mevcuttur.

2.video Proteus ile çalışmayı gösteriyor. Nasıl bir çalışma olacağına dair bu videoyu izleyebilirsiniz. Tabii ki buradaki detaylar da size yardımcı olacaktır.

Öncelikle PROTEUSU nereden indirebiliriz buna bakalım.
Fakat bu aşamada şunu söylemeliyim. Proteus 7.10 versiyonu eskiden WIN10 da sorun çıkartmasa bile son zamanlarda sorun yarattı. Bunun yerine proteus 8 versiyonlarından birini indirebilirsiniz. Ne fark var derseniz,
Proteus 8.6 indirdiyseniz, bu program ile proteus 7.10 dan 8.6 ya kadar olan dosyaları açabilirsiniz kullanabilirsiniz.
Arkadaşınızdan proteus 8.7 ile kaydedilmiş bir örnek geldiğinde bunu 8.6 versiyonuyla açamazsınız. Siz de programlarınızı paylaşacaksanız, 8.6 gibi bir versiyonla çalışmanız yerinde olacaktır. Yoksa yüksek versiyonla çalışırsanız sizin dosyalarınızı daha eski versiyon kullananlar göremeyecektir.

Bundan dolayı en yüksek versiyon kurayım onunla çalışayım demeyin. Zaten zaman içerisinde gerekli olduğu zaman yükseltebilirsiniz.

İndirme LİNKLERİ:

Proteus 8.10 versiyonu : https://drive.google.com/file/d/150Vm-D3JX8RPK4xBD7f5KikBHa0rIsbi/view

Proteus 8.6 sp2 versiyonu: https://www.mediafire.com/file/bwcadw9480gurc4/Proteus+8+Professional+8.6+SP2+for+Windows.rar?fbclid=IwAR1qocEho-zoDagM64nlJ-vytA601yLGpcOip80qqVHifVIxTltsHPlcHu0

Proteus 7.10 versiyonu: https://drive.google.com/drive/folders/0B8X5XBNzNHFnUWJydGNsSlYxV28?resourcekey=0-5YCOU2T1YABJIi7G6cVPVA

Kullanma kılavuzlarını En altta bulunan TÜM DOSYALAR linkinden bulabilirsiniz.

Proteusta kullanılacak Arduino ve Arduinoya ait sensörlerin kütüphanelerini bu linkten indirebilirsiniz.
3. Video size nasıl indirebileceğinizi gösterecek.
Zaman zaman site kapanabilir ama sonradan açılıyor.

Ayrıca bu linkten de proteus kütüphanelerine ulaşabilirsiniz. Fakat bunlar eski versiyon olabilir. Yine de işinizi görecektir.

Bu linkten de Proteus kütüphanelerini indirebilirsiniz.

Aşağıdaki resimde Arduino ile kullanılan modüllerin bir kısmı var. Gerçekte bunlardan daha fazla Proteus Kütüphanesi vardır. Zaten 3. videoyu seyredince anlayacaksınız. Sadece Arduino ve modülleri değil, ESP kartları, Raspberry pi kartlarına ait proteus kütüphaneleri de mevcuttur.


Bu kütüphaneler aynı yere kopyalanmış olsa da birbirinden farklı isimler ile proteusta yer alacaklardır. Yine de siz hangisini kullanacağınızı seçerken proteusun yanda gösterdiği resimlere göre karar verin.
Ayrıca Proteus sonradan indirilen kütüphaneleri, Proteusun kendi kütüphaneleri kadar mükemmel değiller. Mesela ilk verdiğim linkten v1.0 olanları indirip kullanırken bazı pimlerin ikincil görevlerinin çalışmadığını görmüştüm. Bu kütüphanelerin V2.0 ları çıkmış onları kullanmanızı tavsiye ederim. V3.0 da yoldaymış. Son versiyonla çalışırsanız daha iyi olacaktır. Hatalar düzeltilmiş olacaktır.

En iyi çözüm, proteusun kendi kütüphanelerini kullanmak. Fakat proteus Arduino sensörlerinin ortaya çıkma hızına yetişemediğinden belki en üst versiyonlarda bunları algılayabilecek. Yine de dışarıdan alacağımız kütüphanelerle çalışmak işimizi görecek derecede İYİDİR.

Ayrıca Proteusta Arduino kütüphanesiyle problem yaşarsanız, Proteusun kendi ATMEGA328 entegresini UNO NANO MINI yerine kullanabilirsiniz. Bu şekilde hatasız programlama yapabilirsiniz. Bu nasıl olacak derseniz size yukarıda verdiğim ARDUINO UNO, ARDUINO NANO ve ATMEGA 328 PINOUT şemalarını kullanabilirsiniz. Bu şemalardan ATMEGA 328 şemasında ATMEGA nın pimleriyle Arduinoya karşılık gelen PİMLER işaretlenmiştir. Kolaylıkla eşleştirebilirsiniz.

Sadece 2. Videoda göreceğiniz gibi ATMEGA entegresi kullanıyorsanız, Kristal uçlarına 1 adet kristal bağlamanız gerekecek ve Entegre özelliklerini aşağıdaki resme göre ayarlamanız gerekecektir.


Not: Kütüphane dosyalarını nasıl indirip kuracağınızı gösteren video 3. Videodur. Bu videoda göreceğiniz gibi bazı kütüphanelerde HEX dosyasıda yanında veriliyor. Bu HEX dosyasını kütüphane dizinine koyduğunuzda programınız görür. Fakat devre şemanızı bir arkadaşınızla paylaşıyorsanız HEX dosyasınıda çizim yaptığınız dizine kopyalamanız gerekecektir. Kütüphane programın içine gömülerek gitse de HEX dosyası otomatik olarak gidemeyeceği için bu HEX dosyasını Çalıştığınız dizine kopyalarsanız çizim programınızla birlikte paketleyip verebilirsiniz.
Tüm kütüphanelerde HEX dosyası yoktur. Bu dediklerim kütüphanenin HEX dosyası olanlar için geçerlidir.

ALGORİTMA:

Bu, sizin programlamaya başlarken bilmeniz gereken konulardan biridir. Bu konuda bir temel bilgiyi buradan okuyabilirsiniz.
Algoritma bilmeden program yapamaz mıyım diyorsanız,
ELBETTE YAPABİLİRSİNİZ. Fakat buna hakimseniz daha güzel programlama, daha verimli programlama yapabilirsiniz.

Bazen ARDUINO size yetmez. Ya da bazen yan devrelere ihtiyaç duyarsınız. İşte böyle bir ihtiyacı karşılamak için Bu yazımı okuyup bakış açınızı geliştirebilirsiniz.

Elektronik bölümünde okuyorum, sayısal devrelere merakım var diyorsanız
Bu yazılarıma bir göz atmanızda fayda vardır.

Videolar:

1.Video : ARDUINO ya GİRİŞ.

2.Video : Proteus ile ARDUINO çalışması.

3.Video : Proteus kütüphane indirme ve PC ye yerleştirme.

4.Video : YAPAY ZEKA ile ARDUINO programlama Öğrenme.

PROTEUS SİZİN ARDUINO PROGRAMINIZI NASIL ÇALIŞTIRACAK:

2.videoda gösterildiği şekilde ARDUINO dan programınızın HEX dosyasını alma ve Proteus UNO özelliklerine yazma işlemi yapılarak programınızı proteusa aktarabilirsiniz. Bu aktarma işlemi 1 kere yapılır. Siz program adını değiştirmedikten sonra yapacağınız her değişiklik proteus tarafından algılanacaktır. Her yeni çalıştırmada sizin HEX dosyanız yeniden çalıştırılacak ve değişiklikler algılanmış olacaktır.
Bunun için öncelikle ARDUINO IDE de programınızı DERLEME VERIFY butonuna basarak hatasız derlemeniz gerekir. Sonrasında TASLAK menüsünde DERLENMİŞ BİBARY ÇIKAR seçeneğine basın. Size bir HEX dosyası oluşturacaktır. Bu dosyanın yeri INO dosyasının yanında olacaktır. BU dosyanın yolunu PROTEUS UNO kartının özelliklerine yazdığınızda, Proteus her çalıştığında o hex dosyasını alarak programınızı çalıştıracaktır.

Aşağıdaki resimler size yardımcı olacaktır.


TÜM PROGRAMLARA BURADAN ULAŞABİLİRSİNİZ.

 

VİDEOLAR:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.