Anda di halaman 1dari 47

Ullam ne por arum sim sunt alit unt recate duciatiscium

1
Starter Kit Arduino | Level 1 Extension - Starlectric

YUK Belajar arduino !


Starter Kit Level 1 Extension merupakan lanjutan Starter
Kit Arduino Level 1 dari Starlectric dengan penambahan
komponen yang dapat diaplikasikan bersamaan dengan
komponen pada Level 1, sehingga menciptakan pengalaman
belajar Arduino yang lebih luas dengan perkembangan project
yang bisa dibuat. Selamat Mencoba !

2
Daftar Isi

Daftar isi

Starter Kit Arduino | Level 1 Extension.................................. 4


Apa saja di dalam Kit Level 1 Extension ?........................ 4
Daftar Library.................................................................... 5
01 - Sistem Alarm Anti Maling pada Pintu Rumah................. 6
02 - Kontrol LED dengan Remote Infrared............................. 9
03 - Sistem Monitor Kelembapan Tanah dengan Pompa Air. 13
04 - Text Display dengan OLED................................................ 16
05 - People Counter................................................................. 19
06 - Jam Digital dengan OLED Display..................................... 24
07 - Vibration Detector dengan Buzzer................................... 28
08 - Mini Piano dengan Buzzer................................................ 31
09 - Heart Rate dan Oximeter dengan OLED.......................... 35
10 - Lux Meter BH1570............................................................ 39

3
Starter Kit Arduino | Level 1 Extension - Starlectric

Starter Kit Arduino


Level 1 Extension

1 Apa saja di dalam Level 1 Extension ?

No Nama Item Qty


1 OLED 0,96” 128x64 px 1
2 MAX30100 Oximeter & Heart Beat Sensor 1
3 Vibration Sensor 1
4 Soil Moisture Sensor 1
5 Mini Water Pump 1
6 Hose for Water Pump 1
7 MOSFET IRF520 Module 1
8 Screwdriver Minus / Flathead 1
9 Infrared Remote Kit 1
10 Door Sensor 1
11 RTC DS1307 1
12 BH1750 Lux Meter Sensor 1
13 Obstacle Sensor 2
14 Tactile Switch 7
15 Buzzer Active 1
16 Buzzer Passive 1
17 Jumper Male to Male 20
18 Jumper Male to Female 20
19 LED 5mm 5
20 Resistor 220 Ohm 5

4
2 Daftar Library

1. Layar OLED
- Adafruit_GFX
- Adafruit_SSD1306
- Adafruit_BusIO

2. Infrared Remote Kit


- IRremote

3. Real Time Clock


- RTClib

4. MAX30100 Oximeter & Heart Rate Sensor


- Arduino-MAX30100-master

5. BH1750 Lux Meter Sensor


- BH1750

5
Starter Kit Arduino | Level 1 Extension - Starlectric

01 - Sistem Alarm Anti Maling


pada Pintu Rumah
1 Intro

Pada project ini kita akan menggunakan sensor pintu yang


akan memberikan informasi apakah pintu terbuka atau tidak.
Sensor memanfaatkan magnet dan Reed Switch Sensor untuk
mengetahui kondisi pintu.

Sensor pintu terdiri dari 2 bagian. Pada pemasangannya, 1 bagian


sensor diletakkan pada daun pintu, sedangkan bagian lainnya
diletakkan pada kusen pintu.

Dengan menggabungkan buzzer sebagai penghasil suara alarm,


sistem ini dapat menyalakan suara alarm ketika pintu dibuka.

Pengembangan lain adalah dapat menambahkan Real Time Clock


agar dapat mencatat waktu dan tanggal pintu terbuka.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 Door Sensor 1
3 Buzzer 1
4 Breadboard 400 1
5 Jumper Male Male 4

6
01 - Sistem Alarm Anti Maling Pada Pintu Rumah

3 Skematik

4 Source Code

