9 Okt 2019

02 - 8 x LED

8 x LED

Pada latihan pertama kamu telah menyelesaikan LED berkedip nyala dan mati. Sekarang saatnya untuk mencoba latihan yang sedikit lebih rumit yaitu dengan menghubunkan delapan LED sekaligus. Latihan ini bagus untuk melatih dalam memahami program dan bagaimana program tersebut berjalan di dalam Arduino.

Untuk mengendalikan beberapa LED, kamu akan belajar beberapa trik pemograman supaya kode kamu terlihat lebih sederhana:
for() loops - digunakan ketika ingin membuat sebuah fungsi berjalan beberapa kali.

arrays[ ] - digunakan untuk mtengatur beberapa parameter dengan mudah dengan mengelompokannya bersama.

Kebutuhan komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 8 x LED
— 8 x 330 Ohm Resistor
— 8 x Kabel Jumper

Perakitan:

Rangkaian:

Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  02 - 8 x LED

  Membuat delapan LED menyala dengan pola yang berbeda-beda.
*/


int ledPins[] = {2,3,4,5,6,7,8,9};   //membuat sebuah array untuk menyimpan nomor pin untuk 8 LED. 
//sebuah array merupakan kumpulan variabel yang dapat di akses dengan nomor index.
//Sebuah daftar dialam array mempunyai nomor index berurutan dimulai dari 0 yang ditulis didalam tanda kurung [ ]. 
//Lihat contoh penggunaannya pada fungsi pinMode() dibawah. 

void setup()
{
  //Set semua 8 pin sebagai OUTPUT - perhatikan bahwa daftar indeks dimulai dari 0.
  pinMode(ledPins[0],OUTPUT);  //ledPins[0] = 2
  pinMode(ledPins[1],OUTPUT);  //ledPins[1] = 3
  pinMode(ledPins[2],OUTPUT);  //ledPins[2] = 4
  pinMode(ledPins[3],OUTPUT);  //ledPins[3] = 5
  pinMode(ledPins[4],OUTPUT);  //ledPins[4] = 6
  pinMode(ledPins[5],OUTPUT);  //ledPins[5] = 7
  pinMode(ledPins[6],OUTPUT);  //ledPins[6] = 8
  pinMode(ledPins[7],OUTPUT);  //ledPins[7] = 9
}

void loop() {
  
  //Pada loop() ini memanggil beberapa fungsi yang sudah dituliskan sebelumnya.
  //Kamu dapat menonaktifkan pemanggilan beberapa fungsi dengan cara merubah menjadi sebuah comment
  //(dengan menuliskan tanda "//" didepan pemanggilan fungsi dibawah ini).
  
  oneAfterAnother();      //Nyalakan semua LED secara bergantian

  oneOnAtATime();         //Nyalakan LED satu per satu secara bergantian

  pingPong();             //Sama dengan oneOnAtATime() tapi berganti arah ketika nyala LED sampai keujung

  marquee();              //Lampu kejar seperti yang ada dipertunjukan teater

  randomLED();            //Membuat LED-LED berkedip secara acak
}



/**********************
 * oneAfterAnother()
 * 
 * Fungsi ini menyalakan semua LED, ada jeda, dan kemudian semua
 * LED mati. Didalam fungsi ini menggunakan kelebihan dari "for() loop" dan 
 * penggunaan array sehingga meeminimalkan penulisan program. 
/***********************/
void oneAfterAnother()
{
  int index;
  int delayTime = 100; //jeda dalam milliseconds untuk berhenti antara LED
                       //rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat

  //Menyalakan semua LED:  
  for(index = 0; index <= 7; index = ++index)  //langkah pada setiap variabel index dari 0 hingga 7
  {
    digitalWrite(ledPins[index], HIGH);
    delay(delayTime);                
  }                                  

  //Mematikan semua LED: 
  for(index = 7; index >= 0; index = --index)  //langkah pada setiap variabel index dari 7 hingga 0
  {
    digitalWrite(ledPins[index], LOW);
    delay(delayTime);
  }               
}

/***********************
 * oneOnAtATime()
 * 
 * Pada fungsi ini akan menyalakan LED seperti berjalan satu arah. 
 * Membuat tiap LED nyala dan kemudian mati sebelum berpindah 
 * ke LED berikutnya.
/**********************/

void oneOnAtATime()
{
  int index;
  int delayTime = 100; //jeda dalam milliseconds untuk berhenti antara LED
                       //rubah menjadi lebih kecil untuk membuat perpindahan lebih cepat

  for(index = 0; index <= 7; index = ++index)   //langkah pada masing-masing LED, dari 0 sampai 7
  {
    digitalWrite(ledPins[index], HIGH);  //menyalakan LED
    delay(delayTime);                    //jeda untuk memperlambat
    digitalWrite(ledPins[index], LOW);   //mematikan LED
  }
}

/***********************
 * pingPong()
 * 
 * Pada fungsi ini akan menyalakan LED seperti berjalan bulak balik. 
 * Tidak ada jeda antara LED yang amti dengan LED yang berikutnya nyala, 
 * sehingga dapat menciptakan pola smooth. .
  */
/**********************/
void pingPong()
{
  int index;
  int delayTime = 100; //jeda dalam milliseconds untuk berhenti antara LED

  for(index = 0; index <= 7; index = ++index)   //langkah pada masing-masing LED, dari 0 hingga 7
  {
    digitalWrite(ledPins[index], HIGH);  //menyalakan LED
    delay(delayTime);                    //jeda untuk memperlambat
    digitalWrite(ledPins[index], LOW);   //mematikan LED
  }

  for(index = 7; index >= 0; index = --index)   //langkah pada masing-masing LED, dari 7 hingga 0
  {
    digitalWrite(ledPins[index], HIGH);  //menyalakan LED
    delay(delayTime);                    //jeda untuk memperlambat
    digitalWrite(ledPins[index], LOW);   //mematikan LED
  }
}

/***********************
 * marquee()
 * 
 * Fungsi ini akan menirukan nyala LED seperti "lampu kejar" yang
 * ada pada pertunjukan teater..
/**********************/
void marquee()
{
  int index;
  int delayTime = 200; //jeda dalam milliseconds untuk berhenti antara LED

  for(index = 0; index <= 3; index++) //langkah dari 0 hingga 3
  {
    digitalWrite(ledPins[index], HIGH);    //menyalakan LED
    digitalWrite(ledPins[index+4], HIGH);  //lewati empat LED, dan nyalakan LED tersebut
    delay(delayTime);                      //jeda untuk memperlambat perpindahan
    digitalWrite(ledPins[index], LOW);     //mematikan LED
    digitalWrite(ledPins[index+4], LOW);   //lewati empat LED, dan matikan LED tersebut
  }
}

/***********************
 * randomLED()
 * 
 * Fungsi ini akan meyalakan LED secara acak. Dapatkah kamu memodifikasi program
 * sehingga jeda waktunya juga secara acak?
/**********************/
void randomLED()
{
  int index;
  int delayTime;

  index = random(8);  //memilih angka secara acak antara 0 sampai 7
  delayTime = 100;

    digitalWrite(ledPins[index], HIGH);  //menyalakan LED
    delay(delayTime);                    //jeda untuk memperlambat
    digitalWrite(ledPins[index], LOW);   //mematikan LED
}

Cara menggunakan:

Ketika pertama Arduino dinyalakan nyala dari ke delapan LED akan membentuk lima pola nyala yang berbeda-beda secara bergantian, mulai dari nyala led yang bergantian, bergeser samapai nyala secara acak. Kamu dapat memilih salah satu pola saja untuk dijalankan secara terus menerus sehingga terlihat lebih bagus, dengan cara mengedit kode di dalam programnya.

03 - Lampu Lalu Lintas Interaktif

Lampu Lalu Lintas Interaktif

Pada latihan ini kamu akan membuat proyek pertama Arduino yang interaktif karena menggunakan komponen inputan berupa push button untuk mengontrol simulasi lampu lalu lintas.

