1
Starter Kit Arduino | Level 1 Extension - Starlectric
2
Daftar Isi
Daftar isi
3
Starter Kit Arduino | Level 1 Extension - Starlectric
4
2 Daftar Library
1. Layar OLED
- Adafruit_GFX
- Adafruit_SSD1306
- Adafruit_BusIO
5
Starter Kit Arduino | Level 1 Extension - Starlectric
2 Daftar Komponen
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 }
8
02 - Kontrol LED dengan Remote Infrared
2 Daftar Komponen
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;
11
Starter Kit Arduino | Level 1 Extension - Starlectric
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
12
03 - Sistem Monitor Kelembapan Tanah dengan Pompa Air
2 Daftar Komponen
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.
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.
2 Daftar Komponen
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.
2 Daftar Komponen
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
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;
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;
}
22
05 - People Counter
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
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.
2 Daftar Komponen
24
06 - Jam Digital dengan OLED Display
3 Skematik
4 Source Code
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include "RTClib.h"
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);
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
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
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);
}
}
30
08 - Mini Piano dengan Buzzer
1 Intro
Pada project ini kita akan memanfaatkan Buzzer Passive untuk
menghasilkan suara seperti piano.
2 Daftar Komponen
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
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.
34
09 - Heart Rate dan Oximeter dengan OLED
2 Daftar Komponen
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"
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();
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();
}
}
38
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.
2 Daftar Komponen
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>
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
delay(1000);
}
42
10 - Lux Meter BH1750
43
Starter Kit Arduino | Level 1 Extension - Starlectric
Follow kami di :
44
Starlectric
45
Starter Kit Arduino | Level 1 Extension - Starlectric
46
Starlectric
47