1 #define DOOR_SENSOR 13
2 #define BUZZER_OUTPUT A0
3
4 void setup() {
5 pinMode(DOOR_SENSOR, INPUT_PULLUP);
6 pinMode(BUZZER_OUTPUT, OUTPUT);
7 digitalWrite(BUZZER_OUTPUT, LOW);
8 }
9
10 void loop() {
11 if(digitalRead(DOOR_SENSOR) == HIGH) {
12 delay(100);
13 alarm();
14 }
15 else {

7
Starter Kit Arduino | Level 1 Extension - Starlectric

16 digitalWrite(BUZZER_OUTPUT, LOW);
17 }
18 }
19
20 void alarm() {
21 digitalWrite(BUZZER_OUTPUT, LOW);
22 delay(50);
23 digitalWrite(BUZZER_OUTPUT, HIGH);
24 delay(50);
25 }

Coding di atas melakukan looping pada pengecekan apakah


sensor pintu terbuka atau tidak.

Dengan logika if(digitalRead(DOOR_SENSOR) == HIGH),


jika sensor pintu terbuka, sensor akan menghasilkan sinyal HIGH
dan akan masuk melakukan fungsi alarm(). Selama pintu masih
dalam posisi terbuka, maka alarm akan terus berbunyi.

Interval bunyi alarm dapat diatur dengan mengubah angka


delay(interval) pada fungsi alarm().

8
02 - Kontrol LED dengan Remote Infrared

02 - Kontrol LED dengan


Remote infrared
1 Intro

Dengan memanfaatkan sensor penerima infrared, kita dapat


menerima perintah dari remote berbasis infrared.

Pada project ini sudah disertakan Infrared Remote Kit berupa


Transmitter dan Receiver. Kita akan melakukan kontrol ON dan
OFF pada LED berdasarkan perintah dari remote.

Project ini dapat dikembangkan menjadi remote control dengan


berbagai perintah sesuai dengan tombol atau kode perintah yang
dapat dikirim oleh remote.

Sebagai contoh kita dapat melakukan kontrol berupa menyalakan


dan mematikan beberapa lampu di rumah, mengganti-ganti
warna lampu LED RGB dan sebagainya.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 Infrared Remote Kit 1
3 LED 1
4 Resistor 220 ohm 1
5 Breadboard 400 1

9
Starter Kit Arduino | Level 1 Extension - Starlectric

3 Skematik

4 Source Code

1 #include <IRremote.h>
2 #define LED_OUTPUT 2
3
4 int receiver = 8;
5 IRrecv irrecv(receiver);
decode_results results;
6
7 void setup() {
8 Serial.begin(9600);
9 Serial.println("IR Receiver Start");
10 pinMode(LED_OUTPUT, OUTPUT);
11 irrecv.enableIRIn(); // Mulai IR Receiver
12 }
13

10
02 - Kontrol LED dengan Remote Infrared

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value);
translateIR();
irrecv.resume();
}
}

void translateIR() {
switch(results.value)
{
case 16718055: // UP button number
digitalWrite(LED_OUTPUT, HIGH);
break;

case 16730805: // DOWN button number


digitalWrite(LED_OUTPUT, LOW);
break;
delay(500);
}
}

Untuk dapat menggunakan receiver remote, dibutuhkan library


IRremote.h (file library terdapat di link download). Install terlebih
dahulu agar dapat melakukan project ini.

Fungsi translateIR() berguna untuk menerjemahkan kode yang


diterima dari remote menjadi perintah yang kita inginkan.
Kode setiap remote akan berbeda-beda. Untuk dapat mengetahui
kode remote yang diterima, dapat mengambil nilai dari variabel
results setelah menjalankan fungsi irrecv.decode(&results).

11
Starter Kit Arduino | Level 1 Extension - Starlectric

Khusus untuk remote kit ini, berikut adalah daftar perintah


beserta kode yang dikirim remote :

Perintah Kode
Atas 16718055
Bawah 16730805
Kiri 16716015
Kanan 16726215
OK 16712445
1 16753245
2 16736925
3 16769565
4 16720605
5 16712445
6 16761405
7 16769055
8 16754775
9 16748655
0 16750695
* 16738455
# 16756815

Tabel kode diatas dapat dipergunakan untuk menterjemahkan


kode yang diterima dari remote menjadi perintah yang kita
inginkan.

