0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan26 halaman

Job 11 - 20 Arduino IDE

Dokumen ini mencakup beberapa jobsheet yang mengajarkan siswa tentang kontrol motor DC menggunakan driver L298N, pembacaan sensor PIR, interaksi dengan keypad matriks 4x4, dan penggunaan sensor cahaya LDR. Setiap jobsheet mencakup tujuan pembelajaran, teori dasar, alat dan bahan, langkah kerja, serta kode program yang diperlukan. Siswa diharapkan dapat memahami prinsip kerja perangkat dan mengaplikasikannya dalam proyek praktis.

Diunggah oleh

Afrinaldi Afrinaldi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan26 halaman

Job 11 - 20 Arduino IDE

Dokumen ini mencakup beberapa jobsheet yang mengajarkan siswa tentang kontrol motor DC menggunakan driver L298N, pembacaan sensor PIR, interaksi dengan keypad matriks 4x4, dan penggunaan sensor cahaya LDR. Setiap jobsheet mencakup tujuan pembelajaran, teori dasar, alat dan bahan, langkah kerja, serta kode program yang diperlukan. Siswa diharapkan dapat memahami prinsip kerja perangkat dan mengaplikasikannya dalam proyek praktis.

Diunggah oleh

Afrinaldi Afrinaldi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 26

Jobsheet 11: Kontrol Motor DC dengan Driver Motor L298N

Tujuan Pembelajaran:

 Siswa memahami prinsip kerja motor DC.


 Siswa mampu menggunakan driver motor L298N untuk mengontrol arah dan kecepatan
motor DC.
 Siswa mampu mengaplikasikan PWM untuk kontrol kecepatan motor.

Teori Dasar: Motor DC adalah aktuator yang mengubah energi listrik menjadi gerak putar.
Untuk mengontrol motor DC dengan Arduino, kita memerlukan driver motor seperti L298N
karena Arduino tidak dapat menyediakan arus yang cukup. L298N adalah H-bridge driver yang
memungkinkan kontrol arah dan kecepatan motor.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Motor DC kecil (misal: motor Tamiya)
 Modul Driver Motor L298N
 Power Supply Eksternal 9V atau 12V (baterai atau adaptor)
 Kabel Jumper Male-Male dan Male-Female
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Hubungkan pin GND L298N ke GND Arduino dan GND power supply eksternal
(common ground).
2. Hubungkan pin 5V L298N (jika ada, untuk logika internal) ke 5V Arduino.
3. Hubungkan pin 12V (atau VCC motor) L298N ke terminal positif power supply
eksternal.
4. Hubungkan terminal motor DC ke pin OUT1 dan OUT2 pada L298N.
5. Hubungkan pin kontrol L298N ke Arduino:
o IN1 ke pin digital 7 Arduino
o IN2 ke pin digital 6 Arduino
o ENA (Enable A) ke pin digital 9 Arduino (pin PWM untuk kecepatan)
6. Pastikan jumper pada ENA/ENB pada L298N terpasang jika tidak menggunakan kontrol
kecepatan (hanya arah). Jika ingin kontrol kecepatan, lepas jumper dan hubungkan ke pin
PWM.
7. Salin dan unggah kode program di bawah ini.
8. Amati pergerakan motor DC.

Kode Program:

C++
const int motorPin1 = 7; // IN1 pada L298N
const int motorPin2 = 6; // IN2 pada L298N
const int enablePin = 9; // ENA pada L298N (harus pin PWM)

void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(enablePin, OUTPUT); // Mengatur pin enable sebagai output
Serial.begin(9600);
}

void loop() {
// Putar motor searah jarum jam dengan kecepatan penuh
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
analogWrite(enablePin, 255); // Kecepatan penuh (0-255)
Serial.println("Motor Maju (Kecepatan Penuh)");
delay(3000);

// Berhenti
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(enablePin, 0); // Kecepatan 0
Serial.println("Motor Berhenti");
delay(2000);

// Putar motor berlawanan arah jarum jam dengan kecepatan setengah


digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
analogWrite(enablePin, 127); // Kecepatan setengah
Serial.println("Motor Mundur (Kecepatan Setengah)");
delay(3000);

// Berhenti
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(enablePin, 0);
Serial.println("Motor Berhenti");
delay(2000);
}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
L298N(Driver Motor L298N)
MotorDC(Motor DC)
PowerSupply(Power Supply Eksternal)

PowerSupply -- "+V" --> L298N_VCC_Motor


PowerSupply -- "GND" --> L298N_GND
Arduino -- "GND" --> L298N_GND
Arduino -- "5V" --> L298N_5V_Logic

Arduino -- "Pin 7" --> L298N_IN1


Arduino -- "Pin 6" --> L298N_IN2
Arduino -- "Pin 9 (PWM)" --> L298N_ENA

L298N -- "OUT1" --> MotorDC_Terminal1


L298N -- "OUT2" --> MotorDC_Terminal2

Catatan: Tekankan pentingnya common ground dan penggunaan power supply eksternal untuk
motor.

Tugas/Evaluasi:

