Belajar Arduino Uno

Panduan lengkap dari dasar hingga proyek

Pengenalan Arduino Uno

Arduino Uno

Arduino Uno adalah papan mikrokontroler berbasis ATmega328. Arduino Uno memiliki 14 pin input/output digital (6 di antaranya dapat digunakan sebagai output PWM), 6 input analog, osilator kristal 16 MHz, koneksi USB, jack power, header ICSP, dan tombol reset.

Sejarah Arduino

Arduino dikembangkan pada tahun 2005 di Ivrea, Italia oleh Massimo Banzi dan timnya sebagai alat yang mudah digunakan untuk prototiping elektronik bagi siswa desain yang tidak memiliki latar belakang elektronik dan pemrograman.

Konsep Dasar

Spesifikasi Teknis

Perbandingan Model Arduino

Model Mikrokontroler Digital I/O Analog Input
Uno R3 ATmega328P 14 (6 PWM) 6
Mega 2560 ATmega2560 54 (15 PWM) 16
Nano ATmega328P 22 (6 PWM) 8

Komponen Elektronika

Komponen Pasif

Resistor

Resistor: Komponen yang membatasi aliran arus listrik. Nilainya ditunjukkan oleh kode warna:

  • Gelang 1-2: Angka signifikan
  • Gelang 3: Pengali
  • Gelang 4: Toleransi

Contoh: Coklat-Hitam-Merah-Emas = 1 0 × 100 Ω ±5% = 1000 Ω (1kΩ)

Kapasitor

Kapasitor: Menyimpan muatan listrik sementara. Jenis utama:

  • Keramik: Nilai kecil (pF-nF), non-polar
  • Elektrolit: Nilai besar (μF-mF), polar

Komponen Aktif

LED

LED (Light Emitting Diode): Dioda yang memancarkan cahaya ketika dialiri arus.

  • Polaritas penting (anoda dan katoda)
  • Butuh resistor pembatas arus (biasanya 220Ω-1kΩ)
  • Tegangan maju (forward voltage) 1.8V-3.3V tergantung warna
Transistor

Transistor: Komponen semikonduktor untuk amplifikasi atau switching.

  • BJT (NPN/PNP): 2N2222, BC547, 2N3904
  • MOSFET: IRF540, IRLB8721

Pemrograman Arduino

Struktur Dasar Program

// Deklarasi variabel global
const int pinLED = 13;
int counter = 0;

// Setup - dijalankan sekali saat startup
void setup() {
  Serial.begin(9600);         // Inisialisasi serial
  pinMode(pinLED, OUTPUT);    // Set pin sebagai output
}

// Loop - dijalankan berulang
void loop() {
  digitalWrite(pinLED, HIGH); // Nyalakan LED
  delay(500);                 // Tunggu 500ms
  digitalWrite(pinLED, LOW);  // Matikan LED
  delay(500);                 // Tunggu 500ms
  
  counter++;                  // Increment counter
  Serial.print("Counter: ");  // Print ke serial
  Serial.println(counter);
}

Tipe Data dan Variabel

Tipe Data Ukuran Range
boolean 1 byte true/false
int 2 byte -32,768 to 32,767
float 4 byte ±1.2E-38 to ±3.4E+38

Struktur Kontrol

Percabangan if-else

int sensorValue = analogRead(A0);

if (sensorValue > 500) {
  digitalWrite(LED_PIN, HIGH);
} 
else if (sensorValue > 300) {
  digitalWrite(LED_PIN, LOW);
}
else {
  // Kode lainnya
}

Perulangan for

// Kedipkan LED 5 kali
for (int i = 0; i < 5; i++) {
  digitalWrite(LED_PIN, HIGH);
  delay(200);
  digitalWrite(LED_PIN, LOW);
  delay(200);
}

Komunikasi Arduino

Serial Communication

void setup() {
  Serial.begin(9600); // Mulai serial dengan baud rate 9600
}

void loop() {
  Serial.println("Hello, World!"); // Kirim data ke serial
  
  if (Serial.available() > 0) {
    char data = Serial.read();  // Baca data masuk
    Serial.print("Received: ");
    Serial.println(data);
  }
}

Protokol Komunikasi

I2C Communication

I2C

  • Dua kabel (SDA dan SCL)
  • Kecepatan: 100kHz-400kHz
  • Library: Wire.h
SPI Communication

SPI

  • Empat kabel (MOSI, MISO, SCK, SS)
  • Kecepatan tinggi
  • Library: SPI.h

Proyek Arduino

1. Lampu Lalu Lintas Sederhana

Komponen:

  • Arduino Uno
  • LED merah, kuning, hijau
  • Resistor 220Ω × 3
Rangkaian Lampu Lalu Lintas

Kode Program:

#define RED 8
#define YELLOW 9
#define GREEN 10

void setup() {
  pinMode(RED, OUTPUT);
  pinMode(YELLOW, OUTPUT);
  pinMode(GREEN, OUTPUT);
}

void loop() {
  digitalWrite(RED, HIGH);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, LOW);
  delay(5000);
  
  digitalWrite(RED, LOW);
  digitalWrite(YELLOW, HIGH);
  digitalWrite(GREEN, LOW);
  delay(2000);
  
  digitalWrite(RED, LOW);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, HIGH);
  delay(5000);
}

2. Monitoring Suhu dan Kelembaban

Komponen:

  • Sensor DHT11
  • LCD 16x2 dengan I2C
  • Arduino Uno
Rangkaian Monitoring Suhu

Kode Program:

#include 
#include 

DHT dht(2, DHT11);
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init();
  lcd.backlight();
  dht.begin();
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
  lcd.setCursor(0,0);
  lcd.print("Humidity: ");
  lcd.print(h);
  lcd.print("%");
  
  lcd.setCursor(0,1);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print("C");
  
  delay(2000);
}

Catatan: Perlu install library DHT dan LiquidCrystal_I2C melalui Library Manager.

Troubleshooting

1. Arduino tidak terdeteksi di komputer

  • Cek kabel USB (coba dengan kabel lain)
  • Install driver CH340/CH341 untuk Arduino clone
  • Cek port COM di Device Manager

2. Error kompilasi di Arduino IDE

  • Pastikan library yang diperlukan sudah terinstall
  • Cek sintaks program (kurang titik koma, dll)
  • Pilih board dan port yang benar

Tips dan Trik

Gunakan Komentar

Selalu beri komentar pada kode untuk menjelaskan fungsinya.

Hindari delay() Panjang

Gunakan millis() untuk proyek kompleks agar tetap responsif.

Serial Monitor

Alat debugging terbaik untuk melihat nilai variabel.