Remote berbeda akan menghasilkan kode yang berbeda, gunakan


Serial Monitor(results.value) untuk mengetahui kode remote.

12
03 - Sistem Monitor Kelembapan Tanah dengan Pompa Air

03 - Sistem Monitor Kelembapan


Tanah dengan Pompa Air
1 Intro

Pada project ini kita akan melakukan monitoring kelembapan


tanah dan menjaga kelembapan di tingkat yang kita inginkan.
Aplikasi project ini adalah pada penjagaan kelembapan tanah
untuk tanaman sehingga tanahfa tidak terlalu kering.

Cara kerja sensor kelembapan tanah adalah dengan


memanfaatkan sifat konduktifitas dari kelembapan tanah.
Sensor terdiri dari 2 probe untuk melewatkan arus melalui
tanah, kemudian Arduino akan membaca resistansinya untuk
mendapatkan nilai kelembapan.

Tanah yang kering akan sulit menghantarkan arus, sehingga


resistansinya besar. Begitu pula sebaliknya pada tanah yang
lembap/basah, resistansi menjadi kecil.

Memanfaatkan Analog to Digital Converter (ADC) pada Arduino,


kita dapat mengukur nilai resistansi pada sensor.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 Sensor Kelembapan Tanah 1
3 Pompa Air Mini 1
4 BC547 Transistor NPN 1
5 Resistor 1K ohm 1

13
Starter Kit Arduino | Level 1 Extension - Starlectric

3 Skematik

4 Source Code

1 #define POMPA_AIR A5
2 #define SENSOR A0
3
4 float nilaiSensor = 0;
5
void setup() {
6 pinMode(POMPA_AIR, OUTPUT);
7 pinMode(SENSOR, INPUT);
8 }
9
10 void loop() {
11 for (int i = 0; i <= 100; i++)
12 {
13 nilaiSensor = nilaiSensor +
analogRead(SENSOR);
14 delay(1);
}
14
03 - Sistem Monitor Kelembapan Tanah dengan Pompa Air

15 nilaiSensor = nilaiSensor/100.0;
16
17 if(nilaiSensor >= 512) {
18 digitalWrite(A0, HIGH);
19 }
20 else {
21 digitalWrite(A0, LOW);
22 }
23 delay(30);
24 }
Cara pemakaian sensor adalah dengan memasukkan probe
sensor (yang berbentuk seperti garpu) ke dalam tanah hingga
batas bagian warna kuning. Untuk mengatur sensitiftas, dapat
memutar trimpot menyesuaikan kebutuhan.

Sensor kelembapan tanah menghasilkan sinyal analog (0 - 5V),


nilai tegangan analog ini dapat kita konversi menjadi nilai digital
dengan menggunakan Analog to Digital Converter pada Arduino.
Pin input khusus ADC ada pada A0 - A5.

Pada contoh di atas, kita melakukan looping sebanyak 100 kali


untuk mengambil nilai sensor dan kemudian diambil rata-rata.

Untuk menentukan titik lembap dan kering agar pompa dapat


diperintahkan bekerja, kita tentukan nilai 512 atau setengah dari
total range konversi yaitu 1024. Dikarenakan Arduino bekerja
pada arsitektur 8-bit, maka hasil konversi ADC berkisar antara
0 - 1023 (1024 nilai).

Penggerak pompa air pada project ini kita menggunakan MOSFET


IRF520 yang berfungsi sebagai switch untuk pompa. Prinsip kerja
MOSFET sama dengan transistor yaitu dengan 1 pin kontrol /
signal, kita dapat melewatkan arus yang cukup besar ke perangkat
yang ingin dihidupkan.
15
Starter Kit Arduino | Level 1 Extension - Starlectric

04 - Text display dengan oled

1 Intro
Sebelumnya di Starter Kit Level 1, kita sudah belajar menggunakan
LCD sebagai display informasi yang ingin kita tampilkan. Saat ini
kita akan belajar menggunakan layar OLED.

Perbedaan dasar LCD dan OLED ada pada metode pencahayaan