1. Jelaskan mengapa driver motor diperlukan untuk mengontrol motor DC dengan Arduino.
2. Modifikasi program agar kecepatan motor diatur oleh potensiometer.
3. Tambahkan dua push button: satu untuk memutar motor searah jarum jam, satu lagi untuk
berlawanan arah.
Jobsheet 12: Pembacaan Sensor PIR (Gerak) HC-SR501

Tujuan Pembelajaran:

 Siswa memahami prinsip kerja sensor gerak pasif inframerah (PIR).


 Siswa mampu membaca output digital dari sensor PIR.
 Siswa mampu mengaplikasikan sensor PIR untuk deteksi gerak.

Teori Dasar: Sensor PIR (Passive Infrared) mendeteksi perubahan radiasi inframerah di
lingkungannya, yang umumnya disebabkan oleh pergerakan objek hangat (seperti manusia atau
hewan). Sensor ini mengeluarkan sinyal HIGH ketika mendeteksi gerak dan LOW ketika tidak
ada gerak.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Sensor PIR HC-SR501
 LED (1 buah)
 Resistor 220Ω (1 buah)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Pasang sensor PIR di breadboard.


2. Hubungkan pin VCC sensor PIR ke 5V Arduino.
3. Hubungkan pin GND sensor PIR ke GND Arduino.
4. Hubungkan pin OUT (Sinyal) sensor PIR ke pin digital 2 Arduino.
5. Rangkai LED dengan resistor ke pin digital 13 Arduino (seperti Jobsheet 1).
6. Salin dan unggah kode program di bawah ini.
7. Amati LED dan Serial Monitor saat ada atau tidak ada gerakan di depan sensor.

Kode Program:

C++
const int pirPin = 2; // Pin untuk sensor PIR
const int ledPin = 13; // Pin untuk LED

int pirState = LOW; // Variabel untuk menyimpan status PIR


int val = 0; // Variabel untuk membaca status pin

void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
val = digitalRead(pirPin); // Membaca status pin PIR

if (val == HIGH) { // Jika ada gerakan


digitalWrite(ledPin, HIGH); // Nyalakan LED
if (pirState == LOW) {
Serial.println("Gerakan Terdeteksi!");
pirState = HIGH;
}
} else { // Jika tidak ada gerakan
digitalWrite(ledPin, LOW); // Matikan LED
if (pirState == HIGH) {
Serial.println("Gerakan Berhenti.");
pirState = LOW;
}
}
}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
PIR(Sensor PIR HC-SR501)
LED(LED)
Resistor_LED[Resistor 220 Ohm]

Arduino -- "5V" --> PIR_VCC


Arduino -- "GND" --> PIR_GND
Arduino -- "Pin 2" --> PIR_OUT

Arduino -- "Pin 13" --> Resistor_LED


Resistor_LED -- "+" --> LED
LED -- "-" --> Arduino -- "GND" --> GND_Breadboard

Catatan: Jelaskan tentang potensiometer sensitivitas dan waktu tunda pada sensor PIR itu
sendiri.

Tugas/Evaluasi:

1. Jelaskan perbedaan antara sensor aktif dan pasif. Termasuk kategori mana sensor PIR?
2. Modifikasi program agar LED menyala selama 5 detik setelah deteksi gerak terakhir, lalu
mati.
3. Gabungkan dengan buzzer (Jobsheet 16) untuk membunyikan alarm saat gerak terdeteksi.
Jobsheet 13: Interaksi dengan Keypad Matriks 4x4

Tujuan Pembelajaran:

 Siswa memahami prinsip kerja keypad matriks.


 Siswa mampu membaca input dari keypad.
 Siswa mampu menggunakan library Keypad.h.

Teori Dasar: Keypad matriks adalah susunan tombol yang diatur dalam baris dan kolom.
Dengan memindai baris dan kolom, Arduino dapat mendeteksi tombol mana yang ditekan,
menghemat jumlah pin yang digunakan.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Keypad Matriks 4x4
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal (pastikan library "Keypad" terinstal)

Langkah Kerja:

1. Hubungkan pin-pin keypad ke Arduino. Keypad 4x4 memiliki 8 pin (4 baris, 4 kolom).
o Pin Kolom (C1-C4) ke pin digital 9,8,7,6 Arduino.
o Pin Baris (R1-R4) ke pin digital 5,4,3,2 Arduino.
2. Pastikan library "Keypad" sudah terinstal di Arduino IDE (Tools > Manage Libraries...).
3. Salin dan unggah kode program di bawah ini.
4. Buka Serial Monitor dan tekan tombol-tombol pada keypad untuk melihat output.

Kode Program:

C++
#include <Keypad.h> // Memasukkan library Keypad

const byte ROWS = 4; // Empat baris


const byte COLS = 4; // Empat kolom

// Mendefinisikan layout tombol pada keypad


char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

// Mendefinisikan pin-pin Arduino yang terhubung ke baris dan kolom


byte rowPins[ROWS] = {5, 4, 3, 2}; // Connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 8, 7, 6}; // Connect to the column pinouts of the
keypad

// Membuat objek keypad


Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS,
COLS);

void setup() {
Serial.begin(9600);
Serial.println("Tekan tombol pada keypad...");
}

void loop() {
char customKey = customKeypad.getKey(); // Membaca tombol yang ditekan

if (customKey) { // Jika ada tombol yang ditekan


Serial.print("Tombol Ditekan: ");
Serial.println(customKey);
}
}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
Keypad(Keypad 4x4)

