Pengenalan 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
- Open-source: Hardware dan software dapat dimodifikasi oleh siapa saja
- Cross-platform: IDE Arduino berjalan di Windows, Mac, dan Linux
- Pemrograman sederhana: Menggunakan bahasa berbasis C/C++ yang disederhanakan
- Ekosistem besar: Ribuan library dan shield (modul tambahan) tersedia
Spesifikasi Teknis
- Mikrokontroler: ATmega328P
- Tegangan Operasi: 5V
- Input/Output Digital: 14 (6 PWM)
- Input Analog: 6
- Flash Memory: 32 KB
- SRAM: 2 KB
- EEPROM: 1 KB
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: 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: Menyimpan muatan listrik sementara. Jenis utama:
- Keramik: Nilai kecil (pF-nF), non-polar
- Elektrolit: Nilai besar (μF-mF), polar
Komponen Aktif
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: 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
- Dua kabel (SDA dan SCL)
- Kecepatan: 100kHz-400kHz
- Library: Wire.h
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
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
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.