πŸ”§

πŸ”§ Tutorial Arduino Lengkap

Belajar mikrokontroler dan IoT dari dasar hingga mahir!

Pemula Menengah Lanjutan

Iklan 728x90 - Pasang Kode AdSense Anda Di Sini

πŸ“š Bagian 1: Pengenalan Arduino

Apa itu Arduino?

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

Mengapa Belajar Arduino?

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

Konfigurasi Arduino IDE

// Langkah-langkah setup: // 1. Buka Arduino IDE // 2. Pilih Board: Tools > Board > Arduino Uno // 3. Pilih Port: Tools > Port > COM3 (atau yang muncul) // 4. Untuk ESP32, tambah board manager: // File > Preferences > Additional Board Manager URLs: https://dl.espressif.com/dl/package_esp32_index.json // 5. Install board: Tools > Board Manager > ESP32 > Install

Struktur Program Arduino

// Setiap program Arduino punya 2 fungsi utama: void setup() { // Ini dijalankan sekali saat Arduino dinyalakan // Untuk setup: pinMode, Serial.begin, dll pinMode(LED_BUILTIN, OUTPUT); } void loop() { // Ini dijalankan berulang-ulang selamanya // Untuk logika utama program digitalWrite(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 INPUT pinMode(pin, mode); // mode: OUTPUT, INPUT, atau INPUT_PULLUP // Menulis nilai digital (HIGH = 5V, LOW = 0V) digitalWrite(pin, HIGH); digitalWrite(pin, LOW); // Membaca nilai digital int 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 PWM analogWrite(9, 128); // Setengah terang

Kontrol Alur

// If-Else if (sensorValue > 500) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } // For Loop for (int i = 0; i < 10; i++) { digitalWrite(LED, HIGH); delay(100); digitalWrite(LED, LOW); delay(100); } // While Loop while (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 mikrodetik delayMicroseconds(100); // Tunda 100 mikro detik // millis() - Waktu berjalan sejak Arduino dinyalakan unsigned long waktu = millis(); // Berguna untuk multi-tasking tanpa blocking // micros() - Waktu dalam mikro detik unsigned 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 Arduino void setup() { pinMode(LED_BUILTIN, OUTPUT); // Set pin 13 sebagai output } void loop() { digitalWrite(LED_BUILTIN, HIGH); // LED nyala (5V) delay(1000); // Tunda 1 detik digitalWrite(LED_BUILTIN, LOW); // LED mati (0V) delay(1000); // Tunda 1 detik }

LED External

⚠️ Perhatian: Selalu gunakan resistor ~220Ω-330Ω untuk LED agar tidak rusak!
// Rangkaian: LED + Resistor 220Ξ© ke Pin 9 // LED - ke GND const int ledPin = 9; // Pin untuk LED void setup() { pinMode(ledPin, OUTPUT); } void loop() { for (int i = 0; i <= 255; i += 5) { analogWrite(ledPin, i); // LED menyala perlahan delay(20); } for (int i = 255; i >= 0; i -= 5) { analogWrite(ledPin, i); // LED padam perlahan delay(20); } }

Tombol (Button)

// Membaca input dari tombol // Rangkaian: Tombol - Pull Down Resistor 10kΞ© ke GND const int buttonPin = 2; const int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); // Pin tombol sebagai input } void loop() { int buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); // Tombol ditekan = LED nyala } else { digitalWrite(ledPin, LOW); // Tombol tidak ditekan = LED mati } }

Tombol dengan Pull-Up Internal

// Menggunakan Pull-Up Resistor Internal Arduino // Rangkaian: Tombol antara Pin 2 dan GND (tanpa resistor luar) const int buttonPin = 2; const int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); // Aktifkan pull-up internal } void loop() { int buttonState = digitalRead(buttonPin); // Karena pull-up: tombol ditekan = LOW, tidak ditekan = HIGH if (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:

Membaca Potensiometer

