410476730-Modul-Belajar-Arduino Ifan
410476730-Modul-Belajar-Arduino Ifan
Modul 1
Pertemuan
Materi Deskripsi Materi
ke-
1 Mengenal Mikrokontroller Mikrokontroler dan Kegunaannya
Perbedaan antara Mikrokontroler
dengan Mikroprosesor
CISC & RISC
Teori
1. Mengenal Mikrokontroller
1.1. Mikrokontroler dan Kegunaannya
Menurut Wikipedia yang namanya Mikrokontroler atau biasa disingkat MCU (Microcontroller
Unit) merupakan sebuah komputer kecil yang dikemas dalam satu IC (Integrated Circuit) berisikan
sebuah prosesor, memory dan peripherals Input/Output yang terprogram.
Penggunaan teknologi mikrokontroler dapat kita temui pada peralatan elektronik dirumah
seperti remote televisi, telepon digital, mesin cuci dll. Pengaplikasian teknologi mikrokontroler
dapat digunakan pada bidang otomatisasi industri, akuisi data, telekomunikasi dll.
2. Arduino
2.1. Arduino dan Jenis Board
Arduino merupakan Open Board elektronik atau bisa disebut sebagai sistem minimum board
dari sebuah mikrokontroler yang sudah memiliki bootloader sehingga pemrogramannya tidak
menggunakan chip programer lagi melainkan hanya melalui komunikasi serial. Arduino menjadi
populer karena sangat mudah digunakan bagi mereka yang tidak memiliki pengetahuan yang kuat
tentang pemrograman karena arduino sudah memiliki library yang banyak dan bersifat open source
sehingga sangat mudah digunakan.
Ada beberapa jenis produk development board & modul yang dikembangkan oleh Arduino.
Produk yang diberi nama Arduino dijual di USA saja sedangkan untuk diluar USA diberi nama
Genuino. Jenis produk Arduino dibedakan dalam beberapa kategori yaitu Kategori Entry level,
Enhanced Features, IoT (internet of Things), Wearable & Retired.
Kategori Entry level Product diperuntukan bagi mereka yang ingin mulai belajar pemrograman,
mudah digunakan dan sangat cocok untuk project pertama anda. Untuk kamu yang ingin melakukan
project yang lebih complex dan memerlukan board yang memiliki advanced functionalities dan
performa yang cepat bisa memilih kategori Enhanced features Product. Sedangkan bagi kamu yang
ingin yang ingin mengebangkan teknologi berbasis IoT bisa memilih IoT product. Info lebih lanjut
tentang produk Arduino bisa diliat disitus resminya (arduino.cc).
Setiap jenis Board arduino tidak memiliki mikrokontroler yang sama. Contohnya pada Arduino
Uno menggunakan chip ATmega328 yg merupakan mikrokontroler keluaran ATMEL sedangkan pada
Aduino 101 menggunakan chip Intel Curie besutan Intel.
Spesifikasi dari Arduino Nano 3.0 dapat dilihat pada tabel 1 dibawah ini (sumber :arduino.cc).
Tabel 1. spesifikasi Arduino Nano 3.0
Microcontroller ATmega328
Operating Voltage (logic 5 V
level)
Input Voltage 7-12 V
(recommended)
6-20 V
Input Voltage (limits)
14 (of which 6 provide PWM output)
Digital I/O Pins
8
Analog Input Pins
40 mA
DC Current per I/O Pin
32 KB (ATmega328) of which 2 KB used by
Flash Memory bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz
Dimensions 0.73" x 1.70"
Length 45 mm
Width 18 mm
Weigth 5g
fungsi. Sebuah fungsi dibuat dengan beberapa pernyataan yang tujuannya untuk melaksanakan
sebuah tugas dan ada biasanya sebuah fungsi juga ada yang tidak mengandung pernyataan. i. Pre-
processor
Merupakan bagian dari program dalam bahasa c yang selalu dijalankan pertama kali. Bagian
ini juga melakukan proses tertentu. Banyak sekali syntax dalam pre-processor. Namun
setidaknya ada dua syntax yang akan sering kita gunakan dalam latihan programming dasar,
yaitu syntax #include dan #define.
#include: proses yang pertama kali dijalankan untuk memanggil library/prototype fungsi yang
ada di dalam header file.
#include <servo.h>
Berarti meng-include file servo.h. Dengan demikian berarti kita mempersiapkan, fungsi-fungsi
dan instruksi-instruksi yang dapat digunakan untuk mengontrol servo seperti attach, detach,
dan write.
#define: proses yang pertama kali dijalankan untuk mendefinisikan konstanta dan macro. Nilai
dari konstanta tidak akan berubah selama program berlangsung.
#define pinServo 9
#define pinPotensio 0
Kita dapat juga membuat sebuah objek dan mendefinisikan variabel pada pre-processor
Servo myservo; int val; myservo merupakan objek dari ‘Servo’, sedangkan val
merupakan variabel yang tipe datanya integer.
ii. Fungsi Utama
Jika kita ingin menggunakan fasilitas atau fitur tertentu sebuah mikrokontroler maka kode
program yang dituliskan diletakkan pada fungsi utama.
void(setup){
myservo.attach(pinServo);
}
void(loop){
val = analogRead(pinPotensio);
val = map(val, 0, 1023, 0, 179);
myservo.write(val);
delay(15);
}
PRAKTIKUM 1
Job 1
Skema
Cathode
Anode
Anode
Cathode
ARDUINO LED
D13 - Resistor 220 ohm - Anoda
GND - Katoda
Logika Program :
Lampu hidup selama 1 detik, lalu mati selama 1 detik, tulis di
void loop agar lampu menjadi kelap kelip.
Kode Program
Job 2
Schematic
TASK :
Rangkai 3 led
Hidup dan matikan 3 led secara bersamaan dengan delay 1 detik setiap hidup dan mati
Hidup dan matikan 3 led secara bergantian dengan delay 500 milisekon
Gunakan #define atau tipe data integer untuk mendefinisikan pin
Modul 2
Pertemuan
Materi Deskripsi Materi
ke-
Pengambilan Keputusan
1. OPERATOR RELASI
Untuk membandingkan dua buah nilai kita bisa menggunakan operator relasi. Adapun operator
relasi dalam bahasa C dapat dilihat pada Tabel 1.
If digunakan dalam pengambilan keputusan, jika kondisi yang diinginkan terpenuhi maka perintah
yang berada di dalam kurung kurawal akan dieksekusi. Pada contoh diatas jika nilai dalam variabel
val lebih besar daripada 50, maka pin D12 menjadi HIGH
4. Pernyataan if-else
int val = 49;
if (val > 50){ //kondisi tidak terpenuhi
digitalWrite(12,HIGH);
}
else { // perintah di dalam else di eksekusi
digitalWrite(12,LOW);
}
If - else digunakan bila ada kondisi selain dari if, misalnya pada contoh diatas, jika nilai dalam
variabel val lebih besar daripada 50 makan pin D12 menjadi HIGH, lalu untuk elsenya adalah kondisi
selain if, jika nilai dalam variabel value lebih kecil atau sama dengan 50 makan pin D12 menjadi
LOW.
If di dalam if digunakan bila untuk mengecek / validasi berganda, atau untuk mencapai 2 kondisi
yang berbeda secara bertahap.
Contoh diatas adalah jika variabel val bernilai lebih dari 50, lalu melakukan if lagi, jika val2 bernilai
kurang dari 90, maka pin D12 menjadi HIGH. Jika kondisinya tidak tepenuhi maka eksekusi else yaitu
pin D12 menjadi LOW.
6. Pernyataan If -else if - else
If - else if - else digunakan jika terdapat banyak kondisi. Pada contoh diatas jika val bernilai 50
sampai 100 maka pin 12 bernilai HIGH, jika val bernilai 1 sampai 49 maka pin 13 bernilai HIGH, pada
kondisi selain dari itu maka pin 12 dan 13 bernilai LOW.
7. Komunikasi Serial
Komunikasi serial digunakan untuk berkomunikasi dengan mikrokontroler, komunikasi serial sangat
berguna untuk memberikan informasi apa yang sedang dikerjakan oleh mikrokontroler. Lewat
komunikasi serial kita juga dapat memberikan perintah kepada mikrokontroler pada saat
beroperasi. Berikut contoh komunikasi serial.
Penjelasan :
Serial.begin(9600) : memulai komunikasi serial dengan baud rate 9600
Serial.print : print / cetak tulisan yang diinginkan
Serial.println : cetak tulisan sekaligus cetak enter setelah menulis tulisan
Setelah mengupload sketch diatas, buka serial monitor, icon pada pojok kanan atas arduino IDE
Praktikum
Job 1 Digital Input Pullup Schematic
Algoritma program 1a :
Lampu menjadi hidup bila tombol ditekan, dan mati ketika tombol
tidak ditekan
KODE PROGRAM 1a
void setup() {
Algoritma Program 1b
Tekan tombol untuk menghidupkan lampu, tekan lagi untuk
mematikannya
D5 - R1 - LED1 -GND
D6 - R2 - LED2 - GND
Algoritma Program 2:
Tekan tombol untuk menghidupkan lampu 1, tekan lagi untuk
menghidupkan lampu 2, tekan lagi untuk mematikan kedua
lampu.
Tugas :
1. Gunakan 3 lampu LED 2. Hidupkan secara bergantian menggunakan pushbutton a) Tekan 1 kali
lampu 1 hidup b) Tekan 2 kali lampu 2 hidup c) Tekan 3 kali lampu 3 hidup d)
Tekan 4 kali semua lampu mati
Modul 3
Pertemuan
Materi Deskripsi Materi
ke-
Analog Vs Digital
Analog Vs Digital, ADC dan
1 ADC (Analog Digital Converter)
PWM
Teori PWM (Pulse Width Modulation)
Looping For
3 2 Perulangan (Looping)
Looping While
1 ADC Memonitor nilai dari potensiometer
Praktik Mengontrol nyala led menggunakan
2 PWM
PWM, bisa terang, dan redup, atau mati
Pada sinyal digital hanya ada 2 keadaan yaitu HIGH dan LOW atau 5v dan 0v, tetapi dengan
menggunakan analog kita dapat mengatur tegangan yang keluar seperti 1v, 2.2v, 4.5v, dsb.
1.2. Analog Digital Converter (ADC)
Analog Digital Converter (ADC) merupakan sistem pengubahan sinyal analog menjadi sinyal
digital. 2 karakter prinsip yang dimiliki ADC yaitu kecepatan sampling dan kecepatan resolusi. pada
Arduino Nano 3.0 yang menggunakan mikrokontroler ATmega328 keluaran
Atmel bisa menggunakan resolusi ADC 10 bit .
Cara konversi perhitungan nilai input tegangan ke bilangan biner dapat kita gunakan persamaan
1.1 sebagai berikut :
Vin
x R (1.1)
Vref
dimana :
x=nilai input pin ADC yang terbaca
Vin = tegangan input
Vref = tegangan referensi
R= nilai resolusi dari ADC
Sebagai contoh kita ingin mengetahui berapa nilai input pin adc yang terbaca jika Vin sebesar 3 v
dengan tegangan referensi sebesar 5 v dan nilai resolusi ADC 1023 (10bit).
Diketahui : Vin = 3v
Vref= 5v
R=1023
Nilai input pin ADC yang terbaca (x)?
x Vin R
Vref
x x1023
x 614
Jika kita ingin mengubah nilai 614 (yang merupakan nilai desimal) menjadi nilai biner maka cara
perhitungannya.
614
sisa 0
2
307
153 sisa 1
2
153
2 sisa 1
307 sisa 0
sisa 0
76 sisa 1
sisa 1
38
19 sisa 0
9 sisa 0
4 sisa 1
2
1
0
Jadi bilangan binernya 1001 1001 10
1.3. Pulse Width Modulation (PWM)
Seperti kita ketahui bahwa nilai tegangan output pada Arduino Nano 3.0 bisa bernilai 5V (HIGH)
atau 0v (Low). namun jika kita hendak mengatur besar nilai tegangan output menjadi 1,2 atau 3v
( rentang nilai diantara 0-5 v ) maka kita bisa menggunakan teknik PWM (Pulse Width Modulation).
Parameter yang dapat diatur pada PWM adalah periode & lebar pulsa, sedangkan untuk mengatur
besarnya tegangan yang diinginkan kita bisa mengatur besarnya duty cycle. duty cycle merupakan
persentase nilai lebar pulsa dalam satu periode gelombang.
Sedangkan untuk mencari nilai dari Duty Cycle kita bisa menggunakan persamaan 1.2 dibawah
ini
Untuk memahami lagi tentang duty cycle bisa kita lihat pada Gambar 2 dibawah ini :
Keterangan kode:
Init : inisialisasi batas awal pengulangan
Condition : kondisi pengulangan yang akan ditentukan
Increment : pengaturan penambahan nilai pada variable Lebih jelasnya dapat dilihat
pada contih berikut ini.
Pada contoh diatas, nilai i bernilai awal 0, dengan kondisi i<10 maka for akan terus menjalankan
fungsinya sampai dengan 9 dengan penambahan 1 setiap pengulangannya. Output dari contoh kode
diatas adalah
0
1
2
3
4
5
6
7
8
9
int i = 0;
while (i<10){
Serial.println(i);
i++;
}
Pertama variabel i diberi nilai 0, lalu while akan terus mengulang dengan kondisi i < 10. jika i telah =
10 maka while akan berhenti. Output dari contoh kode while adalah
0
1
2
3
4
5
6
7
8
9
Job 1_ADC
Schematic
PINOUT POTENSIOMETER
Algortima Program 1:
Kode Program 1
int analogPin = 0;
int nilai = 0;
void setup(){
Serial.begin(9600);
}
void loop()
{ nilai =
analogRead(analogPin);
Serial.println(nilai);
delay(500);
}
Job 2 PWM
Schematic
Anode
Cathode
Kode Program
} } }
Task :
- Gabungkan dengan potensiometer sehingga ketika potensiometer di putar maka akan mengontrol nyala LED.
- kontrol PWM dengan menggunakan looping for & while
Modul 4
Pertemuan
Materi Deskripsi Materi
ke-
1 Module Driver Motor L298N Fungsi dan pinout dari L298N
Teori
2 Modul Relay Fungsi dan cara kerja Relay
Menghidupkan dan mematikan lampu
4 1 L298N
menggunakan pushbutton
Praktik Menghidupkan dan mematikan 2 lampu
2 Relay secara bergantian menggunakan 1
pushbutton
Output 1 Output 4
Output 3
Output 2
Vin
GND 5V
2. Modul Relay
Bagaimana cara kita untuk mengontrol sebuah perangkat yang menggunakan arus listrik AC
(Alternate current) dengan mikrokontroler. Seperti yang kita ketahui Output arus dari
mikrokontroler menggunakan DC dan arusnya juga tidak besar sehingga untuk mengontrol
perangkat yang menggunakan Arus AC kita mesti menggunakan sebuah saklar yang dapat dikontrol
oleh mikrokontroler. Menurut wikipdia Relai adalah suatu peranti yang menggunakan
elektromagnet untuk mengoperasikan seperangkat kontak sakelar.
Job 1 Skema
Konfigurasi pin:
in1 hubungkan ke pin D2 In2 hubungkan ke pin D3
Contoh 2
void setup() { pinMode(2,
OUTPUT); pinMode(3,
OUTPUT); pinMode(9,
OUTPUT);
} void loop()
{ digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(9, HIGH);
Contoh 3
void setup() { pinMode(2,
OUTPUT); pinMode(3,
OUTPUT); pinMode(9,
OUTPUT);
} void loop()
{ digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(9, LOW);
}
TASK
Gunakan teknik pwm untuk mengatur kecepatan motor
Gunakan potensiometer untuk mengatur kecepatan motor dc Job 2 Relay Skema
D2 - IN 5v - VCC GND - GND
Task 1. Hidupkan LAMPU 220V (set pin D2 menjadi LOW) 2. Matikan LAMPU 220v (set pin D2
menjadi HIGH) Modul 5
Pertemuan
Materi Deskripsi Materi
ke-
5 Teori Penjelasan Singkat tentang sensor
1 Sensor Ultrasonik
ultrasonik
2 LCD Penjelasan singkat LCD
1. Sensor Ultrasonik
Sensor Ultrasonik adalah alat elektronika yang kemampuannya bisa mengubah dari energy
listrik menjadi energy mekanik dalam bentuk gelombang suara ultrasonik. Sensor ini terdiri dari
rangkaian pemancar Ultrasonik yang dinamakan transmitter dan penerima ultrasonik yang disebut
receiver. Alat ini digunakan untuk mengukur gelombang ultrasonik.
Pada sensor ultrasonik HC-sr04 dapat dilihat transmitter (bulatan kiri) dan receiver (bulatan
kanan), terdapat juga 4 pin, yaitu untuk daya dan komunikasi dengan mikrokontroler.
2. LCD (Liquid Crystal Display)
LCD 16x2 adalah salah satu lcd yang sering digunakan dalam berbagai project arduino, karena
mudah didapat dan mudah untuk diprogram dengan arduino. Library untuk lcd ini juga sudah ada di
arduino.
3. Real Time Clock (RTC)
Real time clock (RTC) adalah modul yang dibuat untuk menyimpan data waktu secara real time.
Data waktu yang tersimpan dari detik sampai dengan tahun. Modul ini sangat berguna untuk
berbagai project, terutama yang membutuhkan untuk menjalankan perintah berdasarkan waktu.
Misalnya kontrol lampu hidup pada jam enam sore, dan mati pada jam 6 pagi. Mikrokontroler
sebenarnya bisa menyimpan waktu, tapi ketika dimatikan maka waktunya akan mulai dari awal alias
tidak tersimpan atau tidak berjalan ketika si mikrokontroler dalam keadaan mati, sedangkan dengan
modul RTC waktu akan tersimpan walau mikrokontroler mati karena RTC memiliki baterai sendiri.
Praktikum
Job 1 Ultrasonik
Kode
Masukkan dulu library NewPingMaster pada masing-masing folder library arduino. Defaultnya di
folder Documents > Arduino > library.
#include
<NewPing.h>
#define 1 //
TRIGGER_PIN 2 pin
D12
ke
pin
trig
ger
#define //
ECHO_PIN 11 pin
D11
ke
ke
pin
ech
o
#define
MAX_DISTANCE
200 // up to 400-
500 cm
NewPing
sonar(TRIGGER_PIN,
ECHO_PIN,
MAX_DISTANCE); //
NewPing setup
void
setup() {
// komunikasi
serial dengan
baud rate
115200,
// buka serial
monitor setelah
upload
Serial.begin(115
200);
}
voi
d
loo
p()
{
delay(50); /
/tunggu 50
ms untuk
mendeteksi
jarak,
minimal
delay 29 ms
Serial.p
rint("Pi
ng: ");
// Kirim
sinyal dan
dapatkan
jarak, bila 0
berarti
diluar jarak
maksimal
atau eror
Serial.pri
nt(sonar.
ping_cm(
));
Serial.p
rintln("
cm");
}
Rangkaian LCD
LCD RS pin ke digital pin 12
LCD Enable pin ke digital pin 11
LCD D4 pin ke digital pin 5 LCD D5 pin ke digital pin 4 LCD D6 pin ke digital pin 3
LCD D7 pin ke digital pin 2
LCD R/W pin ke ground
VDD pin ke 5v
VSS pin ke ground
V pin ke resistor ke 5v (power backlight)
K pin ke ground (gnd backlight) Rangkaian 10K resistor:
Vcc ke 5v
Gnd ke gnd
Wiper/sinyal ke LCD VO pin (kecerahan lcd)
Kode
#include
<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5,
4, 3, 2);
void setup()
{
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Kedai
Techno");
lcd.setCursor(0, 1);
lcd.print("Arduino Nano
v3");
}
void loop()
{
}
Rangkaian
VCC ke 5v
GND ke GND
SCL ke A5
SDA ke A4
Program
Pada Arduino IDE, buka example
File > Example > RTClib > ds3231
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
void setup () {
#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop () {
DateTime now = rtc.now();
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();
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
}
Task :
1. Tampilkan jarak dari sensor ultrasonik ke LCD 2. Tampilkan jam dari rtc ke LCD 3. Tampilkan
jarak dan jam ke LCD
Modul 6
Pertemuan
Materi Deskripsi Materi
ke-
1 Interupsi Interupsi pada arduino
2
Teori 2 Komunikasi I C I2C pada arduino
3 Array Array pada pemrograman Arduino (C)
1. Interupsi (Interrupts)
Pada tingkat sederhana, interupsi adalah sebuah sinyal yang mengiterupsi proses yang sedang
berlangsung pada prosesor. Interupsi dapat dipicu oleh perubahan faktor eksternal (seperti
perubahan status pada pin input) atau juga faktor internal (seperti timer atau juga software signal).
Pada saat dipicu, interupsi menghentikan sementara proses yang sedang berlangsung dan
menyebabkan program untuk mengeksekusi perintah atau fungsi lain. Pada saat fungsinya selesai
dilakukan, maka program akan kembali bekerja seperti semula.
Pada Arduino Uno, Nano, Mini atau yang berbasis atmega328 pin interupsi terdapat pada pin 2
dan 3. Untuk arduino yang lain, dapat kita lihat pada tabel berikut.
Board Pin Interupsi
Uno, Nano, Mini, dan 328-based 2, 3
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
Micro, Leonardo, dan 32u4-based 0, 1, 2, 3, 7
Zero semua pin digital, kecuali 4
MKR1000 Rev.1 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Due Semua pin digital
101 Semua pin digital
Penjelasan sintaks lebih lanjut di https://www.arduino.cc/en/Reference/AttachInterrupt
2. Komunikasi I2C
Inter-Integrated Circuit atau sering disebut I 2C adalah standar komunikasi serial dua arah
menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C
terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C
dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C Bus dapat dioperasikan sebagai
Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus dengan
membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyal Stop, dan
membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai perubahan
tegangan SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan sinyal untuk
mengakhiri semua perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi “1”
pada saat SCL “1”.
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan dengan ACK
Setelah transfer data oleh master berhasil diterima slave, slave akan menjawabnya dengan
mengirim sinyal acknowledge, yaitu dengan membuat SDA menjadi “0” selama siklus clock ke 9. Ini
menunjukkan bahwa Slave telah menerima 8 bit data dari Master.
Pada arduino, komunikasi I2C telah dibuat library nya, yaitu “Wire Library”. Library ini mampu
membuat arduino berkomunikasi dengan perangkat I2C. Pada arduino Uno dan Nano, pin I2C
terdapat pada A4 (SDA) dan A5 (SCL)
3. Array
Array (larik) merupakan suatu variabel yang merepresentasikan daftar (list) atau kumpulan data
yang memiliki tipe data sama. Array merupakan konsep yang penting dalam pemrograman, karna
array memungkinkan kita untuk menyimpan data dalam jumlah banyak dan terindeks.
Misalkan ada kumpulan data bertipe int yaitu angka 1, 2, 3, 4, dan 5. Kumpulan data ini dapat
disajikan dalam bentuk Array karena memiliki tipe data yang sama yaitu Int. Misal kumpulan data
tadi kita beri nama Angka sehingga jika disajikan dalam bentuk array akan menjadi Int Angka[]={1, 2,
3, 4, 5} atau Int Angka[5]={1, 2, 3, 4, 5}. Pada sebuah array, index array dimulai dari indeks ke-0,
sehingga pada array Angka[], angka 1 berada di indeks ke-0 (Array[0]), angka 2 berada di indeks ke-1
(Array[1]), dan seterusnya. Sedangkan pada pendeklarasian Array, Int Angka [5] berarti Array Angka
dapat menampung 5 masukan nilai Int.
Skema
Kode Program
void setup() {
pinMode(ledPin, OUTPUT);
// mode input pullup, pada saat terbuka (tombol tidak ditekan), bernilai HIGH, pinMode(interruptPin,
INPUT_PULLUP);
// pasang interup pada pin 2,
// pemicunya CHANGE yaitu perubahan nilai LOW/HIGH pada pin/tombol
void loop () {
digitalWrite (ledPin, state);
}
void blink() {
state = !state;
}
Task :
1. Ubah CHANGE menjadi FALLING, dan RISING 2. Tambahkan komunikasi serial, lalu berikan
keterangan state lewat serial pada saat state berubah
JOB 2 - I2C
Skema
JOB 3 - ARRAY
Task :
1. panggil urutan array secara berurutan mulai dari yang terbesar (indeks ke 4) ke yang paling
kecil (indeks 0)