Arduino -- "Pin 9" --> Keypad_C1


Arduino -- "Pin 8" --> Keypad_C2
Arduino -- "Pin 7" --> Keypad_C3
Arduino -- "Pin 6" --> Keypad_C4

Arduino -- "Pin 5" --> Keypad_R1


Arduino -- "Pin 4" --> Keypad_R2
Arduino -- "Pin 3" --> Keypad_R3
Arduino -- "Pin 2" --> Keypad_R4

Catatan: Jelaskan konsep pemindaian matriks (scanning) dan bagaimana library Keypad
menyederhanakannya.

Tugas/Evaluasi:

1. Jelaskan bagaimana keypad matriks dapat menghemat penggunaan pin mikrokontroler.


2. Modifikasi program agar LED menyala jika tombol '1' ditekan, dan mati jika tombol '0'
ditekan.
3. Buat program sederhana "kunci pintu" menggunakan keypad. Pengguna harus
memasukkan kode PIN yang benar (misal: "1234") untuk menyalakan LED (simulasi
pintu terbuka).
Jobsheet 14: Penggunaan Sensor Cahaya LDR (Light Dependent Resistor)

Tujuan Pembelajaran:

 Siswa memahami prinsip kerja LDR.


 Siswa mampu membaca nilai analog dari LDR.
 Siswa mampu mengaplikasikan LDR untuk kontrol berbasis cahaya.

Teori Dasar: LDR (Light Dependent Resistor) adalah jenis resistor yang nilai resistansinya
berubah tergantung pada intensitas cahaya yang mengenainya. Semakin terang cahaya, semakin
kecil resistansinya, dan sebaliknya. LDR biasanya digunakan dalam rangkaian pembagi tegangan
untuk menghasilkan output analog.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 LDR (1 buah)
 Resistor 10KΩ (1 buah)
 LED (1 buah)
 Resistor 220Ω (1 buah)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Pasang LDR dan resistor 10KΩ di breadboard untuk membentuk rangkaian pembagi
tegangan.
o Satu kaki LDR terhubung ke 5V Arduino.
o Kaki LDR yang lain terhubung ke satu kaki resistor 10KΩ.
o Kaki resistor 10KΩ yang lain terhubung ke GND Arduino.
o Titik tengah antara LDR dan resistor 10KΩ dihubungkan ke pin analog A0
Arduino.
2. Rangkai LED dengan resistor 220Ω ke pin digital 13 Arduino.
3. Salin dan unggah kode program di bawah ini.
4. Buka Serial Monitor dan amati nilai LDR. Coba tutupi LDR dengan tangan atau sorot
dengan senter untuk melihat perubahan nilai.

Kode Program:

C++
const int ldrPin = A0; // Pin analog untuk LDR
const int ledPin = 13; // Pin untuk LED

void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
int ldrValue = analogRead(ldrPin); // Membaca nilai dari LDR (0-1023)

Serial.print("Nilai LDR: ");


Serial.println(ldrValue);

// Jika nilai LDR di bawah ambang batas (gelap), nyalakan LED


// Nilai ambang batas bisa disesuaikan, tergantung kondisi lingkungan
if (ldrValue < 400) { // Angka 400 adalah contoh, sesuaikan
digitalWrite(ledPin, HIGH); // Nyalakan LED
Serial.println("Gelap, LED ON");
} else {
digitalWrite(ledPin, LOW); // Matikan LED
Serial.println("Terang, LED OFF");
}
delay(100); // Pembacaan setiap 100 milidetik
}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
LDR(LDR)
Resistor_10K[Resistor 10K Ohm]
LED(LED)
Resistor_LED[Resistor 220 Ohm]

Arduino -- "5V" --> LDR_Terminal1


LDR_Terminal2 -- "A0" --> Arduino
LDR_Terminal2 -- "Kaki1" --> Resistor_10K
Resistor_10K -- "Kaki2" --> Arduino -- "GND" --> GND_Breadboard

Arduino -- "Pin 13" --> Resistor_LED


Resistor_LED -- "+" --> LED
LED -- "-" --> Arduino -- "GND" --> GND_Breadboard

Catatan: Jelaskan konsep pembagi tegangan dan bagaimana perubahan resistansi LDR
memengaruhi tegangan di pin A0.

Tugas/Evaluasi:

1. Jelaskan bagaimana LDR bekerja dan mengapa ia digunakan dalam rangkaian pembagi
tegangan.
2. Modifikasi program agar kecerahan LED (menggunakan analogWrite pada pin PWM)
berbanding lurus dengan intensitas cahaya.
3. Buat program untuk "lampu jalan otomatis" yang menyala saat gelap dan mati saat
terang, dengan histeresis (misal, nyala di bawah 300, mati di atas 500).
Jobsheet 15: Komunikasi Serial Antar Arduino (atau dengan PC)

Tujuan Pembelajaran:

 Siswa memahami konsep komunikasi serial.


 Siswa mampu mengirim dan menerima data melalui Serial Monitor.
 Siswa mampu mengirim data dari satu Arduino ke Arduino lain (opsional, jika ada 2
Arduino).