setiap pixel. Khususnya untuk sparepart Arduino, LCD yang
banyak ditemukan merupakan LCD Character yang hanya dapat
menampilkan karakter Alphanumerik. Sedangkan pada layar
OLED, yang dapat ditampilkan menjadi lebih luas seperti teks,
gambar dan animasi gambar.

Untuk menggunakan layar OLED ini kita membutuhkan library


“Adafruit_GFX” dan “Adafruit_SSD1306” sebagai driver untuk
mengontrol layar OLED tersebut. Driver ini dapat didownload
melalui Library Manager dalam Arduino IDE. Library ini
memberikan banyak fitur untuk memanipulasi tampilan yang
diinginkan, seperti scroll text, font, draw shape dan lain-lain.

Koneksi layar OLED ini juga menggunakan protokol I2C, sehingga


memerlukan pin SDA dan SCL. OLED yang digunakan berukuran
0,96” dengan dimensi pixel sebesar 128 x 64 pixel.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 OLED Display 1
3 Jumper Male Female 4

16
04 - Text Display dengan OLED

3 Skematik

4 Source Code

1 #include <SPI.h>
2 #include <Wire.h>
3 #include <Adafruit_GFX.h>
4 #include <Adafruit_SSD1306.h>
5 #define SCREEN_WIDTH 128
6 #define SCREEN_HEIGHT 64
7 #define OLED_RESET 4
8 #define SCREEN_ADDRESS 0x3C
9 Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT, &Wire, OLED_RESET);
10
11 void setup() {
12 if(!display.begin(SSD1306_SWITCHCAPVCC,
SCREEN_ADDRESS)) {

17
Starter Kit Arduino | Level 1 Extension - Starlectric

13 Serial.println(F("Allocation failed"));
14 for(;;); // Don't proceed, loop forever
15 }
16 display.clearDisplay();
17 display.setTextSize(2,2);
18 display.setTextColor(WHITE);
19 display.setCursor(5, 20);
20 display.println("Hello !");
21 display.setTextSize(1);
22 display.setCursor(5, 40);
23 display.println("Starter Kit Arduino");
24 display.setCursor(5, 50);
25 display.println(" by Starlectric");
26 display.display();
27 delay(5000);
28 }
29 void loop() {
30 display.clearDisplay();
31 display.setTextSize(2);
32 display.setCursor(10, 0);
33 display.println("Scrolling Text");
34 display.display();
35 delay(100);
36 display.startscrolldiagright(0x00, 0x07);
37 delay(2000);
38 display.startscrolldiagleft(0x00, 0x07);
39 delay(2000);
40 display.stopscroll();
41 delay(1000);
42 }

18
05 - People Counter

05 - People COunter

1 Intro
Pada Arduino Kit Level 1 sebelumnya kita sudah mempelajari
tentang Deteksi Objek dengan Infrared, pada project kali ini kita
akan menggunakan 2 buah Obstacle Sensor. Dengan konfigurasi
sensor seperti itu, kita dapat aplikasikan sebagai penghitung
pengunjung atau People Counter.

Alat ini biasa di aplikasikan pada tempat umum untuk mengetahui


jumlah orang dalam tempat tersebut. Project dapat juga
dikembangkan dengan buzzer sehingga dapat membunyikan
alarm jika jumlah orang di dalam ruangan melewati ambang
batas yang telah ditentukan.

Peletakan sensor juga berpengaruh pada hasil, 2 sensor obstacle


ini diletakkan paralel dengan arah pergerakan orang. 1 sensor
diletakkan di arah luar pintu, dan 1 lagi diletakkan di dalam pintu.

Beri jarak antara sensor kira-kira 5 - 10 cm agar mendapatkan


hasil yang lebih baik.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 Obstacle Sensor 2
3 OLED Display 1

19
Starter Kit Arduino | Level 1 Extension - Starlectric

3 Skematik

4 Source Code

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SENSOR_IN 2
#define SENSOR_OUT 3

#define SCREEN_WIDTH 128


#define SCREEN_HEIGHT 64
#define OLED_RESET 4
#define SCREEN_ADDRESS 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT, &Wire, OLED_RESET);

20
05 - People Counter

Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT, &Wire, OLED_RESET);
int count = 0;
int tempcount = 0;

