Arduino adalah platform mikrokontroler open-source yang mudah digunakan. Arduino terdiri dari hardware (board) dan software (IDE). Arduino memungkinkan siapa saja membuat proyek elektronik dengan mudah.
Sejarah Arduino
2005 - Arduino pertama kali dikembangkan di Italia
2008 - Arduino Uno dirilis (versi paling populer)
Sekarang - Menjadi standar industri untuk belajar elektronika
Mengapa Belajar Arduino?
π Open Source - Hardware dan software gratis
π Mudah Dipelajari - Cocok untuk pemula
π‘ Kreatif - Batas kreativitas sangat luas
π IoT Ready - Siap untuk proyek Internet of Things
πΌ Demand Tinggi - Di Industri 4.0
Jenis-Jenis Arduino
πArduino Uno
Paling populer, cocok untuk pemula
πArduino Nano
Kecil, untuk proyek terbatas ruang
πArduino Mega
Lebih banyak pin, untuk proyek besar
πArduino ESP32
WiFi & Bluetooth built-in
Spesifikasi Arduino Uno
Spesifikasi
Detail
Microcontroller
ATmega328P
Clock Speed
16 MHz
Digital I/O
14 pin (6 bisa PWM)
Analog Input
6 pin
Flash Memory
32 KB
SRAM
2 KB
Voltage
5V (atau 3.3V)
πΉ Video Tutorial Bagian 1:
βοΈ Bagian 2: Persiapan dan Instalasi
Alat dan Bahan yang Dibutuhkan
πKabel USB
Untuk upload program
π»Komputer/Laptop
Untuk coding
πBreadboard
Untuk merangkai komponen
πKabel Jumper
Menghubungkan komponen
Menginstal Arduino IDE
# Langkah-langkah instalasi Arduino IDE:# 1. Download Arduino IDE dari:https://www.arduino.cc/en/software# 2. Pilih versi untuk sistem operasi Anda# - Windows# - macOS# - Linux# 3. Install seperti aplikasi biasa# 4. Sambungkan Arduino ke komputer dengan kabel USB
// Setiap program Arduino punya 2 fungsi utama:voidsetup() {
// Ini dijalankan sekali saat Arduino dinyalakan// Untuk setup: pinMode, Serial.begin, dllpinMode(LED_BUILTIN, OUTPUT);
}
voidloop() {
// Ini dijalankan berulang-ulang selamanya// Untuk logika utama programdigitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
πΉ Video Tutorial Bagian 2:
π» Bagian 3: Dasar Pemrograman Arduino
Variabel dan Tipe Data
// Tipe data dasar Arduino:// Integer (bilangan bulat)int ledPin = 13;
int counter = 0;
// Long (bilangan bulat besar)long timer = 100000;
// Float (bilangan desimal)float suhu = 25.5;
float voltage = 3.3;
// Boolean (true/false)bool isLEDOn = false;
// Char (karakter)char letter = 'A';
// String (teks)
String message = "Hello Arduino!";
Fungsi Digital
// Fungsi untuk Pin Digital// Setup pin sebagai OUTPUT atau INPUTpinMode(pin, mode);
// mode: OUTPUT, INPUT, atau INPUT_PULLUP// Menulis nilai digital (HIGH = 5V, LOW = 0V)digitalWrite(pin, HIGH);
digitalWrite(pin, LOW);
// Membaca nilai digitalint nilai = digitalRead(pin);
// Hasil: HIGH (1) atau LOW (0)
Fungsi Analog
// Fungsi untuk Pin Analog// Membaca nilai analog (0-1023)int sensorValue = analogRead(A0);
// A0-A5 adalah pin analog Arduino Uno// Menulis nilai PWM (0-255)analogWrite(pin, nilai);
// Hanya bisa di pin yang ada tanda ~ (3,5,6,9,10,11)// Contoh: LED redup dengan PWManalogWrite(9, 128); // Setengah terang
Kontrol Alur
// If-Elseif (sensorValue > 500) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
// For Loopfor (int i = 0; i < 10; i++) {
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
// While Loopwhile (Serial.available() > 0) {
char data = Serial.read();
}
Fungsi Delay dan Timing
// Delay dalam milidetik (1 detik = 1000 ms)delay(1000); // Tunda 1 detik// Delay dalam mikrodetikdelayMicroseconds(100); // Tunda 100 mikro detik// millis() - Waktu berjalan sejak Arduino dinyalakanunsigned long waktu = millis();
// Berguna untuk multi-tasking tanpa blocking// micros() - Waktu dalam mikro detikunsigned long waktuMicro = micros();
πΉ Video Tutorial Bagian 3:
π‘ Bagian 4: Input dan Output Digital
LED Blink - Program Pertama
π Rangkaian: LED (-) ke GND, LED (+) ke Pin 13 (atau gunakan LED_BUILTIN)
// LED Blink - Kedip LED// Pin 13 sudah ada LED built-in di Arduinovoidsetup() {
pinMode(LED_BUILTIN, OUTPUT); // Set pin 13 sebagai output
}
voidloop() {
digitalWrite(LED_BUILTIN, HIGH); // LED nyala (5V)delay(1000); // Tunda 1 detikdigitalWrite(LED_BUILTIN, LOW); // LED mati (0V)delay(1000); // Tunda 1 detik
}
// Menggunakan Pull-Up Resistor Internal Arduino// Rangkaian: Tombol antara Pin 2 dan GND (tanpa resistor luar)const int buttonPin = 2;
const int ledPin = 13;
voidsetup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Aktifkan pull-up internal
}
voidloop() {
int buttonState = digitalRead(buttonPin);
// Karena pull-up: tombol ditekan = LOW, tidak ditekan = HIGHif (buttonState == LOW) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
πΉ Video Tutorial Bagian 4:
π Bagian 5: Input Analog
Apa itu Input Analog?
Input analog membaca nilai kontinyu (0-1023 untuk Arduino Uno) dari sensor yangθΎεΊ sinyal analog, seperti:
π‘οΈ Sensor Suhu - LM35, DHT11
βοΈ Sensor Cahaya - LDR (Light Dependent Resistor)
ποΈ Potensiometer - Volume control
π’ Sensor Suara - Microphone module
Membaca Potensiometer
// Potensiometer sebagai kontrol kecerahan LED// Rangkaian: VCC ke VCC, GND ke GND, Out ke A0const int potPin = A0;
const int ledPin = 9;
voidsetup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Mulai komunikasi serial
}
voidloop() {
int potValue = analogRead(potPin); // 0-1023int ledBrightness = map(potValue, 0, 1023, 0, 255);
analogWrite(ledPin, ledBrightness);
Serial.print("Pot: ");
Serial.println(potValue);
delay(10);
}
Sensor Cahaya (LDR)
// Menggunakan LDR untuk mendeteksi cahaya// Rangkaian: LDR - Pull down resistor 10k ke GND, VCC ke Outconst int ldrPin = A0;
const int ledPin = 13;
voidsetup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
voidloop() {
int ldrValue = analogRead(ldrPin);
Serial.println(ldrValue);
// Jika gelap (nilai kecil), nyalakan LEDif (ldrValue < 500) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(100);
}
Sensor Suhu LM35
// Membaca suhu dengan LM35// Rangkaian: VCC ke 5V, Out ke A0, GND ke GNDconst int sensorPin = A0;
voidsetup() {
Serial.begin(9600);
}
voidloop() {
int reading = analogRead(sensorPin);
// Konversi ke suhu (LM35: 10mV per derajat)float voltage = reading * 5.0 / 1024.0;
float suhu = voltage * 100;
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println(" C");
delay(1000);
}
Fungsi Map
// Fungsi map() untuk mengkonversi rentang nilai// Syntax: map(value, fromLow, fromHigh, toLow, toHigh)// Konversi 0-1023 ke 0-255int hasil = map(nilai, 0, 1023, 0, 255);
// Konversi ke derajat (0-1023 ke 0-100)int suhu = map(analogRead(A0), 0, 1023, 0, 100);
// Konversi inversi (besar menjadi kecil)int inverted = map(nilai, 0, 1023, 255, 0);
πΉ Video Tutorial Bagian 5:
π¬ Bagian 6: Sensor dan Modul
Sensor Ultrasonik HC-SR04
Sensor jarak mengukur jarak dengan gelombang ultrasonic.
// Sensor Ultrasonik HC-SR04// Pin: Trig ke 9, Echo ke 10const int trigPin = 9;
const int echoPin = 10;
voidsetup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
longgetDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
return distance;
}
voidloop() {
long distance = getDistance();
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
Sensor Suhu dan Kelembaban DHT11
// DHT11 - Sensor Suhu dan Kelembaban// Install library: Sketch > Include Library > DHT Sensor Library// Pin Data ke pin 2#include #define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
voidsetup() {
Serial.begin(9600);
dht.begin();
}
voidloop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Kelembaban: ");
Serial.print(h);
Serial.println(" %");
Serial.print("Suhu: ");
Serial.print(t);
Serial.println(" C");
delay(2000);
}
// Mengontrol Motor DC dengan L298Nconst int in1 = 5;
const int in2 = 6;
const int ena = 9;
voidsetup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(ena, OUTPUT);
}
voidmaju(int speed) {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, speed);
}
voidmundur(int speed) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, speed);
}
voidberhenti() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
voidloop() {
maju(200); // Maju dengan kecepatan 200delay(2000);
berhenti();
delay(1000);
mundur(200);
delay(2000);
}
πΉ Video Tutorial Bagian 6:
π‘ Bagian 7: Komunikasi Seri
Serial Monitor
// Komunikasi Serial Arduino ke Komputer// Buka Tools > Serial Monitor (9600 baud)voidsetup() {
Serial.begin(9600); // Mulai komunikasi serialSerial.println("Arduino Ready!");
}
voidloop() {
Serial.print("Waktu: ");
Serial.print(millis());
Serial.println(" ms");
delay(1000);
}
Menerima Data Serial
// Menerima perintah dari Serial Monitorchar data;
voidsetup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
voidloop() {
if (Serial.available() > 0) {
data = Serial.read();
if (data == '1') {
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED Menyala");
}
else if (data == '0') {
digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED Mati");
}
}
}
Software Serial
// Menggunakan SoftwareSerial untuk komunikasi tambahan// Berguna untuk Bluetooth atau modul serial lain#include
SoftwareSerial mySerial(2, 3); // RX, TXvoidsetup() {
Serial.begin(9600); // Hardware serial
mySerial.begin(9600); // Software serial
}
voidloop() {
// Kirim dari Arduino ke modulif (Serial.available()) {
mySerial.write(Serial.read());
}
// Terima dari modul ke Arduinoif (mySerial.available()) {
Serial.write(mySerial.read());
}
}
I2C Communication
// Komunikasi I2C antar Arduino// Pin SDA ke A4, SCL ke A5// KODE UNTUK TRANSMITTER (Pengirim)#include voidsetup() {
Wire.begin(); // Mulai sebagai device #1
}
voidloop() {
Wire.beginTransmission(2); // Kirim ke device #2
Wire.write("Halo");
Wire.endTransmission();
delay(1000);
}
// KODE UNTUK RECEIVER (Penerima)#include voidsetup() {
Wire.begin(2); // Mulai sebagai device #2
Wire.onReceive(receiveEvent);
Serial.begin(9600);
}
voidreceiveEvent(int howMany) {
while (Wire.available()) {
char c = Wire.read();
Serial.print(c);
}
}
voidloop() {
}
πΉ Video Tutorial Bagian 7:
π Bagian 8: Proyek IoT dengan ESP32
π‘ Ide Proyek IoT
Smart Home - Kontrol lampu/alat dari HP
Weather Station - Monitoring cuaca online
Smart Garden - Penyiram otomatis
Security System - Alarm keamanan
Tracking GPS - Pelacakan lokasi
Contoh: Kontrol LED via Web (ESP32)
// ESP32 - Kontrol LED via Web Server// Install library ESP32 via Board Manager#include const char* ssid = "Nama_WiFi_Anda";
const char* password = "Password_WiFi";
WiFiServer server(80);
int ledPin = 2; // LED built-in ESP32voidsetup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
WiFi.begin(ssid, password);
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Terhubung!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
server.begin();
}
voidloop() {
WiFiClient client = server.available();
if (client) {
String request = client.readStringUntil('\r');
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
}
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("");
client.println("