Teori Dasar: Komunikasi serial adalah metode pengiriman data bit demi bit secara berurutan
melalui satu jalur. Arduino menggunakan komunikasi serial untuk berkomunikasi dengan
komputer (melalui USB) atau dengan perangkat lain. Fungsi Serial.begin(),
Serial.print(), Serial.println(), Serial.read(), dan Serial.available() adalah
kunci.

Alat dan Bahan:

 Papan Arduino UNO R3 (1 atau 2 buah jika ingin komunikasi antar Arduino)
 Kabel USB Type B
 LED (1 buah)
 Resistor 220Ω (1 buah)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja (Arduino ke PC):

1. Rangkai LED dengan resistor ke pin digital 13 Arduino.


2. Salin dan unggah kode program di bawah ini ke Arduino.
3. Buka Serial Monitor. Ketik 'H' atau 'L' (huruf besar) di kolom input Serial Monitor dan
tekan Enter atau tombol Send. Amati LED dan output di Serial Monitor.

Kode Program (Arduino ke PC):

C++
const int ledPin = 13; // Pin untuk LED

void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Inisialisasi komunikasi serial pada baud rate 9600
Serial.println("Kirim 'H' untuk ON, 'L' untuk OFF");
}

void loop() {
if (Serial.available() > 0) { // Cek apakah ada data yang masuk di Serial
char incomingByte = Serial.read(); // Baca byte yang masuk

Serial.print("Data Diterima: ");


Serial.println(incomingByte);
if (incomingByte == 'H') {
digitalWrite(ledPin, HIGH);
Serial.println("LED ON");
} else if (incomingByte == 'L') {
digitalWrite(ledPin, LOW);
Serial.println("LED OFF");
} else {
Serial.println("Perintah tidak dikenal.");
}
}
}

Gambar Rangkaian (Arduino ke PC):

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
LED(LED)
Resistor_LED[Resistor 220 Ohm]

Arduino -- "Pin 13" --> Resistor_LED


Resistor_LED -- "+" --> LED
LED -- "-" --> Arduino -- "GND" --> GND_Breadboard

Catatan: Jelaskan pentingnya baud rate yang sama antara pengirim dan penerima.

Tugas/Evaluasi:

1. Jelaskan fungsi Serial.available() dan Serial.read().


2. Modifikasi program agar Arduino mengirimkan nilai sensor suhu LM35 (Jobsheet 5) ke
Serial Monitor setiap 2 detik.
3. (Tantangan, jika ada 2 Arduino) Buat program di mana Arduino 1 membaca nilai
potensiometer dan mengirimkannya secara serial ke Arduino 2, yang kemudian
menggunakan nilai tersebut untuk mengontrol kecerahan LED.
Jobsheet 16: Penggunaan Buzzer/Piezo untuk Notifikasi Suara

Tujuan Pembelajaran:

 Siswa memahami prinsip kerja buzzer/piezo.


 Siswa mampu menghasilkan suara (nada) menggunakan buzzer.
 Siswa mampu menggunakan fungsi tone() dan noTone().

Teori Dasar: Buzzer piezoelektrik adalah komponen yang menghasilkan suara ketika diberi
sinyal listrik. Dengan Arduino, kita bisa menghasilkan nada-nada tertentu dengan fungsi tone()
yang menghasilkan gelombang kotak pada frekuensi tertentu.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Buzzer Piezo (aktif atau pasif)
 Resistor 220Ω (opsional, untuk buzzer pasif)
 Push Button (1 buah)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Hubungkan satu kaki buzzer ke pin digital 8 Arduino.


2. Hubungkan kaki buzzer yang lain ke GND Arduino. (Jika buzzer pasif, tambahkan
resistor 220Ω secara seri).
3. Rangkai push button ke pin digital 2 dengan konfigurasi INPUT_PULLUP (seperti Jobsheet
2).
4. Salin dan unggah kode program di bawah ini.
5. Tekan button untuk membunyikan buzzer.

Kode Program:

C++
const int buzzerPin = 8; // Pin untuk buzzer
const int buttonPin = 2; // Pin untuk button

void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) { // Jika button ditekan
tone(buzzerPin, 1000); // Bunyikan nada 1000 Hz
Serial.println("Buzzer ON");
} else {
noTone(buzzerPin); // Matikan nada
Serial.println("Buzzer OFF");
}
delay(10); // Sedikit delay untuk stabilitas
}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
Buzzer(Buzzer Piezo)
PushButton(Push Button)

Arduino -- "Pin 8" --> Buzzer_Pos


Buzzer_Neg -- "GND" --> Arduino

Arduino -- "Pin 2" --> PushButton_Pin


PushButton_Other -- "GND" --> Arduino

Catatan: Jelaskan perbedaan buzzer aktif (memiliki osilator internal) dan pasif (membutuhkan
sinyal eksternal untuk nada).

Tugas/Evaluasi:

1. Jelaskan perbedaan antara buzzer aktif dan pasif.


2. Modifikasi program untuk memainkan melodi sederhana (misal: nada DO-RE-MI) saat
button ditekan.
3. Gabungkan dengan sensor jarak HC-SR04 (Jobsheet 8) untuk membunyikan alarm yang
semakin cepat jika objek semakin dekat.
Jobsheet 17: Pengukuran Arus dengan Sensor Arus ACS712