// Potensiometer sebagai kontrol kecerahan LED // Rangkaian: VCC ke VCC, GND ke GND, Out ke A0 const int potPin = A0; const int ledPin = 9; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); // Mulai komunikasi serial } void loop() { int potValue = analogRead(potPin); // 0-1023 int 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 Out const int ldrPin = A0; const int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int ldrValue = analogRead(ldrPin); Serial.println(ldrValue); // Jika gelap (nilai kecil), nyalakan LED if (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 GND const int sensorPin = A0; void setup() { Serial.begin(9600); } void loop() { 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-255 int 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 10 const int trigPin = 9; const int echoPin = 10; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } long getDistance() { 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; } void loop() { 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); void setup() { Serial.begin(9600); dht.begin(); } void loop() { 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); }

Servo Motor

// Mengontrol Servo Motor // Install library: Servo // Pin Signal ke pin 9 #include Servo myservo; const int servoPin = 9; void setup() { myservo.attach(servoPin); } void loop() { // Putar 0-180 derajat for (int pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } for (int pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } }

Motor DC dengan L298N

// Mengontrol Motor DC dengan L298N const int in1 = 5; const int in2 = 6; const int ena = 9; void setup() { pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(ena, OUTPUT); } void maju(int speed) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(ena, speed); } void mundur(int speed) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(ena, speed); } void berhenti() { digitalWrite(in1, LOW); digitalWrite(in2, LOW); } void loop() { maju(200); // Maju dengan kecepatan 200 delay(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) void setup() { Serial.begin(9600); // Mulai komunikasi serial Serial.println("Arduino Ready!"); } void loop() { Serial.print("Waktu: "); Serial.print(millis()); Serial.println(" ms"); delay(1000); }

Menerima Data Serial

// Menerima perintah dari Serial Monitor char data; void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); } void loop() { 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, TX void setup() { Serial.begin(9600); // Hardware serial mySerial.begin(9600); // Software serial } void loop() { // Kirim dari Arduino ke modul if (Serial.available()) { mySerial.write(Serial.read()); } // Terima dari modul ke Arduino if (mySerial.available()) { Serial.write(mySerial.read()); } }

I2C Communication

// Komunikasi I2C antar Arduino // Pin SDA ke A4, SCL ke A5 // KODE UNTUK TRANSMITTER (Pengirim) #include void setup() { Wire.begin(); // Mulai sebagai device #1 } void loop() { Wire.beginTransmission(2); // Kirim ke device #2 Wire.write("Halo"); Wire.endTransmission(); delay(1000); } // KODE UNTUK RECEIVER (Penerima) #include void setup() { Wire.begin(2); // Mulai sebagai device #2 Wire.onReceive(receiveEvent); Serial.begin(9600); } void receiveEvent(int howMany) { while (Wire.available()) { char c = Wire.read(); Serial.print(c); } } void loop() { }

πŸ“Ή Video Tutorial Bagian 7:

🌐 Bagian 8: Proyek IoT dengan ESP32

πŸ’‘ Ide Proyek IoT

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 ESP32 void setup() { 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(); } void loop() { 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("

Kontrol LED ESP32

"
); client.println("ON"); client.println("OFF"); client.stop(); } }

Contoh: Monitoring Suhu Online

// ESP32 - Kirim data sensor ke thingspeak.com // Install library ThingSpeak #include #include "ThingSpeak.h" const char* ssid = "Nama_WiFi"; const char* password = "Password"; WiFiClient client; unsigned long channelNumber = 123456; // Your Channel const char* writeAPIKey = "API_KEY_ANDA"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); ThingSpeak.begin(client); } void loop() { float suhu = readTemperature(); // Fungsi baca sensor ThingSpeak.setField(1, suhu); int x = ThingSpeak.writeFields(channelNumber, writeAPIKey); if(x == 200) { Serial.println("Data terkirim!"); } else { Serial.println("Error upload!"); } delay(20000); // ThingSpeak min 15 detik }

Iklan 728x90 - Pasang Kode AdSense Anda Di Sini

Iklan 728x90 - Pasang Kode AdSense Anda Di Sini

Quiz Arduino