Push Button: yang digunakan pada kit ini mempunyai empat buah kaki yang sebenarnya hanya dua kaki yang akan terhubung ketika kamu menekan tombol push button, tapi terdapat kaki tambahan sebagai pencabangan.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Push Button
— 5 x LED
— 5 x Resistor 330Ω
— 1 x Resistor 10KΩ
— 9 x Kabel Jumper

Perakitan:

Rangkaian:

Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
   03 - Lampu Lalu Lintas Interaktif
   
   Membuat simulasi lampu lalu lintas untuk mobil dan penyebrang pejalan kaki.
*/


int carRed = 7;       //lampu untuk mobil
int carYellow = 6;
int carGreen = 5;

int button = 4;       //pin push button

int pedRed = 3;       //lampu untuk pejalan kaki
int pedGreen = 2;

int crossTime =5000;        //waktu untuk pejalan kaki menyeberang
unsigned long changeTime;   //waktu sejak push button ditekan

void setup() {
    pinMode(carRed, OUTPUT);
    pinMode(carYellow, OUTPUT);
    pinMode(carGreen, OUTPUT);
    pinMode(pedRed, OUTPUT);
    pinMode(pedGreen, OUTPUT);
    pinMode(button, INPUT); 
    digitalWrite(carGreen, HIGH);   //nyalakan LED hijau untuk mobil
    digitalWrite(pedRed, HIGH); 
}

void loop() {
  int state = digitalRead(button);
        //memeriksa apakah push button ditekan dan lebih dari 5 detik sejak push button terakhir ditekan
        if(state == HIGH && (millis() - changeTime)> 5000){
               //memanggil fungsi untuk mengubah nyala LED
               changeLights();
        }
}