Tujuan Pembelajaran:

 Siswa memahami prinsip kerja sensor arus Hall Effect.


 Siswa mampu membaca nilai analog dari sensor arus ACS712.
 Siswa mampu mengkonversi nilai analog menjadi nilai arus (Ampere).

Teori Dasar: Sensor arus ACS712 menggunakan prinsip Hall Effect untuk mengukur arus DC
atau AC. Sensor ini menghasilkan tegangan output analog yang proporsional dengan arus yang
mengalir melaluinya. Ada beberapa varian (misal: 5A,20A,30A) dengan sensitivitas yang
berbeda.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Sensor Arus ACS712 (misal: 5A atau 20A)
 Beban DC (misal: motor DC kecil, LED dengan resistor, atau lampu kecil)
 Power Supply Eksternal untuk beban (misal: baterai 9V)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Hubungkan pin VCC sensor ACS712 ke 5V Arduino.


2. Hubungkan pin GND sensor ACS712 ke GND Arduino.
3. Hubungkan pin OUT (Sinyal) sensor ACS712 ke pin analog A0 Arduino.
4. Hubungkan beban DC secara seri dengan sensor ACS712. Arus yang akan diukur harus
melewati terminal IP+ dan IP- pada sensor.
o Contoh: Positif power supply eksternal ke IP+ sensor. IP- sensor ke positif
beban. Negatif beban ke negatif power supply eksternal.
5. Salin dan unggah kode program di bawah ini.
6. Buka Serial Monitor. Nyalakan beban dan amati pembacaan arus.

Kode Program:

C++
const int currentSensorPin = A0; // Pin analog untuk sensor arus ACS712
const float voltagePerAmp = 0.185; // Sensitivitas ACS712-05B (185mV/A atau
0.185V/A)
// Sesuaikan dengan varian sensor Anda
(misal: 0.100V/A untuk 20A)
const int ACSoffset = 512; // Nilai ADC saat tidak ada arus (biasanya VCC/2,
atau 5V/2 = 2.5V -> 512 ADC)
void setup() {
Serial.begin(9600);
Serial.println("Pengukuran Arus ACS712");
// Kalibrasi offset (opsional, lebih akurat jika diukur langsung saat tidak
ada arus)
// int sum = 0;
// for(int i=0; i<1000; i++){
// sum += analogRead(currentSensorPin);
// delay(1);
// }
// ACSoffset = sum / 1000;
// Serial.print("Offset Kalibrasi: ");
// Serial.println(ACSoffset);
}

void loop() {
int rawValue = analogRead(currentSensorPin); // Membaca nilai analog dari
sensor
float voltage = (rawValue / 1024.0) * 5.0; // Konversi ADC ke tegangan (0-
5V)

// Hitung arus
// Arus = (Tegangan Output - Offset Tegangan) / Sensitivitas
// Offset Tegangan = 2.5V (untuk 5V supply)
float current = (voltage - (ACSoffset / 1024.0) * 5.0) / voltagePerAmp;

Serial.print("Nilai ADC: ");


Serial.print(rawValue);
Serial.print(" | Tegangan: ");
Serial.print(voltage);
Serial.print(" V | Arus: ");
Serial.print(current, 3); // Tampilkan 3 angka di belakang koma
Serial.println(" A");

delay(500); // Pembacaan setiap 0.5 detik


}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
ACS712(Sensor Arus ACS712)
Beban(Beban DC)
PowerSupplyBeban(Power Supply Eksternal Beban)

Arduino -- "5V" --> ACS712_VCC


Arduino -- "GND" --> ACS712_GND
Arduino -- "A0" --> ACS712_OUT

PowerSupplyBeban -- "+" --> ACS712_IP_Plus


ACS712_IP_Minus -- "+" --> Beban
Beban -- "-" --> PowerSupplyBeban -- "GND" --> GND_Common
Arduino -- "GND" --> GND_Common
Catatan: Tegaskan pentingnya memilih varian ACS712 yang sesuai dengan rentang arus yang
akan diukur. Jelaskan perhitungan konversi.

Tugas/Evaluasi:

1. Jelaskan prinsip kerja sensor arus Hall Effect.


2. Bagaimana cara mengkalibrasi sensor ACS712 untuk mendapatkan pembacaan yang
lebih akurat?
3. Modifikasi program untuk menyalakan LED jika arus yang terdeteksi melebihi ambang
batas tertentu (misal: 0.5A).
Jobsheet 18: Penggunaan Modul RTC DS3231 (Real-Time Clock)

Tujuan Pembelajaran:

 Siswa memahami pentingnya Real-Time Clock (RTC) dalam sistem tertanam.


 Siswa mampu membaca waktu dan tanggal dari modul RTC DS3231.
 Siswa mampu mengatur waktu pada modul RTC.

Teori Dasar: Modul RTC (Real-Time Clock) seperti DS3231 adalah chip yang menjaga waktu
dan tanggal secara akurat, bahkan ketika mikrokontroler dimatikan, berkat baterai cadangan.
Modul ini berkomunikasi dengan Arduino menggunakan protokol I2C.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Modul RTC DS3231 (biasanya sudah termasuk baterai CR2032)
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal (pastikan library "RTClib" dari Adafruit
terinstal)