bool state1 = true;


bool state2 = true;
bool insideState = false;
int i = 1;

void setup() {
Serial.begin(9600);
pinMode(SENSOR_IN, INPUT);
pinMode(SENSOR_OUT, INPUT);

if(!display.begin(SSD1306_SWITCHCAPVCC,
SCREEN_ADDRESS)) {
Serial.println(F("Allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.display();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(5, 5);
display.println("Jumlah Orang :");
display.setTextSize(2);
display.setCursor(5, 25);
display.print(count);
display.println(" orang");
display.display();
delay(1000);

21
Starter Kit Arduino | Level 1 Extension - Starlectric

void loop() {
if (!digitalRead(SENSOR_IN) && i==1 &&
state1){
delay(100);
i++;
state1 = false;
}

if (!digitalRead(SENSOR_OUT) && i==2 &&


state2){
Serial.println("Masuk");
delay(100);
i = 1 ;
count++;
Serial.print("Jumlah Orang : ");
Serial.println(count);
state2 = false;
}

if (!digitalRead(SENSOR_OUT) && i==1 &&


state2 ){
delay(100);
i = 2 ;
state2 = false;
}

if (!digitalRead(SENSOR_IN) && i==2 &&


state1 ){
Serial.println("Keluar");
delay(100);
count--;

22
05 - People Counter

Serial.print("Jumlah Orang :");


Serial.println(count);
i = 1;
state1 = false;
}

if (digitalRead(SENSOR_IN)){
state1 = true;
}

if (digitalRead(SENSOR_OUT)){
state2 = true;
}

if(tempcount != count) {
updateTampilan();
tempcount = count;
}
}

void updateTampilan() {
display.fillRect(5, 25, 100, 20, BLACK);
display.display();
display.setCursor(5, 25);
display.print(count);
display.println(" orang");
display.display();
delay(100);
}

23
Starter Kit Arduino | Level 1 Extension - Starlectric

06 - jam digital dengan oled display

1 Intro
Agar Arduino dapat mengetahui waktu saat ini, perlu
menggunakan modul yang bernama Real Time Clock (RTC). RTC
adalah komponen yang mencatat waktu dan tanggal.

Dengan baterai kancing yang menempel pada modul, RTC dapat


menghitung waktu dan tanggal tanpa disuplai daya dari Arduino.

Project ini menggunakan RTC tipe DS1307 dan menggunakan


baterai kancing CR2032. RTC ini berkomunikasi dengan Arduino
melalui protokol I2C.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 OLED Display 1
3 RTC DS1307 1

24
06 - Jam Digital dengan OLED Display

3 Skematik

4 Source Code
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include "RTClib.h"

#define SCREEN_WIDTH 128


#define SCREEN_HEIGHT 64
#define OLED_RESET 4
#define SCREEN_ADDRESS 0x3C

RTC_DS1307 rtc;
Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT, &Wire, OLED_RESET);

25
Starter Kit Arduino | Level 1 Extension - Starlectric

void setup () {
if(!display.begin(SSD1306_SWITCHCAPVCC,
SCREEN_ADDRESS)) {
Serial.println(F("Allocation failed"));
for(;;); // Don't proceed, loop forever
}

if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}

if (!rtc.isrunning()) {
Serial.println("RTC is NOT running,
let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__
TIME__)));
}
display.clearDisplay();
display.display();
display.setTextColor(WHITE);
}

void loop () {
DateTime now = rtc.now();
display.setTextSize(2);
display.setCursor(0, 0);

if(now.day() != daytemp || now.month() !=


monthtemp || now.year() != yeartemp) {
display.fillRect(0,0,128,15,BLACK);
display.print(now.day(), DEC);

26
06 - Jam Digital dengan OLED Display

display.print('-');
display.print(now.month(), DEC);
display.print('-');
display.println(now.year(), DEC);
display.display();
yeartemp = now.year();
monthtemp = now.month();
daytemp = now.day();
}
display.setTextSize(4);
display.setCursor(0,16);
if(now.hour() != hourtemp || now.minute()
!= minutetemp) {
display.fillRect(0,16,128,46,BLACK);
display.print(now.hour(), DEC);
display.print(':');
display.println(now.minute(), DEC);
display.display();
hourtemp = now.hour();
minutetemp = now.minute();
}

display.setTextSize(2);
display.setCursor(0,47);
display.fillRect(0, 47, 128, 36, BLACK);
display.display();
display.print(now.second(), DEC);
display.display();
delay(1000);
}
Arduino akan melakukan set jam pertama kali untuk modul RTC
baru. Jika waktu tidak berhasil di set, maka buka sketch baru dan
lakukan fungsi :
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
27
Starter Kit Arduino | Level 1 Extension - Starlectric

