Arduino Geliştirme Ortamı¶
Arduino gcc-avr derleyici topluluğunun C/C++ derleyicisini kullanır. AVR ve bazı 3. parti kütüphaneler harici bir çok kütüphanesi C++ ile yazılmıştır. IDE üzerinde yazılan kodlarınız aslında bir C++ kod dosyası içine alınarak aşağıdaki main.cpp dosyası içinden çağırılır.
Not
Özellikle gömülü sistemler alanında eğitim veren mühendislik bölümlerinde sadece Arduino öğretilmesine karşıyım. Normalde Arduino örneği yazmayı düşünmüyordum ama matematik karşısında elim kolum bağlandı. Matematik diyor ki hiçbir şey yapmamak ile az da olsa bir şeyler ile başlayarak öğrenmek arasında sonsuz oran vardır. Öğrenmede tatmin edicilik olması ve gerçek dünyada çalışan bir kodu görmeniz için açısından ucuz ve kolay bulunan Arduino bordları için de örneklere yer vereceğim.
Uyarı
Arduino IDE’sinin hibrit yapısında dikkat etmeniz bir kaç nokta vardır. Normal C projeleri gibi bir main() fonksiyonu yoktur. Bunun yerine setup() ve loop() fonksiyonlarını sağlar. Ayrıca fonksiyonların prototip tanımlarını kodunuzu tarayarak otomatik olarak çıkartır.
- Şemalar simulasyon odaklı verilecektir. Simulasyon için Proteus yazılımı kullanılacaktır. Proteus versiyon 8.7 SP3’dür. Proteus nereden bulunur vb. soruları lütfen sormayınız.
- Arduino Atmega328p çipine sahip UNO veya NANO
- Arduino IDE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | /*
main.cpp - Main loop for Arduino sketches
Copyright (c) 2005-2013 Arduino Team. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Arduino.h>
// Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (* /*func*/ )()) { return 0; }
// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }
void setupUSB() __attribute__((weak));
void setupUSB() { }
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
|