Langkah Kerja:

1. Hubungkan pin VCC modul RTC ke 5V Arduino.


2. Hubungkan pin GND modul RTC ke GND Arduino.
3. Hubungkan pin SDA modul RTC ke pin A4 Arduino.
4. Hubungkan pin SCL modul RTC ke pin A5 Arduino.
5. Pastikan library "RTClib" (dari Adafruit) sudah terinstal di Arduino IDE (Tools >
Manage Libraries...).
6. Salin dan unggah kode program di bawah ini.
7. Buka Serial Monitor dan amati waktu dan tanggal yang ditampilkan.

Kode Program:

C++
#include <Wire.h> // Diperlukan untuk komunikasi I2C
#include "RTClib.h" // Library RTC dari Adafruit

RTC_DS3231 rtc; // Membuat objek RTC

char daysOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis",


"Jumat", "Sabtu"};

void setup() {
Serial.begin(9600);
Wire.begin(); // Inisialisasi komunikasi I2C
if (!rtc.begin()) { // Cek apakah RTC terdeteksi
Serial.println("Modul RTC tidak ditemukan!");
Serial.flush();
abort(); // Hentikan program jika RTC tidak ada
}

// Baris berikut untuk mengatur waktu RTC pertama kali.


// Setelah diatur, baris ini bisa dikomentari agar waktu tidak ter-reset
setiap upload.
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Mengatur waktu
berdasarkan waktu kompilasi
// rtc.adjust(DateTime(2025, 5, 26, 9, 0, 0)); // Mengatur waktu secara
manual (Tahun, Bulan, Tanggal, Jam, Menit, Detik)

Serial.println("Waktu Saat Ini:");


}

void loop() {
DateTime now = rtc.now(); // Membaca waktu dan tanggal saat ini dari RTC

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

delay(1000); // Update setiap 1 detik


}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
RTC_DS3231(Modul RTC DS3231)

Arduino -- "5V" --> RTC_VCC


Arduino -- "GND" --> RTC_GND
Arduino -- "A4 (SDA)" --> RTC_SDA
Arduino -- "A5 (SCL)" --> RTC_SCL

Catatan: Jelaskan pentingnya baterai cadangan pada RTC dan bagaimana cara mengatur waktu
pertama kali. Ingatkan untuk mengomentari baris rtc.adjust() setelah waktu diatur.

Tugas/Evaluasi:
1. Jelaskan mengapa modul RTC diperlukan dalam beberapa aplikasi mikrokontroler.
2. Modifikasi program untuk menyalakan LED pada jam dan menit tertentu (misal: setiap
jam 10:00).
3. Gabungkan dengan LCD (Jobsheet 7) untuk menampilkan waktu dan tanggal pada LCD.
Jobsheet 19: Kontrol Multiple LED dengan Shift Register 74HC595

Tujuan Pembelajaran:

 Siswa memahami konsep shift register.


 Siswa mampu mengontrol banyak LED (atau output digital lain) menggunakan IC
74HC595.
 Siswa mampu menghemat penggunaan pin Arduino.

Teori Dasar: Shift register 74HC595 adalah IC yang memungkinkan kita mengontrol banyak
output digital (misal: 8 LED) hanya dengan menggunakan 3 pin Arduino. Ini sangat berguna
ketika proyek membutuhkan banyak output tetapi pin Arduino terbatas. Data dikirim secara
serial dan kemudian diubah menjadi paralel.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 IC Shift Register 74HC595 (1 buah)
 LED (8 buah)
 Resistor 220Ω (8 buah)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Pasang IC 74HC595 di breadboard. Perhatikan notch/titik untuk pin 1.


2. Hubungkan pin-pin 74HC595:
o Pin 16 (VCC) ke 5V Arduino.
o Pin 8 (GND) ke GND Arduino.
o Pin 10 (MR/Master Reset) ke 5V Arduino.
o Pin 13 (OE/Output Enable) ke GND Arduino.
o Pin 14 (DS/Data Serial) ke pin digital 11 Arduino.
o Pin 12 (ST_CP/Storage Register Clock) ke pin digital 12 Arduino.
o Pin 11 (SH_CP/Shift Register Clock) ke pin digital 10 Arduino.
3. Hubungkan 8 LED dengan resistor masing-masing ke pin output Q0 hingga Q7 pada
74HC595. Kaki katoda LED ke GND.
4. Salin dan unggah kode program di bawah ini.
5. Amati pola LED yang menyala.

Kode Program:

C++
const int dataPin = 11; // DS (Data Serial) pada 74HC595
const int latchPin = 12; // ST_CP (Storage Register Clock) pada 74HC595
const int clockPin = 10; // SH_CP (Shift Register Clock) pada 74HC595

void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
// Contoh pola 1: LED menyala satu per satu
for (int i = 0; i < 8; i++) {
digitalWrite(latchPin, LOW); // Kunci register penyimpanan
shiftOut(dataPin, clockPin, MSBFIRST, 1 << i); // Kirim data (1 bit
bergeser)
digitalWrite(latchPin, HIGH); // Buka kunci dan tampilkan data
delay(100);
}

// Contoh pola 2: LED berkedip semua


digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 255); // Semua LED ON (255 = 11111111
biner)
digitalWrite(latchPin, HIGH);
delay(500);

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0); // Semua LED OFF (0 = 00000000
biner)
digitalWrite(latchPin, HIGH);
delay(500);

// Contoh pola 3: Pola biner acak


byte randomPattern = random(0, 256); // Hasilkan angka acak 0-255
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, randomPattern);
digitalWrite(latchPin, HIGH);
delay(1000);
}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
IC74HC595(IC 74HC595)
LEDs(8x LED + 8x Resistor)

Arduino -- "5V" --> IC74HC595_VCC(Pin 16)


Arduino -- "GND" --> IC74HC595_GND(Pin 8)
Arduino -- "5V" --> IC74HC595_MR(Pin 10)
Arduino -- "GND" --> IC74HC595_OE(Pin 13)

Arduino -- "Pin 11 (DS)" --> IC74HC595_DS(Pin 14)


Arduino -- "Pin 12 (ST_CP)" --> IC74HC595_ST_CP(Pin 12)
Arduino -- "Pin 10 (SH_CP)" --> IC74HC595_SH_CP(Pin 11)

IC74HC595_Q0(Pin 15) --> LED1


IC74HC595_Q1(Pin 1) --> LED2
IC74HC595_Q2(Pin 2) --> LED3
IC74HC595_Q3(Pin 3) --> LED4
IC74HC595_Q4(Pin 4) --> LED5
IC74HC595_Q5(Pin 5) --> LED6
IC74HC595_Q6(Pin 6) --> LED7
IC74HC595_Q7(Pin 7) --> LED8

LED1_R[Resistor 220] --> LED1_Anoda


LED2_R[Resistor 220] --> LED2_Anoda
LED3_R[Resistor 220] --> LED3_Anoda
LED4_R[Resistor 220] --> LED4_Anoda
LED5_R[Resistor 220] --> LED5_Anoda
LED6_R[Resistor 220] --> LED6_Anoda
LED7_R[Resistor 220] --> LED7_Anoda
LED8_R[Resistor 220] --> LED8_Anoda

LED1_Katoda -- "GND" --> Arduino


LED2_Katoda -- "GND" --> Arduino
LED3_Katoda -- "GND" --> Arduino
LED4_Katoda -- "GND" --> Arduino
LED5_Katoda -- "GND" --> Arduino
LED6_Katoda -- "GND" --> Arduino
LED7_Katoda -- "GND" --> Arduino
LED8_Katoda -- "GND" --> Arduino

Catatan: Jelaskan fungsi setiap pin pada 74HC595 dan bagaimana shiftOut() bekerja.

Tugas/Evaluasi:

1. Jelaskan keuntungan menggunakan shift register 74HC595 dibandingkan


menghubungkan setiap LED langsung ke Arduino.
2. Modifikasi program untuk membuat pola lampu berjalan dari kiri ke kanan, lalu dari
kanan ke kiri.
3. (Tantangan) Gunakan dua IC 74HC595 secara kaskade (seri) untuk mengontrol 16 LED.
Jobsheet 20: Proyek Terintegrasi: Sistem Otomasi Ruangan Sederhana

Tujuan Pembelajaran:

 Siswa mampu mengintegrasikan beberapa sensor dan aktuator dalam satu proyek.
 Siswa mampu merancang logika kontrol untuk sistem otomasi sederhana.
 Siswa mampu menerapkan konsep-konsep yang telah dipelajari.

Teori Dasar: Proyek ini akan menggabungkan beberapa komponen yang telah dipelajari (sensor
gerak, sensor cahaya, LED, buzzer) untuk menciptakan sistem otomasi ruangan sederhana.
Logika yang akan diterapkan adalah: lampu menyala saat gelap dan ada gerakan, serta buzzer
berbunyi jika ada gerakan saat mode "alarm" aktif.

Alat dan Bahan:

 Papan Arduino UNO R3


 Kabel USB Type B
 Sensor PIR HC-SR501 (1 buah)
 LDR (1 buah)
 Resistor 10KΩ (1 buah, untuk LDR)
 LED (1 buah, sebagai lampu ruangan)
 Resistor 220Ω (1 buah, untuk LED)
 Buzzer Piezo (1 buah)
 Push Button (1 buah, untuk mode alarm)
 Breadboard
 Kabel Jumper Male-Male
 Komputer dengan Arduino IDE terinstal

Langkah Kerja:

1. Rangkai sensor PIR (pin OUT ke digital 2), LDR (output ke analog A0 dengan pembagi
tegangan), LED (ke digital 13), Buzzer (ke digital 8), dan Push Button (ke digital 7,
INPUT_PULLUP).
2. Pastikan semua komponen terhubung dengan benar ke 5V dan GND Arduino.
3. Salin dan unggah kode program di bawah ini.
4. Amati perilaku sistem:
o Tutupi LDR (simulasi gelap) dan gerakkan tangan di depan PIR: LED harus
menyala.
o Tekan push button (aktifkan mode alarm), lalu gerakkan tangan di depan PIR saat
gelap: LED menyala dan buzzer berbunyi.

Kode Program:

C++
// --- Definisi Pin ---
const int pirPin = 2; // Sensor PIR
const int ldrPin = A0; // Sensor LDR
const int lampLedPin = 13; // LED sebagai lampu ruangan
const int buzzerPin = 8; // Buzzer
const int alarmButtonPin = 7; // Push Button untuk mengaktifkan/menonaktifkan
alarm

// --- Variabel State ---


int pirState = LOW; // Status deteksi PIR
int ldrValue = 0; // Nilai pembacaan LDR
bool alarmMode = false; // Status mode alarm (true = aktif, false =
nonaktif)
unsigned long lastButtonPressTime = 0; // Waktu terakhir tombol ditekan
const long debounceDelay = 50; // Delay debounce untuk tombol

// --- Konstanta Ambang Batas ---


const int LDR_THRESHOLD = 400; // Nilai LDR di bawah ini dianggap gelap
(sesuaikan)

void setup() {
pinMode(pirPin, INPUT);
pinMode(lampLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(alarmButtonPin, INPUT_PULLUP); // Button dengan pull-up internal
Serial.begin(9600);
Serial.println("Sistem Otomasi Ruangan Sederhana Aktif!");
Serial.println("Mode Alarm: NONAKTIF");
}

void loop() {
// --- Baca Sensor ---
pirState = digitalRead(pirPin);
ldrValue = analogRead(ldrPin);

// --- Kontrol Lampu Otomatis ---


if (ldrValue < LDR_THRESHOLD && pirState == HIGH) {
digitalWrite(lampLedPin, HIGH); // Nyalakan lampu jika gelap dan ada gerak
// Serial.println("Lampu ON (Gelap & Gerak)");
} else {
digitalWrite(lampLedPin, LOW); // Matikan lampu
// Serial.println("Lampu OFF");
}

// --- Kontrol Mode Alarm dengan Tombol (dengan Debounce) ---


int buttonState = digitalRead(alarmButtonPin);
if (buttonState == LOW && millis() - lastButtonPressTime > debounceDelay) {
// Tombol ditekan dan sudah melewati debounce
alarmMode = !alarmMode; // Toggle mode alarm
if (alarmMode) {
Serial.println("Mode Alarm: AKTIF");
} else {
Serial.println("Mode Alarm: NONAKTIF");
noTone(buzzerPin); // Pastikan buzzer mati saat alarm nonaktif
}
lastButtonPressTime = millis(); // Simpan waktu tekan tombol
}
// --- Logika Alarm ---
if (alarmMode && pirState == HIGH) {
tone(buzzerPin, 2000); // Bunyikan alarm (2000 Hz)
Serial.println("ALARM! Gerakan Terdeteksi!");
} else {
noTone(buzzerPin); // Matikan buzzer jika tidak ada alarm atau mode
nonaktif
}

// --- Debugging ke Serial Monitor (opsional) ---


// Serial.print("LDR: "); Serial.print(ldrValue);
// Serial.print(" | PIR: "); Serial.print(pirState == HIGH ? "Gerak" :
"Diam");
// Serial.print(" | Alarm Mode: "); Serial.println(alarmMode ? "AKTIF" :
"NONAKTIF");

delay(50); // Sedikit jeda untuk stabilitas


}

Gambar Rangkaian:

Cuplikan kode
graph TD
Arduino["Arduino UNO"]
PIR(Sensor PIR HC-SR501)
LDR_Sensor(LDR)
Resistor_10K[Resistor 10K Ohm]
LampLED(LED Lampu)
Resistor_Lamp[Resistor 220 Ohm]
Buzzer(Buzzer Piezo)
AlarmButton(Push Button Alarm)

% PIR Connections
Arduino -- "5V" --> PIR_VCC
Arduino -- "GND" --> PIR_GND
Arduino -- "Pin 2" --> PIR_OUT

% LDR Connections (Voltage Divider)


Arduino -- "5V" --> LDR_Sensor_Top
LDR_Sensor_Bottom -- "A0" --> Arduino
LDR_Sensor_Bottom -- "Top" --> Resistor_10K
Resistor_10K -- "Bottom" --> Arduino -- "GND" --> GND_Common

% Lamp LED Connections


Arduino -- "Pin 13" --> Resistor_Lamp
Resistor_Lamp -- "+" --> LampLED
LampLED -- "-" --> Arduino -- "GND" --> GND_Common

% Buzzer Connections
Arduino -- "Pin 8" --> Buzzer_Pos
Buzzer_Neg -- "GND" --> Arduino

% Alarm Button Connections


Arduino -- "Pin 7" --> AlarmButton_Pin
AlarmButton_Other -- "GND" --> Arduino
Catatan: Tekankan pentingnya pengujian ambang batas LDR di lingkungan nyata dan konsep
debounce untuk tombol.

Tugas/Evaluasi:

1. Jelaskan logika kontrol yang digunakan untuk menyalakan lampu otomatis.


2. Bagaimana Anda akan menambahkan fitur "penunda waktu" pada alarm, sehingga alarm
hanya berbunyi setelah gerak terdeteksi selama 5 detik?
3. (Proyek Lanjutan) Tambahkan modul LCD (Jobsheet 7) untuk menampilkan status sistem
(misal: "GELAP, GERAK", "ALARM AKTIF", "LAMPU ON/OFF").

Anda mungkin juga menyukai