.\" htmlroff -u -ms -mhtml 00Z09.ms >00Z09.html
.\" troff -ms -mpictures 00Z09.ms | dpost | ps2pdf >00Z09.pdf
.\" troff -ms -mpictures 00Z09.ms | page -w
.\" Edit s/^\|*.//g
.\" Edit s/$*.\|//g
.de FG \" .FG
.ie h .html -
.el .BP \\$1.ps
.br
..
.po 1i
.fp 1 R LucidaSans
.fp 2 I LucidaSansI
.fp 3 B LucidaSansB
.fp 4 BI LucidaSansI
.fp 5 CW LucidaCW
.paragraph 0
.margin 0
.HTML "Program blink arduino dengan bahasa C
.html -
.html - \
harmful | \
cat-v | \
acme | \
uriel | \
9front | \
sl | \
sigrid | \
qwx | \
cinap_lenrek
.SH
.LG
.ihtml h1
Program blink arduino dengan bahasa C
.ihtml h1
.NL
.R
.html - troff |
.html - pdf
.html -
Arduino merupakan sebuah platform yang memberikan pemula kemudahan
untuk belajar mengenai Mikrokontroler, sebelum adanya Arduino kita
diharuskan merakit sebuah alat yang nanti akan digunakan untuk
berinteraksi dengan Mikrokontroler, dan terkadang kita juga harus
memiliki keahlian menggunakan solder, dengan adanya Arduino kita bisa
langsung berinteraksi dengan mikrokontroler dan melakukan komputasi,
Arduino memiliki sebuah alat yang bernama Arduino IDE, dengan adanya
alat ini kita dapat dengan mudah membuat instruksi untuk keperluan
kita, Namun dengan adanya alat ini saya merasakan banyaknya abstraksi
yang diperlukan untuk membuat Mikrokontroler melakukan apa yang saya
ingin lakukan dan saya merasa saya tidak mempelajari hal baru.
Setelah itu mulailah saya mencari cara melakukan pemrograman untuk
pemula seperti membuat lampu yang ada di papan Arduino berkedip, Saya
menemukan dalam sebuah Blog yang berjudul [0]Programming Arduino Uno
in pure C, sebuah blog yang bagus saya sarankan kamu membacanya juga,
di dalam blog tersebut penulis menggunakan alat yang bernama avr-gcc,
avr-objcopy dan avrdude, karena saat ini saya menggunakan [1]GNU GUIX,
saya hanya perlu menginstall "gcc-cross-avr-toolchain" dan "avrdude",
avrdude digunakan untuk mengupload atau menginstall program ke
Mikrokontroler dan avr-gcc digunakan untuk melakukan kompilasi.
Tetapi terdapat suatu masalah, dalam blog yang saya sebutkan
sebelumnya, penulis menggunakan Arduino UNO yang menggunakan
Mikrokontroler Atmega328p, sedangkan saya menggunakan Arduino Leonardo
yang menggunakan Mikrokontroler Atmega32u4, kedua Mikrokontroler
tersebut sangatlah berbeda, karna itu saya memerlukan sebuah petunjuk,
Saya mencari sebuah skema dan datasheet untuk [2]Sekema Arduino
Leonardo dan [3]Datasheet Atmega32u4 dan setelah melihat kedua Dokumen
itu saya membuat program lalu saya upload ke Mikrokontroler, seperti
inilah program yang saya buat:
.P1
#include
#include
#define BLINK_DELAY_MS 500
int main (void) {
DDRC |= _BV(DDC7);
while(1) {
PORTC |= _BV(PORTC7);
_delay_ms(BLINK_DELAY_MS);
PORTC &= ~_BV(PORTC7);
_delay_ms(BLINK_DELAY_MS);
}
}
.P2
Dari kode diatas terdapat beberapa C Makro yang asing, janganlah takut
karna kita memiliki Datasheet, kita bisa langsung mencari kata-kata
asing tersebut di Datasheet, untuk mengetahui apa itu DDRC saya
melihat dari Datasheet halaman 213 tepatnya ada di bagian 18.11.5
"Data Direction Register bit must be correctly set to enable the pin
as an output.", dari kutipan tersebut kita bisa mengetahui jika kita
ingin menggunakan sebuah pin sebagai output kita perlu mengkonfigurasi
DDR terlebih dahulu, setelah itu saya melihat Sekema Arduino Leonardo,
untuk LED ada di IO13 yang berada di PortC7 jadi kita harus mengisi
DDRC ke DDC7 menggunakan C Makro _BV, Makro _BV adalah sebuah makro
yang akan melakukan operasi bit, dikonteks ini kita sama saja seperti
memanggil kode
.P1
(1<
#include
#define BLINK_DELAY_MS 500
int main (void) {
DDRD |= _BV(DDD5);
DDRB |= _BV(DDB0);
DDRC |= _BV(DDC7);
while(1) {
PORTD |= _BV(PORTD5);
_delay_ms(BLINK_DELAY_MS);
PORTB |= _BV(PORTB0);
_delay_ms(BLINK_DELAY_MS);
PORTC |= _BV(PORTC7);
_delay_ms(BLINK_DELAY_MS);
PORTD &= ~_BV(PORTD5);
_delay_ms(BLINK_DELAY_MS);
PORTB &= ~_BV(PORTB0);
_delay_ms(BLINK_DELAY_MS);
PORTC &= ~_BV(PORTC7);
_delay_ms(BLINK_DELAY_MS);
}
}
.P2
Dengan menggunakan avr-gcc toolchain, saya dapat membuat program
sederhana yang dapat membuat lampu menyala dan mati tanpa Arduono IDE,
dan mempelajari lebih dalam hardware yang saya gunakan.
.SH
Referensi
.IP [0]
.I
Programming Arduino Uno in pure C
.R
https://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c
.IP [1]
.I
GNU GUIX
.R
https://guix.gnu.org
.IP [2]
.I
Skema Arduino Leonardo
.R
https://www.arduino.cc/en/uploads/Main/arduino-leonardo-schematic.pdf
.IP [3]
.I
Datasheet Atmega32u4
.R
https://ww1.microchip.com/downloads/en/devicedoc/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf
.html -
.html -
.html - Powered by
.html - troff(1)