07 - Vibration Detector dengan


buzzer
1 Intro

Vibration sensor adalah sensor yang mendeteksi adanya getaran.


Dengan memanfaatkan sensor ini, kita dapat mengetahui apakah
terdapat interupsi atua gangguan pada sebuah benda, seperti
pintu dan lain-lain.

Aplikasi sensor ini bisa sangat luas, seperti alarm pada saat
jendela di dorong, mengaktifkan perangkat saat nonaktif menjadi
aktif ketika diangkat dan banyak lagi.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 Vibration Sensor 1
3 LED & Resistor 220 ohm 1
4 Buzzer Active 1

28
07 - Vibration Detector dengan Buzzer

3 Skematik

4 Source Code
#define LED 2
#define BUZZER 3
#define SENSOR A5

void setup() {
pinMode(LED,OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(SENSOR, INPUT);
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
}

29
Starter Kit Arduino | Level 1 Extension - Starlectric

void loop() {
if(digitalRead(SENSOR) == HIGH) {
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
delay(250);
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
delay(250);
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
delay(250);
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
delay(250);
}
}

Vibration sensor akan menghasilkan logic HIGH ketika mendeteksi


getaran. Kita akan membunyikan alarm ketika getaran terdeteksi
oleh sensor.

Untuk model bunyi alarm dapat kalian kreasikan sesuai keinginan.

Pada contoh di atas, kita membunyikan Buzzer dan LED sebanyak


2 kali selama getaran masih ada. Kalian juga bisa merubah
dengan memberikan for loop pada alarm sehingga mempunyai
durasi yang lebih lama.

30
08 - Mini Piano dengan Buzzer

08 - Mini piano dengan buzzer

1 Intro
Pada project ini kita akan memanfaatkan Buzzer Passive untuk
menghasilkan suara seperti piano.

Buzzer Passive berbeda dengan Buzzer Active yang kita pelajari


sebelumnya pada Starter Kit Level 1. Buzzer Passive berbunyi
jika diberikan frekuensi atau sinyal suara. Sedangkan Buzzer
Active akan berbunyi cukup dengan diberikan tegangan atau
logic High. Sehingga buzzer passive dapat menghasilkan suara
dengan frekuensi yang berbeda berbeda dengan buzzer active
yang hanya berbunyi dengan 1 jenis frekuensi.

Dengan memanfaatkan sifat dari masing-masing buzzer ini kita


membuat sebuah piano yang menghasilkan 7 buah nada dasar.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 Buzzer Passive 1
3 Tactile Switch 7
4 Breadboard 400 1

31
Starter Kit Arduino | Level 1 Extension - Starlectric

3 Skematik

4 Source Code
#define T_C 262
#define T_D 294
#define T_E 330
#define T_F 349
#define T_G 392
#define T_A 440
#define T_B 493

const int C = 10;


const int D = 9;
const int E = 8;
const int F = 7;
const int G = 6;
const int A = 5;
const int B = 4;

const int Buzz = 11;


const int LED = 13;
32
08 - Mini Piano dengan Buzzer

void setup() {
pinMode(LED, OUTPUT);
pinMode(C, INPUT);
digitalWrite(C,HIGH);

pinMode(D, INPUT);
digitalWrite(D,HIGH);

pinMode(E, INPUT);
digitalWrite(E,HIGH);

pinMode(F, INPUT);
digitalWrite(F,HIGH);

pinMode(G, INPUT);
digitalWrite(G,HIGH);

pinMode(A, INPUT);
digitalWrite(A,HIGH);

pinMode(B, INPUT);
digitalWrite(B,HIGH);

digitalWrite(LED,LOW);
}

void loop() {
while(digitalRead(C) == LOW) {
tone(Buzz,T_C);
digitalWrite(LED,HIGH);
}
while(digitalRead(D) == LOW) {
tone(Buzz,T_D);
33
Starter Kit Arduino | Level 1 Extension - Starlectric

digitalWrite(LED,HIGH);
}
while(digitalRead(E) == LOW) {
tone(Buzz,T_E);
digitalWrite(LED,HIGH);
}
while(digitalRead(F) == LOW) {
tone(Buzz,T_F);
digitalWrite(LED,HIGH);
}
while(digitalRead(G) == LOW) {
tone(Buzz,T_G);
digitalWrite(LED,HIGH);
}
while(digitalRead(A) == LOW) {
tone(Buzz,T_A);
digitalWrite(LED,HIGH);
}
while(digitalRead(B) == LOW) {
tone(Buzz,T_B);
digitalWrite(LED,HIGH);
}

noTone(Buzz);
digitalWrite(LED,LOW);
}
Setiap nada dapat diatur frekuensi nya di atas coding. Arduino
memiliki fungsi tone yang berguna untuk menghasilkan sinyal
frekuensi seperti yang ditentukan.

Setelah menjalakan fungsi tone(), Arduino akan terus


menghasilkan frekuensi hingga dijalankan fungsi noTone();

34
09 - Heart Rate dan Oximeter dengan OLED

09 - Heart Rate dan Oximeter


dengan OLED
1 Intro
Mengetahui detak jantung dan kadar oksigen dalam darah sangat
penting saat ini. Dengan sensor MAX30100, kita dapat mengukur
detak jantung dan kadar oksigen. Maka dalam project ini ktia
akan memanfaatkan sensor MAX30100 ini.

Dengan menggunakan protokol komunikasi I2C, sensor ini akan


mengukur detak jantung dan kadar oksigen melalui jari. Hasil
pengukuran akan di tampilkan melalui layar OLED.v

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 MAX30100 Sensor 1
3 OLED 1
4 Breadboard 400 1

35
Starter Kit Arduino | Level 1 Extension - Starlectric

3 Skematik

4 Source Code
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "MAX30100_PulseOximeter.h"

#define SCREEN_WIDTH 128


#define SCREEN_HEIGHT 32
#define OLED_RESET 4
#define SCREEN_ADDRESS 0x3C

#define REPORTING_PERIOD_MS 1000

PulseOximeter pox;
Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT, &Wire, OLED_RESET);
uint32_t tsLastReport = 0;

