Desain PCB dan Embedded System

Migrasi Elektro-elektron

Untuk mengetahui bagaimana elektron-elektron dapat bermigrasi dari satu tempat ke tempat lain maka kita harus melakukan percobaan sederhana berikut. Letakkan potongan-potongan kecil kertas aluminium foil di meja. Anda juga dapat menggunakan gabus penutup botol untuk menggantikan potongan-potongan aluminium foil tersebut. Gosoklah sebuah pena yang terbuat dari plastik dengan kain wol kering selama 15-20 detik. Peganglah pena plastik tersebut sejauh beberapa milimeter di atas potongan-potongan kertas. Potongan-potongan kertas itu akan melompat dan menempel di permukaan pena. Beberapa di antara potongan tersebut dapat melompat naik-turun hingga beberapa kali.

Read more ...

Internet of Things

Dengan semakin berkembangnya infrastruktur internet, maka kita menuju babak berikutnya, di mana bukan hanya smartphone atau komputer saja yang dapat terkoneksi dengan internet. Namun berbagai macam benda nyata akan terkoneksi dengan internet.

Read more ...

Blinking LED – Blinking LED tanpa delay( )

LED (Light Emitting Diode) adalah sebuah komponen diode yang dapat memancarkan cahaya. LED sudah umum dijumpai pada berbagai perangkat elektronik, mulai sebagai indikator power adaptor, hingga display papan iklan

TMN Studio – Electronics

Membuat LED blinking terlihat mudah di Arduino, kita menyalakan beberapa saat, kemudian mematikan, lalu terus siklus berulang-ulang. Akan tetapi, kondisi tunggu ini membuat Arduino berhenti mengeksekusi perintah lainnya. Jadi ketika fungsi delay( ) diekseskusi, maka terjadi kondisi tunggu ini sedangkan instruksi selanjutnya baru dapat diproses setelah interval delay terlampaui. Kita akan membuat blinking LED ketika itu instruksi lainnya sedang dieksekusi.

Berikut ini kode untuk blinking LED pada Arduino tanpa menggunakan fungsi delay():

// Variable for keeping the previous LED state
int previousLEDstate = LOW;
unsigned long lastTime = 0; // Last time the LED changed state
int interval = 200; // interval between the blinks in milliseconds
void setup() {
// Declare the pin for the LED as Output
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// Here we can write any code we want to execute continuously
// Read the current time
unsigned long currentTime = millis();
// Compare the current time with the last time
if (currentTime - lastTime >= interval) {
// First we set the previous time to the current time
lastTime = currentTime;
// Then we inverse the state of the LED
if (previousLEDstate == HIGH) {
digitalWrite(LED_BUILTIN, LOW);
previousLEDstate = LOW;
} else {
digitalWrite(LED_BUILTIN, HIGH);
previousLEDstate = HIGH;
}
}
}

Note:

Sebagian besar Arduino memiliki LED pada pin 13, namun sebagian tipe Arduino lain tidak selalu pada pin 13. Untuk lebih memastikan pin LED yang digunakan, maka kita menggunakan konstanta LED_BUILTIN. Hal ini telah didefinisikan dalam bahasa Arduino dan akan selalu setara dengan pin LED Arduino tipe apapun.

Perbedaan paling mencolok antara program blinking LED normal, dan program yang telah kita pelajari adalah pada program ini kita tidak menggunakan fungsi delay(). Fungsi delay() secara sederhana hanya menghentikan eksekusi kode hingga waktu yang diinginkan tercapai. Di sini kita menggunakan waktu internal Arduino; ketika waktu telah tercapai maka kita mengubah state.

Waktu internal sejak memulai Arduino dapat diakses dengan fungsi millis(), dimana akan mengembalikan waktu dalam milidetik - sejak program mulai dijalankan.

Pendekatan ini disebut juga non-blocking, karena tidak memblokir eksekusi kode. Sebaliknya, fungsi delay() sebagai blocking, digunakan untuk memblokir eksekusi kode hingga waktu tertentu telah tercapai.

Code Breaking

Kode mencatat jumlah waktu berlalu dan mengubah kondisi LED jika waktu telah tercapai. Kita membutuhkan sedikit variabel. Variabel previousLEDstate akan menyimpan kondisi LED terakhir. Variabel lastTime mencatat ketika kondisi LED berubah dari HIGH ke LOW atau LOW ke HIGH. Ketika kita mengubah pin menjadi HIGH, akan menghasilkan output 5V. Ketika pin dalam kondisi LOW, akan menghasilkan output 0V.