void changeLights() {
  digitalWrite(carGreen, LOW);      //LED hijau untuk mobil mati 
  digitalWrite(carYellow, HIGH);    //LED kuning untuk mobil nyala
  delay(2000); //jeda selama 2 detik
    
  digitalWrite(carYellow, LOW);     //LED kuning untuk mobil mati
  digitalWrite(carRed, HIGH);       //LED merah untuk mobil nyala
  delay(1000);                      //tunggu 1 detik sampai aman
    
  digitalWrite(pedRed, LOW);        //LED merah untuk pejalan kaki mati
  digitalWrite(pedGreen, HIGH);     //LED hijau untuk pejalan kaki nyala

  delay(crossTime);     //tunggu untuk waktu yang telah ditentukan
    
  //mengedipkan LED hijau untuk pejalan kaki
        for (int x=0; x<10 cargreen="" carred="" caryellow="" catat="" changetime="millis();" class="language-java" code="" delay="" digitalwrite="" high="" hijau="" kaki="" ke="" kembali="" kemudian="" kuning="" lampu="" loop="" low="" mati="" merah="" mobil="" nyala="" pedgreen="" pedred="" pejalan="" pergantian="" program="" sejak="" terakhir="" untuk="" utama="" waktu="" x="">
INPUT_PULLUP: Semua pin pada Arduino dapat difungsikan sebagai input sebagaimana bisa difungsikan sebagai output. Sebelumnya harus dinyatakan terlebih dahulu pin mana yang akan diset sebagai input dengan menggunakan fungsi pinMode(). Pada fungsi pinMode() menggunakan parameter INPUT_PULLUP bertujuan untuk mengaktifkan internal pull-up resistor di dalam IC mikrokontroller secara kode. Dengan begitu pada perakitan hardwarenya tidak memerlukan resistor yang dihubungkan ke tegangan positif untuk tetap menjaga pin dalam kondisi HIGH ketika push button tidak ditekan.

Cara menggunakan:

Ketika pertama kali dinyalkan LED untuk pejalan kaki yang menyala warna merah dan LED untuk mobil yang menyala warna hijau, artinya mobil yang melintas boleh terus melaju, ketika pejalan kaki hendak menyebrang menekan push button akan merubah LED untuk mobil menjadi yang nyala kuning kemudian merah, sebaliknya dengan pejalan kaki LED hijau yang nyala artinya mobil harus berhenti dan pejalan kaki boleh menyebrang sampai selesai, hingga beberapa saat nyala LED akan kembali pada kondisi awal.

Daftar Komponen

Arduino Kit Pemula



Arduino Kit Pemula dilengkapi dengan berbagai komponen elektronik yang siap mendukung kamu untuk membuat proyek-proyek Arduino menjadi lebih menarik. Kamu dapat mencoba merangkai satu persatu proyek Arduino dari setiap latihan menggunakan komponen yang ada pada kit ini. Untuk mendapatkan Arduino Kit Pemula bisa kamu dapatkan disini.

Arduino — sebuah sistem minimum yang akan menjadi otak dari semua proyek yang akan kamu buat.
Breadboard — sebuah papan percobaan dimana kamu dapat membangun berbagai rangkaian elektronik tanpa harus menyolder dari satu kaki komponen ke kaki komponen lainnya, untuk menghubungkannya hanya cukup menancapkannya pada lubang dari setiap barisnya.
Kontruksi bagian dalam pada sebuah breadboard terlihat seperti pada gambar, dari setiap baris lubang 1 - 30, 5 lubang yang berlabel a - e terhubung semua, begitu juga 5 lubang f - j terhubung semua. Pada bagian kedua sisi lubang yang terdapat label - (negatif) dan + (positif) terbung semua dari ujung kiri sampai ujung kanan. 

Kabel jumper — digunakan untuk menghubungkan tiap kaki komponen yang berjauhan pada rangkaian breadboard, dan untuk menghubungkan dari kaki komponen ke papan Arduino. 


Light Emitting Diode (LED) — merupakan tipe dioda yang dapat berpendar/bercahaya ketika dilalui arus listrik. Seperti semua tipe dioda, arus listrik hanya mengalir satu arah melalui komponen ini. Kamu sering menjumpai LED sebagai indikator pada peralatan elektronik.
Kaki anoda, yang biasanya dihubungkan dengan tegangan positif memiliki kaki yang lebih panjang, sedang kaki katoda ukurannya lebih pendek. 

LED RGB — adalah sebuah LED yang di dalamnya terdapat tiga nyala LED berwarna dasar red-green-blue (merah-hijau-biru), perpaduan dari tiga warna tersebut dengan tingkat kecerahan yang berbeda dapat menghasilkan semua kombinasi warna. 


Liquid Crystal Display (LCD) — merupakan media penampil alfanumerik yang menggunakan kristal cair sebagai medianya. LCD tipe ini terdapat dalam beberapa ukuran dan bentuk. Yang digunakan pada Kit ini mempunyai 2 baris dengan 16 karkter tiap barisnya. 


Buzzer — merupakan komponen elekronika yang berfungsi merubah getaran listrik menjadi getaran suara. Terdapat dua tipe buzzer yaitu buzzer aktif (memproduksi getaran sendiri hanya dengan diberi tegangan 5V) dan buzzer pasif (membutuhkan simulasi pulsa tegangan untuk menghasilkan getaran suara), pada Kit ini menggunakan active buzzer 5V. Kamu dapat menggunakan buzzer untuk menghasilkan music yang sederhana. 


Resistor — berfungsi untuk menghambat aliran listrik pada rangkaian, sehingga dapat menghasilkan perubahan arus dan tegangan. Nilai resistor dinyatakan dalam satuan Ω (ohm). Susunan cincin warna yang melingkar pada bodi resistor menunjukan nilai hambatanya. 


Photoresistor — (disebut juga sebagai LDR - lightdependent resistor) sebuah variabel resistor yang nilai hambatannya bergantung dari intensitas yang diterima pada permukaan sensor tersebut. 


Potensiometer — adalah sebuah resistor yang nilai hambatannya dapat diatur sesuai posisi putaran knob. Ketika pada kedua sisi kaki potensiometer diberi tegangan ground dan positif 5V, maka pada kaki tengahnya akan mengeluarkan variabel tegangan dari 0 - 5V sesuai dengan posisi putaran knob.


Push button — adalah sebuah saklar yang menghubungkan arus pada suatu rangkaian ketika knobnya ditekan. Saklar sangat cocok dipasang pada pin digital input untuk mendeteksi sinyal on/off.
Servo — adalah motor yang mempunyai gearbox dan dapat berputar dengan posisi yang presisi sesuai yang diperintahkan, untuk jenis ini hanya bisa berputar 180 derajat. Putarannya dapat dikontrol dengan memberikan pulsa tegangan dari analog output Arduino, pulsa tegangan tersebut yang memerintahkan servo untuk berputar pada posisi tertentu.


Modul relay — pada dasarnya relay adalah sebuah saklar yang dikontrol secara elektronik, untuk mengubah kondisi saklar menjadi on atau off menggunakan arus listrik yang dikenakan pada lilitan magnet di dalamnya. Pada modul relay ini selain terdapat komponen relay sudah dilengkapi juga dengan komponen tabahan seperti led sebagai indikator, transistor sebagai pengendali, dan terminal, sehngga mudah untuk menggunakannya bersama Arduino dengan tegangan kerja 5V. 


DHT11 — merupakan sensor untuk mengukur suhu dan kelembapan udara sekitar. Output yang keluar dari sensor ini sudah berupa data, sehingga memerlukan penggunaan library pada sketch programnya. Untuk membaca data dari sensor ini hanya memerlukan satu sinyal pin digital dengan pembacaan data tiap 2 detik sekali, serta pin VCC (Power 5V) dan GND (Ground).


Modul Ultrasonik — dapat berfungsi sebagai sensor jarak untuk mengukur jarak dari 2cm - 400cm dan memiliki tingkat akurasi sekitar 3mm. Pada modul ini terdapat sensor ultrasonik penerima, pemancar dan rangkaian kontrol. Hanya terdapat empat pin untuk menghubungkannya dengan Arduino: VCC (Power 5V), Trig (Trigger), Echo (Receive), dan GND (Ground). 


Kabel USB — berfungsi untuk menghubungkan antara Arduino Uno dengan perangkat komputer atau Android (perlu OTG adapter), sebagai jalur pemograman. Melalui kabel USB ini juga berfungsi untuk memberikan sumber tegangan untuk setiap rangkaian proyek yang terhubung dengan Arduino.

Bahasa pemrograman Arduino

Bahasa Pemograman Arduino

Bahasa pemrograman Arduino pada dasarnya menggunakan bahasa pemograman C. Bahasa C sendiri merupakan bahasa tingkat tinggi yang sangat populer dan banyak digunakan oleh para programmer. Dengan demikian aturan penulisan dan penggunaan dari bahasa Arduino akan sama dengan bahasa C. Untuk mempelajari lebih jauh lagi bahasa pemograman Arduino dan perintah-perintah apa saja yang ada pada bahasa pemrograman Arduino kamu bisa membuka disitus resmi Arduino Reference atau mengaksesnya dalam bentuk aplikasi android kamu bisa download Arduino Language Reference.

Structure program

structure

Srtuktur dasar bahasa pemrograman Arduino sangat sederhana hanya terdiri dari dua bagian. Dua bagian tersebut dapat juga disebut sebagai fungsi utama yaitu setup() dan loop().
void setup( )
{
  //Statement;
}

void loop( )
{
  //Statement;
}
dimana setup() adalah bagian untuk inisialisasi yang hanya dijalankan sekali di awal program, sedangkan loop() untuk mengeksekusi bagian program yang akan dijalankan berulang-ulang untuk selamanya.

setup()

Fungsi setup() hanya di panggil satu kali ketika program pertama kali dijalankan. Ini digunakan untuk pendefinisikan mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang dijalankan.
void setup()
{
  pinMode(13,OUTPUT); //mengset ‘pin’ 13 sebagai output
}

loop()

Setelah menjalankan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop() terus menerus.
void loop()
{
   digitalWrite(13, HIGH);  //nyalakan ‘pin’ 13
   delay(1000);      //pause selama 1 detik
   digitalWrite(13, LOW);  //matikan ‘pin’ 13
   delay(1000);      ///pause selama 1 detik
}

function

Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai statement yang akan di eksekusi ketika function tersebut di panggil. Fungsi void setup() dan void loop() telah di bahas di atas dan pembuatan fungsi yang lain akan di bahas selanjutnya.
type functionName(parameters)
{
  //Statement;
}
Contoh:
int delayVal() 
{ 
  int v; //membuat variable ‘v’ bertipe integer 
  v = analogRead(pot); //baca harga potentiometer 
  v /= 4; //konversi 0-1023 ke 0-255 
  return v; //return nilai v 
}
Pada contoh di atas fungsi tersebut memiliki nilai balik int (integer), karena kalau tidak menghendaki adanya nilai balik maka type function harus void.

{ } curly braces

Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika memprogram dan progremer lupa memberi curly brace tutup maka ketika di compile akan terdapat laporan error.
type function()
{
  statements;
}

; semicolon

Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak akan di compile sehingga tidak mempengaruhi besar program yang di buat untuk di masukan dalam board arduino.
int x = 13;   //declares variable 'x' as the integer 13

/*…*/ blok comment

Semicolon harus di berikan pada setiap statement program yang kita buat ini merupakan pembatas setiap statement program yang di buat.
/* this is an enclosed block comment
   don't forget the closing comment
   they have to be balanced!
*/

// line comment

Sama halnya dengan block comments, line coments pun sama hanya saja yang dijadikan komen adalah perbaris.
//this is a single line comment

Variable

Variable adalah sebuah penyimpan nilai yang dapat digunakan dalam program. Variable dapat di rubah sesuai dengan instruksi yang kita buat. Ketika mendeklarisikan variable harus di ikut sertakan type variable serta nilai awal variable.
type variableName = 0;
Contoh:
//mendefinisikan sebuah variable bernama inputVariable dengan nilai awal 0
int inputVariable = 0;

//menyimpan nilai yang ada di analog pin 2 ke inputVariable
inputVariable = analogRead(2);

Variable scope

Sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara local di dalam sebuah function, dan terkadang di dalam sebuah block statement pengulangan. Sebuah variable global hanya satu dan dapat digunakan pada semua block function dan statement di dalam program. Variable global di deklarasikan pada awal program sebelum fungsi setup(). Sebuah variable local di deklarasikan di setiap block function atau di setiap block statement pengulangan dan hanya dapat digunakan pada block yang bersangkutan saja. Contoh penggunaan:
int value; //‘value’ adalah variable global dan dapat di gunakan pada semua block funtion 
 
void setup() 
{ 
  //no setup needed 
} 

void loop() 
{ 
  for (int i=0; i<20 code="" dalam="" dapat="" di="" f="" float="" gunakan="" hanya="" i="" local="" pengulangan="" saja="" sebagai="" variable="">

Data type

byte

type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki range 0 – 255.
byte biteVariable = 160; //mendeklarasikan ‘biteVariable’ sebagai type byte

integer

Integer merupakan tipe data utama untuk menyimpan nilai bilangan bulat tanpa koma. Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai -32.768.
int integerVariable = 1500; //mendeklarasikan ‘integerVariable’ sebagai type integer

long

Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan range 2.147.483.647 sampai -2.147.483.648.
long longVariable = 900000; //mendeklarasikan ‘longVariable’ sebagai type long

float

Float adalah tipe data yang dapat menampung nilai decimal, float merupakan penyimpan yang lebih besar dari integer dan dapat menyimpan sebesar 32-bit dengan range 3.4028235E+38 sampai -3.4028235E+38.
float floatVariable = 3.14; //mendeklarasikan ‘floatVariable’ sebagai type float

array

Array adalah kumpulan nilai yang dapat di akses dengan nomor index, nilai yang terdapat dalam array dapat di panggil dengan cara menuliskan nama array dan nomor index. Array dengan index 0 merupakan nilai pertama dari array. Array perlu di deklarasikan dan kalau perlu di beri nilai sebelum digunakan.
int myArray[] = {value0, value1, value2 . . . } 
Contoh penggunaan aray:
int myArray[] = {2,4,6,8,10}
x = myArray[5]; //x sekarang sama dengan 10

Operator aritmetic

aritmetic

operator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan pembagian.
y = y + 3;
x = x - 8;
i = i * 5;
r = r / 9;
Dalam menggunakan operan aritmatik harus hati-hati dalam menentukan tipe data yang digunakan jangan sampai terjadi overflow range data.

compound assignments

Compound assignments merupakan kombinasi dari aritmatic dengan sebuah variable. Ini biasanya dipakai pada pengulangan.
x ++; //sama seperti x = x + 1 atau menaikan nilai x sebesar 1  
x --; //sama seperti x = x - 1 atau mengurangi nilai x sebesar 1  
x += y; //sama seperti x = x + y  
x -= y; //sama seperti x = x – y
x *= y; //sama seperti x = x * y
x /= y; //sama seperti x = x / y

comparison

Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true. Statement ini banyak digunakan dalam operator bersyarat.
x == y; //x sama dengan y
x != y; //x tidak sama dengan y
x < y;  //x leboh kecil dari y
x > y;  //x lebih besar dari y
x <= y; //x lebih kecil dari sama dengan y
x >= y; //x lebih besar dari sama dengan y

Logic operator

Operator logical digunakan untuk membandingkan dua expresi dan mengembalikan nilai balik benar atau salah tergantung dari operator yang digunakan. Terdapat 3 operator logical AND,OR, dan NOT, yang biasanya digunakan pada if statement.
Contoh penggunaan:

Logical AND
if(x>0 && x<5 apabila="" benar="" bernilai="" code="" kedua="" operator="" pembanding="" terpenuhi="">
Logical OR
if(x>0 || y>0)  //bernilai benar apabila salah satu dari operator pembanding terpenuhi
Logical NOT
if(!x > 0)    //benilai benar apabila ekspresi operator salah
Constants

Constants

Arduino mempunyai beberapa variable yang sudah di kenal yang kita sebut konstanta. Ini membuat memprogram lebih mudah untuk di baca. Konstanta di kelasifikasi berdasarkan group.

true/false

Merupakan konstanta Boolean yang mendifinisikan logic level. False dapat didefinisikan sebagai 0 dan True sebagai 1.
if(b == TRUE);
{
  //doSomething
}

high/low

Konstanta ini digunakan untuk menentukan kondisi pin pada level HIGH atau LOW ketika membaca dan menulis dari/ke pin digital. HIGH didefinisikan sebagai logic 1, ON, atau 5 volt sedangkan LOW sebagai logic 0, OFF, atau 0 volt.
digitalWrite(13, HIGH);

input/output

Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital, sebagai INPUT atau OUTPUT.
pinMode(13, OUTPUT);

Flow control

if

Operator if mengetes sebuah kondisi apakah sudah tercapai/benar atau belum, dicontohkan seperti pengetesan nilai analog apakah sudah berada di bawah nilai yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris program yang ada dalam brackets kalau tidak terpenuhi maka akan melewati baris program yang ada dalam brackets.
if(someVariable ?? value)
{
  //DoSomething;
}

if....else

Operator if…else mengetes sebuah kondisi apabila tidak sesuai dengan kondisi maka akan mengeksekusi baris program yang ada di else.
if(inputPin == HIGH)
{
  //Laksanakan rencana A;
}
else
{
  //Laksanakan rencana B;
}

for

Operator for digunakan untuk mengulang blok statement di dalam bracket, beberapa kali sesuai dengan jumlah yang ditentukan. Setiap for() loop mempunyai tiga parameter dan dipisahkan menggunakan titik koma (;):
for(initialization; condition; expression)
{
  //doSomethig;
}
Contoh penggunaan:
for(index=0; index<=3; index++)
{
  counter++;
}
1. index=0; Sesuatu yang dikerjakan sebelum dimulai: Membuat index = 0.
2. index<=3; Operasi logika yang dites, selama hasilnya benar (true) akan terus looping: Jika index lebih kecil atau sama dengan 3, akan menjalankan kode yang ada di dalam bracket {}. Ketika index = 4, akan keluar dari loop dan melanjutkan baris kode selanjutnya di dalam sketch.
3. index++ Sesuatu yang dilakukan setelah menjalankan satu baris statement: Meletakan "++" setelah sebuah variabel bermaksud menambahkan variabel tersebut dengan satu. Dapat juga menggunakan "index = index + 1".

while

Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai ekspresi sebagai kondisi pengulangan benilai salah.
while(someVariable ?? value)
{
  //doSomething;
}

do… while

Sama halnya dengan while() hanya saja pada operator do…while tidak melakukan pengecekan pada awal tapi di akhir, sehingga otomatis akan melakukan satu kali baris perintah walaupun pada awalnya sudah terpenuhi.
do
{
  //doSomething;
}
while (someVariable ?? value);

Digital I/O

Board Arduino mempunyai jumlah pin yang berlabel digital D0 - D13 sebanyak 14 dengan pengalamatnya 0 - 13. Namun apabila pin digital yang kita butuhkan masih kurang, kita masih bisa menambahnya dengan menggunakan pin yang berlabel analog A0 - A5 difungsikan sebagai pin digital input/output dengan pengalamatnya 14 - 19. Ada saat tertentu pin digital 0 dan 1 tidak bisa digunakan karena di pakai untuk komunikasi serial, sehingga harus hati-hati dalam pengalokasian I/O.

pinMode(pin, mode)

Biasa digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai INPUT atau OUTPUT. Arduino digital pins secara default di konfigurasi sebagai input sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT);  //mengeset pin sebagai output
digitalWrite(pin, HIGH);  //mengeset keluaran nilai HIGH (5 volt) pada pin

digitalRead(pin)

Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
value = digitalRead(pin);  //mengeset ‘value’ sama dengan pin

digitalWrite(pin, value)

Digunakan untuk mengeset pin yang kita kehendaki dalam kondisi level tegangan HIGH atau LOW (nyala atau mati). Pin digital arduino mempunyai 14 ( 0 – 13 ).
digitalWrite ( pin, HIGH );  //set pin ke kondisi HIGH

Analog I/O

Selain pin digital Arduino dilengkapi juga oleh pin analog yang berfungsi untuk membaca input tegangan variabel antara 0 - 5 volt dengan resolusi ADC (Analog to Digital) 10-bit. Pada Arduino ada 6 pin yang berlabel analog input dengan pengalamatan A0 - A5. Tidak seperti pin digital yang dapat di fungsikan selain sebagai digital input dapat juga sebagai digital output, namun pada pin analog hanya dapat berfungsi sebagai analog input saja, apabila kamu ingin membuat Arduino mengeluarkan output tegangan analog kamu masih bisa melakukannya dengan menggunakan pin digital yang berlabel PWM (3,5,6,9,10,11), sejatinya tegangan analog yang dikeluarkan Arduino adalah dengan memanipulasi output digital secara pulsa.

analogRead(pin)

Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin (0 - 5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023.
value = analogRead(pin);  //mengeset ‘value’ sama dengan nilai analog pin

analogWrite(pin, value)

Mengirimkan nilai analog dengan metoda Pulse Width Modulation (PWM) ke pin yang berlabel PWM (3,5,6,9,10,11). Nilai yang dapat digunakan adalah dari 0 - 255.
analogWrite(pin, value);  //mengeluarkan nilai tegangan analog ke pin

Time

delay(ms)

Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam millisecond.
delay(1000);  //menunggu selama satu detik

millis()

Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer.
value = millis();  //set ‘value’ equal to millis()

Math

min(x,y)

Membadingkan dua variable dan akan mengembalikan nilai yang paling kecil.
value = min(value, 100);  //set ‘value’ sebagai nilai yang paling kecil dari kedua nilai

max(x,y)

Membadingkan dua variable dan akan mengembalikan nilai yang paling besar.
value = max(value, 100);  //set ‘value’ sebagai nilai yang paling besar dari kedua nilai 

Random

randomSeed(seed)

Mengeset sebuah nilai sebagai titik awal fungsi random().
randomSeed(value);   //mengeset 'value' sebagai random seed

random(max)


random(min,max)

Menghasilkan sebuah bilangan acak pada range yang di batasi oleh angka min dan max.
value = random(100, 200);  //mengeset 'value' ke nilai acak antara 100 - 200

Serial

Serial.begin(rate)

Statement ini digunakan untuk mengaktifkan komunikasi serial dan mengatur baudrate. bauderate yang standar biasa digunakan dengan komputer adalah 9600bps.
void setup()
{
  Serial.begin(9600);  //open serial port and set baudrate 9600 bps
}

Serial.println(data)

Mengirimkan data ke serial port, di ikuti oleh karakter carriage return dan line feed (CR dan LF) atau yang kita kenal kode untuk Enter. Perintah ini mempunyai fungsi yang sama dengan Serial.print() namun lebih sering digunakan karena setelah selesai data di kirim di ikuti enter untuk data selanjutnya akan di tampilkan pada baris/alinea baru di bawahnya sehingga bisa memudahkan dalam pembacaan data pada serial monitor.
Serial.println(100);  //mengirimkan 100 dan diakhiri

Instal Bluino Loader

Instal Aplikasi Bluino Loader

Pendahuluan

Sebelum kamu menghubungkan Arduino dengan smartphone Android. Terlebih dahulu kamu perlu instal aplikasi Bluino Loader dan pastikan smartphone kamu mendukung USB OTG. Apabila sudah mendukung dan telah menginstal aplikasi Bluino Loader, kamu memerlukan kabel USB OTG untuk menghubungkan antara Arduino dengan smartphone Android.

Jangan khawatir jika smartphone Android kamu belum mendukung USB OTG, kamu masih dapat mengupload sketch dari smartphone Android dengan cara lain yaitu melalui koneksi bluetooth dan kamu hanya memerlukan hardware tambahan modul Bluetooh HC-05.

Instal Aplikasi

Mulai dengan membuka playstore pada kolom pencarian ketik "Bluino Loader" atau kamu dapat klik link di bawah dan buka dengan playstore.

Bluino Loader!


Setelah Bluino Loader selesai didownload dan telah terinstal, langkah selanjutnya coba untuk buka file baru dan tunggu sebuah proses ekstrak tools selesai, sebelumya pastikan kamu memiliki ruang penyimpanan yang kosong sekitar 250MB.


Dengan menginstal Bluino Loader pada Android, kamu tidak perlu menginstal driver hardware karena sudah mendukung untuk board Arduino dengan driver USB: CDC/ACM, FTDI (RedBoard), PL2303, CH34X and CP210X.

Upload Blink

Akhirnya sekarang waktunya membuka aplikasi Bluino Loader. Kamu akan diperlihatkan dengan sebuah interface terlihat seperti berikut:


Mari kita coba upload sebuah sketch Blink untuk memastikan bahwa setup Arduino benar-benar berfungsi. Geser layar dari kiri ke kanan untuk membuka menuDrawer pada Bluino Loader, kemudian pilih Open file > examples > 01.Basics > Blink untuk membukanya.

Sebelum kita dapat mengirimkan kode program kedalam Arduino, ada beberapa pengaturan yang perlu dilakukan.

Pilih tipe Board

Langkah ini diperlukan untuk memberitahu Bluino Loader, jenis board apa yang sedang kita gunakan. Geser layar dari kanan ke kiri unutk membuka menudrawer setting. Kemudian pilih Board Arduino yang sesuai yaitu UNO/Bluino dan pastikan pada mode USB mode.


Upload!

Setelah selesai dengan pengaturan, Sekarang kamu siap untuk upload kode program! Klik ikon Upload (tanda panah kekanan) dan biarkan Bluino Loader melakukan compile dan upload kode kamu. Biasanya ini memerlukan waktu 10-20 detik untuk menyelesaikan proses tersebut. Ketika kode telah berhasil terisi kedalam Arduino, kamu akan melihat tampilan seperti ini:


Dan jika kamu melihat ke board Arduino, kamu akan melihat sebuah LED yang terhubung dengan pin 13 menyala selama satu detik, mati selama satu detik, menyala selama satu detik, dan terus seperti itu berulang-ulang. Jika kamu ingin mengatur waktu jeda ketika LED tersebut berkedip, coba untuk merubah nilai “1000” pada baris kode delay(1000);.

Ada sesuatu yang salah?

Uphs! Jika kamu tidak melihat pesan “Done Uploading”, dan terdapat sebuah error, ada beberapa yang perlu kita periksa kembali.

Jika kamu mendapatkan keterangan error “Error Upload” pada layar kamu.


Kemungkinan pemilihan board dan serial port yang tidak cocok. Yakinkan tipe Arduino UNO telah dipilih (pada “Board” menu).

Instal Arduino IDE

Instal software Arduino IDE

Pendahuluan

Pada bagian ini kamu akan diajak untuk download, instal, dan pengetesan software Arduino (disebut juga sebagai Arduino IDE - singkatan dari Integrated Development Environment). sebelum instalasi ada beberapa yang kamu akan perlukan:

— Sebuah komputer (Windows, Mac atau Linux).
— Sebuah board Arduino.
— Kabel USB A-to-B.

Pertama pergi ke halaman Arduino download software dan dapatkan software Arduino versi terbaru yang sudah release dan stabil. pastikan versi yang didownload sesuai dengan sistem operasi dikomputer kamu.

Download Arduino IDE

Proses instalasi cukup mudah, namun disesuaikan dengan sistem operasi pada komputer kamu. Berikut adalah beberapa tip untuk membantu kamu.

Windows

Versi windows dari software Arduino memberikan dua pilihan: sebuah installer atau zip file. Installer sangat mudah hanya dengan mendownloadnya kemudian jalankan executable file untuk memulai instalasi kemudian ikuti langkah demi langkah sampai selesai.


Apabila kamu memilih untuk mendownload versi zip file dari software Arduino. Kamu perlu mengekstrak file ke lokasi folder yang kamu pilih, dan software Arduino langsung bisa digunakan tanpa harus melakukan instalasi.

Setelah selesai melakukan proses instalasi software arduino apabila kamu menggunakan versi Arduino Uno yang memakai CH340 sebagai chip USB to serial maka kamu perlu menginstal driver tambahan supaya board Arduino kamu dapat terbaca oleh komputer, sedangkan jika kamu menggunakan versi Arduino Uno R3 yang memakai Atmega16U2 sebagai chip USB to serial maka board Arduino kamu bisa langsung digunakan dan terbaca oleh komputer.

Mac

Software Arduino untuk versi Mac hanya terdapat versi zip file. Setelah selesai mendownloadnya, kemudian double-click .zip file untuk mengekstraknya.


Selanjutnya kamu perlu menyalin Arduino application ke dalam folder Application untuk menyelesaikan proses instalasi.

Linux

Sebagai pengguna Linux tidak heran lagi kalau ada banyak versi Distro Linux, masing-masing dengan proses instalasi yang berbeda. Simak pada bagian Linux dari tutorial Instalasi Arduino disitus Arduino untuk beberapa link yang dapat membantu untuk bermacam-macam distribusi Linux.

Bagi pengguna Ubuntu dan Debian, instalasi dapat dilakukan semudah menjalankan "apt-get", dengan perintah seperti:

11 - Indikator Suhu

Indikator Suhu

Merupakan latihan lanjutan dari latihan sebelumnya mengunakan sensor DHT11 untuk mengukur suhu dan kelembaban. Pada latihan sebelumnya besarnya suhu yang terukur hanya bisa dilihat melalui serial monitor, kali ini dengan menambahkan tiga buah LED kamu dapat membuat sebuah indikator sebagai visual secara langnsung untuk menunjukan apakah suhu saat ini dingin, sedang atau cukup panas dengan melihat jumlah LED yang menyala.

Kebutuhan Komponen:


— 1 x Arduino UNO
— 1 x Breadboard
— 1 x DHT11
— 3 x LED
— 3 x Resistor 330Ω
— 8 x Kabel Jumper

Perakitan:

Rangkaian:


Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  11 - Indikator Suhu

  Membuat program cara membaca data dari sensor suhu dan kelembaban DHT11,
  kemudian menampilkannya pada Serial Monitor.
*/

#include "DHT.h"        // menyertakan library untuk menggunakan sensor DHT11

#define DHTPIN 8        // pin 8 yang dihubungkan dengan sensor
#define DHTTYPE DHT11   // jenis sensor yang digunakan yaitu DHT-11

DHT dht(DHTPIN, DHTTYPE);  // membuat sebuah objek untuk sensor, serta menentukan pin dan tipe sensor yg digunakan

const float baselineTemp = 30.0;  // patokan suhu ruangan dalam Celcius

void setup() {
  Serial.begin(115200);             // memulai komunikasi dengan serial monitor
  dht.begin();    // memulai komunikasi dengan sensor

  // set semua pin LED sebagai output
  // fungsi for() memperhemat penulisan program
  for (int pinNumber = 2; pinNumber < 5; pinNumber++) {
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
  }
}

void loop() {
  // Membaca suhu dalam Celsius (the default)
  float temperature = dht.readTemperature();

  // Periksa jika terjadi kegagalan dalam pembacaan dan keluar sesegara mungkin untuk membaca ulang.
  if (isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C ");
  
  // jika suhu ruangan sekarang lebih rendah dari baseline
  // semua LED mati
  if (temperature < baselineTemp + 2) {
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  } // ijika suhu naik antara 2-4 derajat, satu LED nyala
  else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) {
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  } // jika suhu naik antara 4-6 derajat, dua LED nyala
  else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) {
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
  } // jika suhu naik lebih dari 6 derajat, semua LED nyala
  else if (temperature >= baselineTemp + 6) {
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
  }
  delay(2000);
}

Cara Menggunakan:

Arduino pertama dinyalakan akan berusa membaca data pada sensor DHT11, pastikan data dapat terbaca dan tidak terjadi kegagalan pembacaan, dengan cara melihatnya melalui serial monitor. Ketika Arduino berhasil membaca data sensor DHT11 akan menyalkan jumlah LED sesuai dengan kondisi suhu diruangan tersebut.

7 Okt 2019

19 - Game Tebak Kata

Game Tebak Kata

Setelah kamu selesai membuat sebuah permain bernama "Simon Says", kali ini kamu akan membuat permainan yang tidak kalah menarik, game ini harus dimainkan oleh dua orang. Untuk memainkannya salah seorang memegang LCD dan papan Arduino dan diletakan di atas kepala sehingga tidak terlihat. Pada layar LCD akan menampilkan angka penghitung mundur yang singkat kemudian menampilkan sebuah kata. Pemain yang lain berada didepan orang pertama tadi yang bisa melihat kata apa yang muncul pada LCD, kemudian berusaha memberikan clue pada orang pertama untuk bisa menebak kata dengan benar. Jika tebakannya benar orang yang pertama bisa menekan push buton yang ada pada papan breadboard dan melanjutkan ke tebakan selanjutnya.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD
— 1 x Potensiometer
— 1 x Buzzer
— 1 x Push Button
— 1 x Resistor 330Ω
— 20 x Kabel Jumper

Perakitan:

Rangkaian:



Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  19 - Game Tebak Kata

  Ini merupakan versi DIY dari sebuah permainan tebak-tebakan. Untuk memainkannya salah seorang memegang LCD dan papan Arduino
  dan diletakan diatas kepala sehingga tidak terlihat. Pada layar LCD akan menampilkan angka penghitung mundur yang singkat
  kemudian menampilkan nama-nama hewan. Pemain yang lain berada didepan orang pertama tadi yang bisa melihat kata apa 
  yang muncul pada LCD, kemudian berusaha memberikan petunjuk pada orang pertama untuk bisa menebak kata dengan benar.
  Jika tebakannya benar orang yang pertama bisa menekan push button yang ada pada papan breadboard dan melanjutkan ke tebakan selanjutnya.
*/


#include             // menyertakan library liquid crystal yang berisi kumpulan perintah untuk menampilkan tulisan pada layar LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);     //memberitahu Arduino pin-pin mana saja yang dihubungkan ke LCD

int buttonPin = 7;                    //pin yang dihubungkan dengan push button
int buzzerPin = 6;                    //pin yang dihubungkan dengan buzzer
int buttonPressTime = 0;              //variabel untuk menyimpan berapa waktu yang tersisa bagi pemain untuk menebak kata
                        
long timeLimit = 15000;               //batas waktu bagi pemain untuk menebak setiap kata
long startTime = 0;                   //digunakan untuk mengukur waktu yang telah berlalu untuk setiap kata
int roundNumber = 0;                  //terus melacak RoundNumber sehingga dapat ditampilkan di akhir permainan
const int arraySize = 25;

const char* words[arraySize] = {"rusa", "kambing", "beruang", "angsa", "anjing", "kucing", "tupai", "burung", "gajah", "kuda",
  "banteng", "jerapah", "sapi", "kelelawar", "sigung", "kura-kura", "paus", "badak", "singa", "monyet",
  "katak", "buaya", "kanguru", "kuda nil", "kelinci"};
 
int sequence[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};     //mulai dengan daftar array full dari 0s

void setup() {

  pinMode(buttonPin, INPUT_PULLUP);       //atur pin push button sebagai input

  lcd.begin(16, 2);                       //memberi tahu ke library LCD untuk ukuran layar yang digunakan

  generateRandomOrder();                  //memanggil fungsi untuk menghasilkan angka array secara acak dari 1-25 yang akan menentukan urutan kata-kata yang ditampilkan
  
  showStartSequence();                    //menampilkan tulisan ketika start sequence

}

void loop() {
  
  for(int i=0; i timeLimit){         //Jika batas waktu habis sebelum menekan push button
          gameOver();                                 //game akan berakhir
        }

        if(digitalRead(buttonPin) == LOW){
            tone(buzzerPin, 272, 1);
        }
        
      }                       //keluar dari loop ini ketika push button ditekan

      delay(500);             //jeda beberapa saat sebelum melanjutkan ke babak selanjutnya, sehingga penekanan push botton tidak terbaca dua kali
      
    }
  //jika kamu selesai menebak ke 25 kata
  winner();   //tampilkan tulisan You Win
}


//--------------FUNCTIONS------------------------------

//DISPLAYS A COUNTDOWN TO START THE GAME
void showStartSequence(){
  
  lcd.clear();                  //bersihkan layar LCD
  
  lcd.setCursor(0,0);           //pindah kursor ke pojik kiri atas
  lcd.print("Katagori:");       //tampilkan tulisan "Katagori:"
  
  lcd.setCursor(0,1);           //move the cursor to the bottom left corner
  lcd.print("Hewan");           //tampilkan tulisan "Hewan:"
  
  delay(2000);                  //tunggu 2 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("Siap!");           //tampilkan tulisan "Siap!"
  delay(1000);                  //tunggu 1 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("3");               //tampilkan "3"
  delay(1000);                  //tunggu 1 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("2");               //tampilkan "2"
  delay(1000);                  //tunggu 1 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("1");               //tampilkan "1"
  delay(1000);                  //tunggu 1 detik
}

//GERNATES A RANDOM ORDER FOR THE WORDS TO BE DISPLAYED
void generateRandomOrder(){
  
  randomSeed(analogRead(0));            //reset random seed (Arduino perlu ini untuk menghasil nomor secara acak)
  
  for (int i = 0; i < 24; i++){         //lakukan langkah ini sampai 25 posisi terpenuhi
    
    int currentNumber = 0;              //variabel untuk menyimpan nomor saat ini
    boolean match = false;              //apakah currentNumber cocok dengan nomor sebelumnya?

    //menghasilkan nomor acak sampai kamu menghasilkan nomor yang tidak cocok dengan nomor yang lain di dalam array
    do {                                       
      currentNumber = random(0,arraySize);      //menghasilkan nomor acak dari 1-25
      match = false;                            //kita belum memeriksa kecocokan, jadi mulailah dengan asumsi bahwa itu tidak cocok
      for (int i = 0; i < arraySize; i++){      //untuk semua 25 nomor didalam array
        if (currentNumber == sequence[i]){      //currentNumber cocok dengan nomor mana saja?
          match = true;                         //jika sama, rubah variabel match ke kondisi true
        }
      }
    } while(match == true);                     //jika variabel match berisi true, menghasilkan nomor acak yang lain dan ulangi lagi
    sequence[i] = currentNumber;                //jika variabel match berisi false, kemudian tambahkan pada sequence
  }
}

//GAME OVER
void gameOver(){
  lcd.clear();                    //bersihkan layar LCD
  
  lcd.setCursor(0,0);             //pindah kursor ke pojok kiri atas
  lcd.print("Game Over");         //tampilkan "Game Over"
  
  lcd.setCursor(0,1);             //pindah kursor ke baris bawah
  lcd.print("Score: ");           //tampilkan tilisan "Score:"
  lcd.print(roundNumber);         //tampilkan nilai score (nomor babak adalah sama dengan nilai score)
  
  //mainkan musik untuk kekalahan
  tone(buzzerPin, 130, 250);      //E6
  delay(275);
  tone(buzzerPin, 73, 250);       //G6
  delay(275);
  tone(buzzerPin, 65, 150);       //E7
  delay(175);
  tone(buzzerPin, 98, 500);       //C7
  delay(500);

  while(true){}                   //berhenti di loop ini seterusnya
}

//WINNER
void winner(){
  lcd.clear();                    //bersihkan layar LCD
  
  lcd.setCursor(7,0);             //pindah kursor ke tengah atas
  lcd.print("YOU");               //tampilkan "You"
  
  lcd.setCursor(7,1);             //pindah kursor ke tengah bawah
  lcd.print("WIN!");              //tampilkan "WIN!"

  //mainkan musik 1Up
  tone(buzzerPin, 1318, 150);     //E6
  delay(175);
  tone(buzzerPin, 1567, 150);     //G6
  delay(175);
  tone(buzzerPin, 2637, 150);     //E7
  delay(175);
  tone(buzzerPin, 2093, 150);     //C7
  delay(175);
  tone(buzzerPin, 2349, 150);     //D7
  delay(175);
  tone(buzzerPin, 3135, 500);     //G7
  delay(500); 

  while(true){}                   //berhenti di loop ini seterusnya
}

Cara menggunakan:

Permainan dimulai dengan tampil tulisan "Katagori: Hewan" dan penghitung mundur untuk bersiap-siap. Ketika babak pertama dimulai kata yang harus ditebak muncul serta penghitung mundur muncul pada layar LCD. Saat push button ditekan sebelum batas waktu habis kata baru akan muncul. Jika kamu menang atau kalah akan memainkan musik pendek.

20 - Kunci Pengaman Ultrasonik

Kunci Pengaman Ultrasonik

Kamu hampir menyelesaikan semua latihan pada modul aplikasi ini, sekarang waktunya mengerjakan latihan terakhir membuat Arduino sebagai kunci pengaman Tidak seperti kunci pengaman pada umumnya yang sering kamu lihat seperti menggunakan sidik jari untuk membuka brankas, atau menggunakan sebuah kartu RFID untuk membuka pintu. Kali ini kamu menggunakan sensor yang cukup murah harganya menggunakan komponen yang ada pada kit ini sensor jarak ultrasonik HC-SR04, prinsip kerjanya adalah sensor mendeteksi kombinasi pengukuran jarak yang dimasukan pengguna dengan menggerak-gerakan tangan didepan sensor kemudian apabila sesuai akan mengaktifkan sebuah relay untuk menyalakan peralatan kunci elektronik sehingga pintu terbuka.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD 1602
— 1 x HC-SR04 Ultrasonik
— 1 x Potensiometer
— 1 x Modul Relay
— 1 x Resistor 330Ω
— 23 x Kabel Jumper

Perakitan:

Rangkaian:

Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  20 - Kunci Pengaman Ultrasonik

  Menggunakan sensor jarak ultrasonik untuk mendeteksi kombinasi pengukuran jarak,
  kemudian dapat mengaktifkan sebuah relay untuk menyalakan peralatan kunci.
  LCD digunakan sebagai antarmuka memasukan kombinasi pengukuran jarak
*/


#include        //librarry liquid crystal kumpulan perintah untuk menampilakan karakter pada layar LCD

int pin[] = {20, 15, 20, 25};    //ini adalah kombinasi "PIN" (jarak dalam cm) yang digunakan untuk membuka kunci
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

int trigPin = 6;           //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 7;           //hubungkan dengan pin echo pada sensor jarak     

void setup() {
  Serial.begin(115200);       //memulai komunikasi serial
  lcd.begin(16, 2);           //memberitahu libarry LCD bahwa kita menggunakan layar LCD berukuran lebar 16 karakter dan tinggi 2 karakter
  lcd.clear();                //membersihkan layar

  pinMode(trigPin, OUTPUT);   //pin trigger mengeluarkan pulsa listrik
  pinMode(echoPin, INPUT);    //pin echo akan mengukur durasi pulsa balik yang dikeluarkan dari sensor
}

void loop() {
  if (getDistance()<10 10cm="" 1="" accept="0;" ada="" adel="" antara="" apakah="" attempt="" berada="" checkpin="" dapat="" delay="" detik="" dibawah="" digunakan="" et="" hasil="" int="" jeda="" jika="" kombinasi="" lamanya="" lcd.clear="" lcd.print="" lcd.setcursor="" maka="" masukan="" memasukan="" memeriksa="" mencoba="" mengetahui="" menyimpan="" mulai="" nilai="" one="" penghalang="" pengukuran="" pin="" position="" ready...="" ready="" setiap="" t="4;" tiap="" toleransi="" untuk="" user="" void="" ya="">>>>____");
  attempt[0]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print(" Position Two ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>____");
  attempt[1]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print("Position Three ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>>>>>__");
  attempt[2]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print(" Position Four ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>>>>>>>>>");
  attempt[3]=getDistance();
  delay(adel);
  lcd.clear();
  lcd.print("Checking ... "); //menampilkan tulisan sebagai efek visual 
  delay(2000);
  lcd.clear();
 
  //menampilkan kombinasi masukan user pada monitor serial untuk debugging
  for (int z=0; z<4 attempt="" bandingkan="" dalam="" delay="" dengan="" ditetapkan="" if="" integer="" memberikan="" nilai="" sekarang="" serial.println="" sudah="" t="" toleransi="" yang="" z="">=(pin[0]-t) && attempt[0]<=(pin[0]+t)) { accept++; }
  if (attempt[1]>=(pin[0]-t) && attempt[1]<=(pin[0]+t)) { accept++; }
  if (attempt[2]>=(pin[0]-t) && attempt[2]<=(pin[0]+t)) { accept++; }
  if (attempt[3]>=(pin[0]-t) && attempt[3]<=(pin[0]+t)) { accept++; }
  if (accept==4) {
    //kombinasi masukan PIN benar
    lcd.setCursor(0,0);
    lcd.print(" * Accepted * ");
    //here you would enter code to run when the switch was successfully activated
    delay(2000);
  }
  else if (accept!=4) {
    //kombinasi masukan PIN salah
    lcd.setCursor(0,0);
    lcd.print(" * DENIED * ");
    //here you would enter code to run when the switch was unsuccessfully activated
    delay(2000);
  }
}


//Menghasilkan nilai jarak yang terukur oleh sensor jarak HC-SR04
int getDistance() {
  int echoTime;                   //variabel untuk menyimpan waktu yang diperlukan sebuah ping memantul dari sebuah objek
  int calcualtedDistance;         //variabel untuk menyimpan kalkulasi jarak dari echo time
  
  //mengirim pulsa ultrasonic pulse yang lamanya 10ms
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);

  echoTime = pulseIn(echoPin, HIGH);      //menggunakan perintah pulsein untuk melihat seberapa lama waktu yang dibutuhkan
                                          //pulsa ubtuk memantul kembali ke sensor

  calcualtedDistance = echoTime/58;  //menghitung jarak dari objek yang telah memantulkan pulsa (setengah waktu pantul dikalikan dengan kecepatan suara)
  
  return calcualtedDistance;              //kirim hasil nilai jarak yang telah dihitung
}

Cara menggunakan:

Ketika pertama kali dinyalakan tampil tulisan "Ready" pada layar LCD, untuk mencoba memasukkan kombinasi jarak, kamu dapat mendekatkan tangan dengan sensor hingga jaraknya kurang dari 10cm sampai tampil tulisan "Get Ready". Kemudian akan muncul "Position One" dan kamu harus menempatkan tangan sesuai jarak/posisi pertama. Setelah itu tulisan akan berubah "Position Two" dan kamu merubah posisi/jarak tangan sesuai dengan posisi yang kedua, dan begitu selanjutnya sampai ke empat. Terakhir akan muncul tulisan "Checking...." untuk memeriksa apakah kombinasi kunci yang kamu masukan benar atau salah, akan tampil tulisan "Denied" jika salah dan "Accepted" kalau benar dan relay akan active untuk membuka kunci.

17 - Meteran Digital

Meteran Digital

Ini merupakan gabugan dari dua latihan sebelumnya menggunkan sensor jarak ultrasonik HC-SR04 untuk mengukur jarak yang kemudian ditampilkan pada layar LCD.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD 1602
— 1 x HC-SR04 Ultrasonik
— 1 x Potensiometer
— 1 x Resistor 330Ω
— 19 x Kabel Jumper

Perakitan:

Rangkaian:


Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  17 - Meteran Digital

  Mengukur jarak benda yang berada didepan sensor ultrasonik HC-SR04 kemudian menampilkannya pada LCD
*/


#include           //librarry liquid crystal kumpulan perintah untuk menampilakan karakter pada layar LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

int trigPin = 6;            //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 7;            //hubungkan dengan pin echo pada sensor jarak     

float distance = 0;              //menyimpan nilai jarak yang diukur oleh sensor

void setup() {
  lcd.begin(16, 2);                 //memberitahu libarry LCD bahwa kita menggunakan layar LCD berukuran lebar 16 karakter dan tinggi 2 karakter
  lcd.clear();                      //membersihkan layar

  pinMode(trigPin, OUTPUT);   //pin trigger mengeluarkan pulsa listrik
  pinMode(echoPin, INPUT);    //pin echo akan mengukur durasi pulsa balik yang dikeluarkan dari sensor
}

void loop() {
  distance = getDistance();   //variabel untuk menyimpan nilai jarak yang diukur oleh sensor

  lcd.setCursor(0,0);             //set kursor pada posisi 0 (pojok kiri atas)
  lcd.print("Distance:");         //menampilkan Distance: pada posisi awal
  lcd.setCursor(0,1);             //memindahkan pada posisi 1 dibaris kedua
  lcd.print(distance,1);          //menampilkan jarak dan satuannya yang telah diukur pada layar LCD
  lcd.print(" cm    ");           //menampilkan unit satuan dalam cm
  delay(100);                      //jeda 50ms antara setiap pembacaan
}

//------------------FUNCTIONS-------------------------------

//Menghasilkan nilai jarak yang terukur oleh sensor jarak HC-SR04
float getDistance() {
  float echoTime;                   //variabel untuk menyimpan waktu yang diperlukan sebuah ping memantul dari sebuah objek
  float calcualtedDistance;         //variabel untuk menyimpan kalkulasi jarak dari echo time
  
  //mengirim pulsa ultrasonic pulse yang lamanya 10ms
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);

  echoTime = pulseIn(echoPin, HIGH);      //menggunakan perintah pulsein untuk melihat seberapa lama waktu yang dibutuhkan
                                          //pulsa ubtuk memantul kembali ke sensor

  calcualtedDistance = echoTime / 58.26;  //menghitung jarak dari objek yang telah memantulkan pulsa (setengah waktu pantul dikalikan dengan kecepatan suara)
  
  return calcualtedDistance;              //kirim hasil nilai jarak yang telah dihitung
}

Cara menggunakan:

Kamu akan melihat secara realtime berapa jarak yang terukur oleh sensor jarak ultrasonik ketika ada objek berada didepan sensor tersebut. Coba maju mundurkan tanganmu didepan sensor tersebut untuk memeriksa apakah jarak yang terukur oleh sensor hampir sama dengan jarak yang sebenarnya. Apabila tidak terlihat coba atur knob potensiometer untuk merubah kontras dari tulisan pada layar LCD

16 - Termometer Digital

Termometer Digital

Ini merupakan gabugan dari dua latihan sebelumnya menggunakan sensor DHT11 untuk mengukur suhu dan kelembaban suatu ruangn kemudian ditampilkan pada layar LCD. Dalam pengembangannya kamu bisa menjadikannya sebagai alat pengontrolan dengan menambahkan sebuah modul relay juga menambahkan sedikit kode perintah untuk menghidupkan kipas angin ketika suhu ruangan terasa cukup panas.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x DHT11
— 1 x LCD 1602
— 1 x Potensiometer
— 1 x Resistor 330Ω
— 18 x Kabel Jumper

Perakitan:

Rangkaian:

Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  Termometer Digital

  Mengukur suhu dan kelembaban kemudian menampilkannya pada lacar LCD.
*/


#include           //menyertakan librarry liquid crystal kumpulan perintah untuk menampilakan karakter pada layar LCD
#include "DHT.h"                    //menyertakan library untuk menggunakan sensor DHT11

#define DHTPIN 8        //pin 8 yang dihubungkan dengan sensor
#define DHTTYPE DHT11   //jenis sensor yang digunakan yaitu DHT 11

DHT dht(DHTPIN, DHTTYPE);  //membuat sebuah objek untuk sensor, serta menentukan pin dan tipe sensor yg digunakan
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

void setup() {
  dht.begin();    //memulai komunikasi dengan sensor

  lcd.begin(16, 2);                 //memberitahu libarry LCD bahwa kita menggunakan layar LCD berukuran lebar 16 karakter dan tinggi 2 karakter
  lcd.clear();                      //membersihkan layar LCD

}

void loop() {
  float temperature = dht.readTemperature();  //Membaca data suhu dalam Celsius menggunakan library DHT
  float humidity = dht.readHumidity();        //Membaca data suhu dalam Celsius menggunakan library DHT
  
  //Periksa jika terjadi kegagalan dalam pembacaan dan keluar sesegara mungkin untuk membaca ulang.
  if (isnan(temperature) || isnan(humidity)) {
    lcd.setCursor(0,0);             //set kursor pada posisi 0 (pojok kiri atas)
    lcd.print("Failed to read  ");  //menampilkan tulisan pada layar LCD
    lcd.setCursor(0,1);             //memindahkan pada posisi 0 dibaris kedua
    lcd.print("sensor!         ");  //menampilkan tulisan pada layar LCD

return;
  } else {
    lcd.setCursor(0,0);             //set kursor pada posisi 0 (pojok kiri atas)
    lcd.print("Temp: ");            //menampilkan "Temp:" pada posisi awal
    lcd.setCursor(6,0);             //memindahkan kursor pada posisi 6 dibaris pertama
    lcd.print(temperature,0);       //menampilkan nilai suhu pada layar LCD
    lcd.print((char)223);           //menampilkan simbol derajat
    lcd.print("C       ");          //menampilkan unit satuan dalam Celcius
    lcd.setCursor(0,1);             //memindahkan kursor pada posisi 0 dibaris kedua
    lcd.print("Hum : ");            //menampilkan Distance: pada posisi awal
    lcd.setCursor(6,1);             //memindahkan kursor pada posisi 6 dibaris kedua
    lcd.print(humidity,0);          //menampilkan nilai kelembaban pada layar LCD
    lcd.print("%       ");          //menampilkan unit satuan dalam %
  }
  

  delay(1000);                     //jeda 50ms antara setiap pembacaan
}

Cara menggunakan:

Kamu akan melihat secara realtime berapa suhu dan kelembaban pada layar LCD. Apabila tidak terlihat coba atur knob potensiometer untuk merubah kontras dari tulisan pada layar LCD.