36
09 - Heart Rate dan Oximeter dengan OLED

void onBeatDetected() {
Serial.println("Beat!");
}

void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC,
SCREEN_ADDRESS)) {
Serial.println(F("Allocation failed"));
for(;;); // Don't proceed, loop forever
}

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("SpO2% PRbpm");
display.display();

Serial.print("Init pulse oximeter..");


if (!pox.begin()) {
Serial.println("FAILED");
for(;;);
} else {
Serial.println("SUCCESS");
}

pox.setIRLedCurrent(MAX30100_LED_CURR_7_
6MA);
pox.setOnBeatDetectedCallback(onBeatDe-
tected);
}

37
Starter Kit Arduino | Level 1 Extension - Starlectric

void loop() {
pox.update();
if (millis() - tsLastReport > REPORTING_
PERIOD_MS) {
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println("PRbpm SpO2%");
display.setTextSize(3);
display.setCursor(0, 10);
display.print(round(pox.getHeart-
Rate()));
display.setCursor(74, 10);
display.println(pox.getSpO2());
display.display();

tsLastReport = millis();
}
}

Perlu diperhatikan bahwa sensor MAX30100 ini menggunakan


tegangan input sebesar 3,3 V.

Pada bagian loop(), layar akan diupdate setiap detik


sedangkan pembacaan sensor tetap berjalan, namun tidak
menggunakan fungsi delay(1000). Jika menggunakan delay,
maka seluruh program akan ditahan selama delay berlangsung.

Dengan metode update tiap interval tanpa menggunakan delay,