Variabel interval berguna untuk menyimpan interval dalam milidetik perubahan kondisi LED.

// Variable for keeping the previous LED state
int previousLEDstate = LOW;
unsigned long lastTime = 0; // Last time the LED changed state
int interval = 200; // interval between the blinks in milliseconds
Dalam fungsi setup(), kita mengatur pin LED sebagai output:
void setup() {
// Declare the pin for the LED as Output
pinMode(LED_BUILTIN, OUTPUT);
}

Bagian terpenting adalah fungsi loop(). Tahap pertama mencatat waktu sejak pertama kali Arduino mengeksekusi program. Fungsi millis() mengembalikan angka yang besar; variabel yang memperoleh data dari fungsi ini selalu dideklarasikan sebagai long atau unsigned long. Variabel unsigned hanya mengambil nilai positif saja dari nol hingga maksimum ruang yang dialokasikan. Misal, variabel dengan tipe normal long dapat memiliki rentang nilai dari - 2,147,483,648 hingga 2,147,483,648, sedangkan unsigned long memiliki rentang nilai dari 0 hingga 4,294,967,295.

unsigned long currentTime = millis();

Sekarang kita perlu melihat apakah waktu telah tercapai sejak waktu terakhir dimana kondisi LED berubah. Untuk hal ini, kita membandingkan waktu sebelumnya. Jika ada perbedaan antara waktu saat ini dan waktu terakhir lebih besar dari interval yang dideklarasikan, kita dapat mengeksekusi perubahan kondisi LED:

if (currentTime - lastTime >= interval)

Ketika interval telah terlampaui, kita akan mencatat waktu baru menjadi waktu sebelumnya. Dengan melakukan cara ini, kita me-reset waktu untuk dibandingkan kembali. Kemudian, kita mengecek kondisi LED sebelumnya dan mengatur LED ke kondisi sebaliknya. Jika LOW, maka kita mengatur LED mejadi kondisi HIGH dan jika HIGH, maka mengatur LED menjadi kondisi LOW. Variabel yang menyimpan kondisi LED sebelumnya, yakni previousLEDstate juga diatur dalam kondisi LED yang terkini:

lastTime = currentTime;
// Then we inverse the state of the LED
if (previousLEDstate == HIGH) {
digitalWrite(LED, LOW);
previousLEDstate = LOW;
} else {
digitalWrite(LED, HIGH);
previousLEDstate = HIGH;
}

Apa itu Arduino?

Saat itu tahun 2005 ketika beberapa orang dari Interactive Design Institute Ivrea, Italia ingin menciptakan sebuah board mikrokontroler sederhana bagi siswa mereka - sebuah board yang lebih modern, lebih murah, dan lebih mudah digunakan daripada desain yang tersedia pada saat itu. Dan mereka menamakannya Arduino, setelah bar lokal, yang dinamai King Arduino.

Read more ...

Pengantar Instrumentasi Biomedis

Dalam mendiagnosa penyakit pasien, dokter membutuhkan berbagai informasi. Informasi ini dapat berupa informasi verbal (keluhan pasien atau informasi yang didapat dari wawancara) atau informasi yang berupa sinyal tubuh atau kondisi fisik pasien. Informasi berupa sinyal tubuh biasanya disebut dengan sinyal biomedis. Sinyal biomedis ini terjadi akibat proses fisiologi yang terjadi dalam tubuh manusia.

Read more ...

General Purpose Register ATmega32

Mikrokontroler AVR memiliki 32 register bantu (R0-R31) dengan ukuran sebesar 8 bit (ATmega32) yang menempati alamat data $0000 - $001F. Register ini dapat digunakan langsung karena sudah tersedia fasilitas ALU (Aritmethic Logic Unit). Untuk R0 dan R1 berfungsi menampung hasil perhitungan aritmetika. Sedangkan R16-R31 untuk pengambilan data secara immediate.

Read more ...

Pemilihan Bahasa Pemrograman

Bahasa assembly sekarang mulai ditinggalkan dikarenakan programmer sekarang dituntut untuk membuat program yang semakin kompleks. Oleh karena itu, programmer mengembangkan bahasa tingkat tinggi semisal C, Pascal sampai bahasa yang berbasis objek seperti Java atau C++. Meskipun begitu, Assembly tetap memiliki keunggulan yang tidak dimiliki oleh bahasa pemrograman mana pun.

Read more ...

Our Divisions

 

Our Partners

TMN Studio

Who's Online

We have 52 guests and no members online