2022
DAFTAR ISI
HALAMAN JUDUL 1
DAFTAR ISI 2
MODUL TEORI
BAB I PENGANTAR TEKNOLOGI MIKROKONTROLER 3
BAB II MIKROKONTROLER PLATFORM ARDUINO 8
BAB III PEMROGRAMAN ARDUINO 18
MODUL PRAKTIKUM
1 Percobaan LED dan 7 Segment 25
2 Percobaan LCD Display 30
3 Percobaan Komunikasi Serial 32
4 Percobaan Push Button 34
5 Percobaan Sensor
• LM35 Temperature Sensor Module 37
• HC-SR04 Ultrasonic 39
• Infrared Obstacle Avoidance Sensor 41
• Touch Sensor Module 43
• MQ-2 Gas Sensor 45
• HC-SR501 Pyroelectric Infrared Sensor 47
6 Percobaan Pulse Witdh Modulator (PWM) 49
LAMPIRAN
A. Sejarah Mikrokontroler
D. Ringkasan
A. Konsep Arduino
• Microcontroller : ATmega328
• Tegangan Operasi : 5 V
• Tegangan Input : 7 – 12V
• Digital I/O : 14 pin
• PWM : 6 channel
• Analog Input : 6 channel
• Memory : 32KB Flash PEROM (0,5 KB digunakan oleh bootloader), 2KB
SRAM dan 1KB EEPROM
Gambar 2.2. memperlihatkan bagian utama dari papan Arduino uno, yakni
terminal power supply, port USB, pin digital I/O, tombol reset, mikrokontroler
ATmega328 dan pin analog input.
Berikut ini adalah penjelasan beberapa bagian utama dari papan Arduino
uno, yaitu:
1. Power Supply.
Pada Arduino board, ada 2 (dua) pilihan sumber tegangan yang dapat
digunakan, yakni dari port USB maupun dari power supply eksternal. Dengan
menghubungkan port USB di komputer/laptop dengan Arduino maka secara
otomatis power supply Arduino bersumber dari port USB. Untuk sumber
tegangan eksternal (non-USB) yakni dengan menghubungkan Arduino board
dengan sumber tegangan DC. Tegangan yang direkomendasikan adalah 7
sampai 12 V, jika kurang dari 7V akan menyebabkan ketidakstabilan tegangan,
sedangkan jika lebih dari 12V akan menyebabkan panas dan akibat fatal berupa
kerusakan pada board Arduino.
2. Input – Output.
3. Analog Input.
PEMROGRAMAN ARDUINO
Header
Di sinilah awal program Arduino berjalan, yaitu di saat awal, atau ketika
power on Arduino board. Biasanya di blok ini diisi penentuan apakah suatu pin
digunakan sebagai input atau output, menggunakan perintah pinMode. Initialisasi
variable juga bisa dilakukan di blok ini
void setup() {
// initialize digital pin 13 as an output.
pinMode(PinLED, OUTPUT);
}
OUTPUT adalah suatu makro yang sudah didefinisikan Arduino yang berarti = 1.
Jadi perintah di atas sama dengan pinMode(PinLED, 1);
Suatu pin bisa difungsikan sebagai OUTPUT atau INPUT. Jika difungsikan sebagai
output, dia siap mengirimkan arus listrik (maksimum 100 mA) kepada beban yang
disambungkannya. Jika difungsikan sebagai INPUT, pin tersebut memiliki
impedance yang tinggi dan siap menerima arus yang dikirimkan kepadanya.
Loop
Blok ini akan dieksekusi secara terus menerus. Apabila program sudah
sampai akhir blok, maka akan dilanjutkan dengan mengulang eksekusi dari awal
blok. Program akan berhenti apabila tombol power Arduino di matikan. Di sinilah
fungsi utama program Arduino kita berada.
// the loop function runs over and over again forever
void loop() {
digitalWrite(PinLED, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(PinLED, LOW); // turn the LED off
delay(1000); // wait for a second
}
Program sederhana adalah Led Blink, program ini akan mengakses pin 10 dan
memerintahkan Arduino untuk mengulang blink led, Gambar 3.3.
void setup() {
// initialize digital pin 10 as an output.
pinMode(PinLED, OUTPUT);
}
Ini adalah komentar baris yang berguna untuk dokumentasi program, kompiler akan
mengabaikan bagian ini. Baris komentar berguna bagi programmer agar bisa
mengerti maksud program.
Inisialisasi variable, dalam hal ini inisialisasi variable bernama ledPin dengan type
data integer dan nilai 10.
void setup() {
// initialize digital pin 10 as an output.
pinMode(PinLED, OUTPUT);
}
Setiap sketch Arduino wajib memiliki fungsi setup() dan loop(). Fungsi setup()
dipanggil hanya sekali saat pertama kali program berjalan. Fungsi setup() biasanya
tempat untuk men-setup hal-hal umum agar program siap dijalankan, seperti setup
pin modes, setting serial baud rates, dan lainnya. Pada sketch Led Blink, fungsi
setup hanya memiliki 1 baris perintah yaitu
pinMode(PinLED, OUTPUT);
pinMode fungsi yang berguna untuk memberitahu arduino bahwa pin pada board
akan digunakan sebagai input atau output. Dalam baris program di atas,
memberitahu arduino untuk menset pin 10 (nilai PinLED adalah 10) sebagai
Output.
void loop() {
digitalWrite(PinLED, HIGH);
delay(1000);
digitalWrite(PinLED, LOW);
delay(1000);
}
Fungsi loop()function adalah program utama yang dipanggil secara continue selama
Arduino menyala. Setiap perintah dalam fungsi loop() akan dipanggil satu persatu
sampai perintah terakhir dalam blok loop dicapai, lalu Arduino akan kembali ke
awal perintah di blok fungsi loop(), sampai Arduino dimatikan atau tombol reset
ditekan.
1. Code Program Arduino biasa disebut sketch dan dibuat menggunakan bahasa
pemrograman C. Program atau sketch yang sudah selesai ditulis di Arduino IDE
dapat langsung di-compile dan di-upload ke Arduino Board.
2. Secara sederhana, sketch dalam Arduino dikelompokkan menjadi 3 blok yakni
: Header, Setup dan Loop.
3. Setiap sketch Arduino wajib memiliki fungsi setup() dan loop(). Fungsi setup()
dipanggil hanya sekali saat pertama kali program berjalan. Fungsi
loop()function adalah program utama yang dipanggil secara continue selama
Arduino menyala.
A. Teori Pendukung
B. Tujuan Percobaan :
1. Menggunakan Arduino sebagai output.
2. Membuat program sederhana untuk membuat LED pada pin 3, 4, 5, 6, 7, 8,
9 ,0 berkedip.
D. Rangkaian Percobaan :
int PinLED1 = 3;
int PinLED2 = 4;
int PinLED3 = 5;
int PinLED4 = 6;
int PinLED5 = 7;
int PinLED6 = 8;
int PinLED7 = 9;
int PinLED8 = 10;
void setup() {
//initialize all digital pin LED as an output.
pinMode(PinLED1, OUTPUT);
pinMode(PinLED2, OUTPUT);
pinMode(PinLED3, OUTPUT);
pinMode(PinLED4, OUTPUT);
pinMode(PinLED5, OUTPUT);
pinMode(PinLED6, OUTPUT);
pinMode(PinLED7, OUTPUT);
pinMode(PinLED8, OUTPUT);
}
A. Teori Pendukung
B. Tujuan Percobaan :
1. Menggunakan Arduino sebagai output.
2. Membuat program sederhana untuk menampilkan angka pada modul
TM1637 4-digit 7-segment.
D. Rangkaian Percobaan :
E. Program Percobaan
// PROGRAM: CONTROLLING 7 SEGMENTS
void setup() {
// Clear the display:
display.clear();
delay(1000);
}
void loop() {
// Set the brightness:
display.setBrightness(7);
// All segments on:
display.setSegments(data);
delay(1000);
display.clear();
delay(1000);
// Show counter:
int i;
for (i = 0; i < 101; i++) {
display.showNumberDec(i);
delay(50);
}
delay(1000);
display.clear();
delay(1000);
delay(1000);
display.clear();
delay(1000);
delay(1000);
display.clear();
delay(1000);
delay(1000);
display.clear();
delay(1000);
delay(1000);
display.clear();
delay(1000);
display.setSegments(done);
while(1);
}
A. Teori Pendukung
B. Tujuan Percobaan :
1. Menggunakan LCD pada Arduino
2. Membuat program sederhana untuk menampilkan text pada LCD 16x2
D. Rangkaian Percobaan
E. Program Percobaan
// LiquidCrystal Library - Hello World
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting
begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
A. Teori Pendukung
B. Tujuan Percobaan :
1. Menggunakan komunikasi serial pada Arduino
2. Membuat program sederhana untuk mengirimkan data potensiometer
menggunakan komunikasi serial ke komputer.
D. Rangkaian Percobaan
E. Program Percobaan
// AnalogReadSerial
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1);
// delay in between reads for stability
}
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan keypad sebagai input pada arduino
2. Membuat program sederhana untuk menampilkan input push button ke
dalam bentuk output LED.
D. Rangkaian Percobaan :
int Button1state = 0;
int Button2state = 0;
int Button3state = 0;
void setup()
{
pinMode(Button1, INPUT);
pinMode(LED1, OUTPUT);
pinMode(Button2, INPUT);
pinMode(LED2, OUTPUT);
pinMode(Button3, INPUT);
pinMode(LED3, OUTPUT);
}
void loop()
{
Button1state = digitalRead(Button1);
if (Button1state == HIGH)
{
digitalWrite(LED1, HIGH);
}
else{
digitalWrite(LED1, LOW);
}
Button2state = digitalRead(Button2);
if (Button2state == HIGH)
{
digitalWrite(LED2, HIGH);
}
else{
digitalWrite(LED2, LOW);
}
Button3state = digitalRead(Button3);
if (Button3state == HIGH)
{
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan Sensor Suhu LM35 pada Arduino.
2. Membuat program sederhana untuk membaca suhu dengan modul Sensor
Suhu LM35.
D. Rangkaian Percobaan
E. Program Percobaan
int val;
int tempPin = 1;
void setup()
{
Serial.begin(9600);
}
void loop()
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan Ultrasonik HC SR04 pada Arduino.
2. Membuat program sederhana untuk membaca jarak dengan modul sensor
ultrasonik HC SR04
D. Rangkaian Percobaan
E. Program Percobaan
#define trigPin 11
#define echoPin 12
#define led 13
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
long duration, distance;
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan sensor proximity infrared pada Arduino.
2. Membuat program sederhana untuk mendeteksi keberadaan objek di
sekitarnya tanpa adanya sentuhan fisik.
D. Rangkaian Percobaan
E. Program Percobaan
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan sensor kapasitif atau sensor sentuh pada Arduino.
2. Membuat program sederhana yang dapat mendeteksi sentuhan atau
kedekatan.
D. Rangkaian Percobaan
E. Program Percobaan
#include <SPI.h>
int CAPACITIVE_SENSOR_PIN = 3;
int capacitiveSensorValue = 0;
void readSensorData()
{
//Read Sensor Value
//Display Readings
Serial.print("[INFO] Capacitive Touch Sensor Reading:
");
Serial.println(capacitiveSensorValue);
}
void setup()
{
pinMode(CAPACITIVE_SENSOR_PIN, INPUT);
Serial.begin(9600);
}
void loop()
{
readSensorData();
delay(1000);
}
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan sensor gas pada Arduino.
2. Membuat program sederhana untuk mengukur kandungan senyawa gas
polutan tertentu yang berada pada udara bebas, seperti karbon-dioksida
(CO2), karbon-monosikda (CO), hidrokarbon (LPG, LNG) , dan lain-lain..
D. Rangkaian Percobaan
E. Program Percobaan
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(gasPin));
delay(1000);
}
A. Teori Pendukung
B. Tujuan Percobaan
1. Menggunakan sensor PIR pada Arduino.
2. Membuat program sederhana untuk mendeteksi adanya pancaran sinar infra
merah dari suatu objek.
D. Rangkaian Percobaan
E. Program Percobaan
/*
Arduino with PIR motion sensor
*/
void setup() {
pinMode(led, OUTPUT);
pinMode(sensor, INPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(sensor);
if (val == HIGH) {
digitalWrite(led, HIGH);
delay(100);
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH;
}
}
else {
digitalWrite(led, LOW);
delay(200);
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW;
}
}
}
A. Teori Pendukung
B. Tujuan Percobaan :
1. Menggunakan driver motor pada Arduino.
2. Membuat program sederhana untuk menggerakan motor DC dan mengatur
kecepatan.
D. Rangkaian Percobaan :
F. Program Percobaan
void loop() {
digitalWrite(IN1, HIGH); //rotate both motors
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(2000); //wait for some time
//change direction of rotation
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(2000); //wait for some time
}
Connections:
Arduino L298N Arduino L298N
3 ENA 9 ENB
4 IN1 5 IN2
6 IN3 7 IN4
*/
void loop() {
//increase the speed
for (int i = 0; i <= 255; i = i + 5)
{ analogWrite(ENA, i);
analogWrite(ENB, i);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(10);
}
//decrease the speed
for (int i = 255; i >= 0; i = i - 5)
{ analogWrite(ENA, i);
analogWrite(ENB, i);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(10);
}
}