kita tetap dapat menjalankan fungsi lain tanpa terganggu.

38
10 - Lux Meter BH1750

10 - LUx meter bh1750

1 Intro
BH1750 adalah sensor tingkat cahaya. Memiliki fungsi yang sama
dengan LDR (Light Dependant Resistor), namun dengan tingkat
akurasi dan output yang lebih baik.

Lux Meter ini menghasilkan tingkat cahaya dalam satuan lux,


sehingga pengukuran tingkat cahaya menjadi lebih akurat dan
presisi.

2 Daftar Komponen

No Nama Item Qty


1 Arduino Uno 1
2 BH1750 Lux Meter Sensor 1
3 OLED 1
4 Breadboard 400 1

39
Starter Kit Arduino | Level 1 Extension - Starlectric

3 Skematik

4 Source Code
#include <Wire.h>
#include <BH1750.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128


#define SCREEN_HEIGHT 64
#define OLED_RESET 4
#define SCREEN_ADDRESS 0x3C

BH1750 sensor;
Adafruit_SSD1306 display(SCREEN_WIDTH,
SCREEN_HEIGHT, &Wire, OLED_RESET);

40
10 - Lux Meter BH1750

void setup() {
Serial.begin(9600);
//inisialisasi OLED
if(!display.begin(SSD1306_SWITCHCAPVCC,
SCREEN_ADDRESS)) {
Serial.println(F("Allocation failed"));
for(;;); // Don't proceed, loop forever
}

display.setTextColor(WHITE,BLACK);
display.clearDisplay();
display.setTextSize(1);
display.println("LUXMETER");
display.display();

Wire.begin();
sensor.begin();
}

void loop() {
unsigned int lux = sensor.readLightLev-
el();
Serial.println(lux);

display.setTextSize(2);
display.setCursor(0, 16);
display.print(" ");
display.setCursor(0, 16);
display.print(lux);
display.print(" LUX");
display.display();
display.setCursor(0, 16);

41
Starter Kit Arduino | Level 1 Extension - Starlectric

display.fillRect(0, 28, 128, 36, BLACK);


// gambar indikator
if(lux > 50)
display.fillRect(0, 61,8, 3, WHITE);
if(lux > 100)
display.fillRect(10, 58,8, 6, WHITE);
if(lux > 200)
display.fillRect(20, 55,8, 9, WHITE);
if(lux > 400)
display.fillRect(30, 52,8, 12, WHITE);
if(lux > 600)
display.fillRect(40, 49,8, 15, WHITE);
if(lux > 800)
display.fillRect(50, 46,8, 18, WHITE);
if(lux > 1000)
display.fillRect(60, 43,8, 21, WHITE);
if(lux > 1200)
display.fillRect(70, 40,8, 24, WHITE);
if(lux > 1400)
display.fillRect(80, 37,8, 27, WHITE);
if(lux > 2000)
display.fillRect(90, 34,8, 30, WHITE);
if(lux > 3000)
display.fillRect(100, 31,8, 33, WHITE);
if(lux > 6000)
display.fillRect(110, 28,12, 36, WHITE);

delay(1000);
}

42
10 - Lux Meter BH1750

Hasil pembacaan sensor sudah langsung dalam bentuk satuan


Lux.

Pada project ini tampilan OLED kita tambahkan dengan


menggambar persegi atau Rectangle. Sehingga kita bisa
mengembahkan project menggunakan OLED dengan
menggambar beberapa bentuk dasar seperti garis, persegi dan
segitiga.

43
Starter Kit Arduino | Level 1 Extension - Starlectric

Klik untuk kunjungi Tokopedia Starlectric

Klik untuk kunjungi Bukalapak Starlectric

Klik untuk kunjungi Shopee Starlectric

Follow kami di :

Klik untuk kunjungi Instagram Starlectric

44
Starlectric

Untuk informasi teknis dan penjualan, hubungi kami di :


phone : 0878-789-78-609

45
Starter Kit Arduino | Level 1 Extension - Starlectric

Nantikan seri lainnya di


Starlectric !

46
Starlectric

47

Anda mungkin juga menyukai