9 Okt 2019

18 - Game Simon Says

Game Simon Says

Game "Simon Says" adalah sebuah permainan menggunakan empat buah LED yang akan nyala berkedip bergantian membentuk pola tertentu, dimana pemain harus mengingat pola nyala LED tersebut dan mengulanginya dengan menekan push button mengikuti pola nyala LED. Ini merupakan game elektronik klasik sejak akhir tahun 1970an, dan sekarang kamu bisa membuatnya sendiri.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 4 x LED
— 4 x Push Button
— 1 x Buzzer
— 1 x Resistor 330Ω
— 15 x Kabel Jumper

Rangkaian:


Perakitan:



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.
/*
  18 - Game Simon Says

  LED akan berkedip dengan dengan pola dan urutan tertentu, kemudian kita menekan push button 
  dengan cara mengikuti pola dan urutan led tersebut.
*/

//set pin yang digunakan untuk menghubungkan dengan push button, LED dan buzzer
int button[] = {2,4,6,8};     //push button merah adalah button[0], hijau adalah button[1], biru adalah button[2], kuning adalah button[3]
int led[] = {3,5,7,9};        //LED merah adalah led[0], hijau adalah led[1], biru adalah led[2], kuning adalah led[3]
int tones[] = {262, 330, 392, 494};   //nada-nada yang digunakan untuk tiap push button (c, e, g, b)

int roundsToWin = 10;         //jumlah ronde yang harus dimainkan sebelum memenangkan permainan
int buttonSequence[16];       //membuat array yang akan menjadi urutan yang perlu diingat oleh pemain

int buzzerPin = 10;           //pin yang terhubung dengan buzzer

int pressedButton = 4;        //variabel untuk mengingat push button mana yang ditekan. 4 adalah nilai jika tidak ada push button yang ditekan.
int roundCounter = 1;         //melacak apa yang sedang dimainkan pemain


long startTime = 0;           //variabel pengatur waktu untuk batas waktu saat push button ditekan
long timeLimit = 2000;        //batas waktu untuk menekan push button
  
boolean gameStarted = false;      //variabel untuk memberitahu game apakah memainkan atau tidak

void setup(){

  //mengatur semua pin untuk push button sehingga input_pullup (digunakan sehingga tidak perlu memakai eksternal resistor)
  pinMode(button[0], INPUT_PULLUP);
  pinMode(button[1], INPUT_PULLUP);
  pinMode(button[2], INPUT_PULLUP);
  pinMode(button[3], INPUT_PULLUP);
  
  //mengatur semua pin LED sebagai output
  pinMode(led[0], OUTPUT);
  pinMode(led[1], OUTPUT);
  pinMode(led[2], OUTPUT);
  pinMode(led[3], OUTPUT);

  pinMode(buzzerPin, OUTPUT);   //mengatur pin buzzer sebagai output
}

void loop(){

if (gameStarted == false){    //jika game belum dimulai
  startSequence();            //jalankan SQUENCE AWAL
  roundCounter = 0;           //reset penghitung ronde
  delay(1500);                //jeda 1,5 detik
  gameStarted = true;         //atur gameStarted ke kondisi true sehingga urutan ini tidak dimuat kembali
}

//setiap ronde, akan dimualai dengan start kedipan urutan LED dan diulang
for(int i=0; i <= roundCounter; i++){   //go through the array up to the current round number
  flashLED(buttonSequence[i]);          //nyalakan LED untuk posisi array yang sesuai dan mainkan lagu
  delay(200);                           //tunggu
  allLEDoff();                          //matikan semua LED
  delay(200);
}

//kemudian mulai dengan urutan satu persatu dan memeriksa jika pemain menekan push button yang benar
for(int i=0; i <= roundCounter; i++){   //untuk setiap push button yang akan ditekan dalam sequence
  
  startTime = millis();                 //catat waktu awal mulai
  
  while(true){  //terus jalankan loop sampai pemain menekan push button atau batas waktu habis (batas waktu bisa cek didalam statement if)
    
    pressedButton = buttonCheck();      //setiap loop memeriksa push button mana yang ditekan
    
    if (pressedButton < 4){             //jika sebuah push button ditekan... (angka 4 maksudnya adalah tidak ada push button yang ditekan)
      
      flashLED(pressedButton);          //kedip/flash LED untuk push button yang sudah ditekan
      
      if(pressedButton == buttonSequence[i]){   //if the button matches the button in the sequence
          delay(250);                   //biarkan LED menyalauntuk sesaat
          allLEDoff();                  //kemudian matikan semua LED dan
          break;                        //akhiri loop while (ini akan membuat melanjutkan ke nomor selanjutnya didalam loop for)
          
      } else{                           //jika push button yang ditekan tidak sama dengan dengan urutan nyala LED
          loseSequence();               //jalankan SEQUENCE KALAH
          break;                        //setelah selesai menjalankan SEQUENCE KALAH, break dari loop while sehingga game dapat dimulai kembali
      }
    
    } else {                            //jika tidak ada push button yang ditekan
      allLEDoff();                      //tmatikan semua LED
    }

    //memeriksa apakah waktu sudah habis
    if(millis() - startTime > timeLimit){   //jika batas waktu habis
      loseSequence();                       //jalankan SEQUENCE KALAH
      break;                                //setelah selesai menjalankan SEQUENCE KALAH, break dari loop while sehingga game dapat dimulai kembali
    }
  }    
}

  roundCounter = roundCounter + 1;      //tambahkan jumlah ronde dengan 1
  
  if (roundCounter >= roundsToWin){     //jika pemain menyelesaikan ke 16 ronde
    winSequence();                      //mainkan lagu kemenangan
  }
  
  delay(500);                           //tunggu 0.5 detik antara setiap ronde


}

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

//KEDIPKAN LED DAN BUNYIKAN BUZZER
void flashLED (int ledNumber){
  digitalWrite(led[ledNumber], HIGH);
  tone(buzzerPin, tones[ledNumber]);
}

//MATIKAN SEMUA LED
void allLEDoff (){
  //matikan semua LED
  digitalWrite(led[0],LOW);
  digitalWrite(led[1],LOW);
  digitalWrite(led[2],LOW);
  digitalWrite(led[3],LOW);
  //matikan suara buzzer
  noTone(buzzerPin);
}

//PERIKSA push button YANG DITEKAN
int buttonCheck(){
  //periksa jika ada push button yang ditekan
  if(digitalRead(button[0]) == LOW){
    return 0;
  }else if(digitalRead(button[1]) == LOW){
    return 1;
  }else if(digitalRead(button[2]) == LOW){
    return 2;
  }else if(digitalRead(button[3]) == LOW){
    return 3;
  }else{
    return 4; //ini akan menjadi nilai untuk tidak ada push button yang ditekan
  }
}

//SEQUENCE AWAL
void startSequence(){

  randomSeed(analogRead(A0));   //membuat nomor acak benar-benar acak

  //mengisi array buttonSequence dengan angka acak dari 0 hingga 3
  for (int i=0;i<=roundsToWin;i++){
    buttonSequence[i] = round(random(0,4));
  }
 
  //kedip/flash semua LED ketika game dimulai
  for(int i=0; i<=3; i++){
    
    tone(buzzerPin, tones[i], 200); //memainkan salah satu dari 4 nada
    
    //turn all of the leds on
    digitalWrite(led[0],HIGH);
    digitalWrite(led[1],HIGH);
    digitalWrite(led[2],HIGH);
    digitalWrite(led[3],HIGH);
    
    delay(100);         //tunggu sesaat
    
    //turn all of the leds off
    digitalWrite(led[0],LOW);
    digitalWrite(led[1],LOW);
    digitalWrite(led[2],LOW);
    digitalWrite(led[3],LOW);
    
    delay(100);   //tunggu sesaat
  
  } //ini akan diulang sebanyak 4 kali
}

//SEQUENCE MENANG
void winSequence(){

  //nyalakan semua LED
  for(int j=0; j<=3; j++){
    digitalWrite(led[j], HIGH);
  }

  //mainkan lagu 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);  

  //tunggu sampai sebuah push button ditekan
  do {         
    pressedButton = buttonCheck();
  } while(pressedButton > 3);
  delay(100);

  gameStarted = false;   //reset game sehingga sequence awal dimainkan kembali.
  
}

//SEQUENCE KALAH
void loseSequence(){

  //turn all the LEDs on
  for(int j=0; j<=3; j++){
    digitalWrite(led[j], HIGH);
  }

  //play the 1Up noise
  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);
  
  //tunggu sampai sebuah push button ditekan
  do {         
    pressedButton = buttonCheck();
  } while(pressedButton > 3);
  delay(200);
  
  gameStarted = false;   //reset game sehingga sequence awal dimainkan kembali.
}

Cara menggunakan:

Sebagai pembukaan ketika Arduino dinyalakan ke empat LED menyala berkedip kemudian memainkan melodi pendek menandakan game akan dimulai. Kemudian setelah beberapa detik LED pertama akan berkedip dan kamu harus mengikutinya dengan menekan push button posisi yang sama, setelah itu LED kesatu dan kedua akan berkedip berurutan dan kamu harus mengikutinya dengan menekan push button posisi yang sama, dan seterusnya begitu akan bertambah nyala LED yang berkedip dengan pola urutan yang berbeda-beda dan kamu harus mengikutinya dengan menekan push button yang sama pula sampai babak berikutnya. Jika kamu membuat kesalahan maka melodi kekalahan akan dimainkan oleh buzzer. Jika kamu dapat menyelesaikan hingga ronde 10, kamu memenangkan permainan dan melodi kemenangan akan dimainkan oleh buzzer. Setelah itu tekan push button sembarang untuk megulang permainan baru.

15 - LCD HelloWorld

LCD HelloWorld

Menampilkan tulisan 'HelloWorld!' biasa digunakan pertama kali latihan suatu bahasa pemrograman baru. Begitu juga pada latihan sekarang akan mencoba untuk menampilkan tulisan menggunakan sebuah LCD.

Liquid Crystal Display (LCD): dirancang untuk bisa menampilkan tulisan huruf, angka, dan karakter khusus. Selain Serial monitor LCD sangat bagus digunakan untuk menampilkan secara fisik sebuah data atau nilai variabel tertentu. LCD banyak diaplikasikan dalam peralatan elektronik seperti kalkulator, jam, penampil sederhana dan masih banyak lagi. Menambahkan sebuah LCD pada project Arduino kamu dapat membuat terlihat lebih praktis ketika membutuhkan cara untuk menampilkan informasi tulisan sekitar 32 karakter (16x2).

Menggunakan LCD bersama Arduino memerlukan sedikit tambahan komponen tertentu untuk LCD dapat bekerja secara optimal sperti potensiometer digunkan sebagai pembagi tegangan untuk mengatur kontras dari tulisan pada layar LCD, dan sebuah resistor untuk membatasi arus pada lampu layar belakang LCD.

Kebutuhan Komponen:

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

Rangkaian:


Perakitan:



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.
/*
  15 - LCD HelloWorld

  LCD akan menampilkan tulisan "Hello World" dan menampilkan waktu seberapa lama (detik) setelah push button reset ditekan.
*/

#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

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
}

void loop() {

  lcd.setCursor(0,0);               //set kursor pada posisi 0 (pojok kiri atas)
  lcd.print("Hello, world!");       //menampilkan hello, world! pada posisi awal

  lcd.setCursor(0,1);               //memindahkan pada posisi 1 dibaris kedua
  lcd.print(millis()/1000);         //menampilkan angka detik seberapa lama setelah push button reset ditekan
}

Cara menggunakan:

Layar LCD akan menampilkan tulisan “Hello, world!” dan pada baris bawahnya menampilkan angka penghitung naik setiap detiknya. Atur knob potensiometer untuk merubah kontras dari tulisan pada layar LCD.

14 - Pengendali Relay

Pengendali Relay

Pada latihan ini kamu akan membuat sebuah saklar pengendali seperti yang digunakan di industri pabrik untuk menghidupkan sebuah mesin menggunakan dua push button Start/ON dan Stop/OFF untuk mematikannya. Kamu dapat mencoba memperaktekanya untuk mengendalikan sebuah kipas angin, dengan cara menghubungkan kabel colokan kipas angin dengan kontak terminal pada modul relay sebelum dihubungkan ke sumber tegangan listrik.

Relay: pada dasarnya merupakan sebuah saklar mekanik yang dikontrol secara listrik. di dalam relay terdapat lilitan dengan inti besi yang akan berubah menjadi magnet ketika dialiri arus listrik dan menarik tuas saklar sehingga menyebabkan saklar menjadi kontak. Relay mempunyai pin NC (Normally Close), Pin NC kebalikan dari pin NO yaitu akan terhubung antara pin COM dengan NC ketika kondisi relay mati. Pin-pin kontak pada relay dapat digunakan sesuai dengan kebutuhan apakah dalam keadaan aktif nyala atau mati. Kedua pin NO dan NC juga dapat digunakan untuk dua peralatan yang nyalanya bergantian.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Modul Relay
— 2 x Push Button
— 2 x Resistor 10kΩ
— 10 x Kabel Jumper

Rangkaian:


Perakitan:



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.
/*
  14 - Pengendali Relay

  Menyalakan dan mematikan relay dengan menggunakan dua push button START dan STOP.
*/


int startButton = 4;  //pin yang dihubungkan dengan push button start 
int stopButton = 5;   //pin yang dihubungkan dengan push button start
int relayPin = 8;    //pin yang dihubungkan dengan relay
int startButtonStatus = 0;    //variabel untuk menyimpan kondisi push button start
int stopButtonStatus = 0;     //variabel untuk menyimpan kondisi push button stop

void setup() { 
  pinMode(relayPin, OUTPUT);    //atur relayPin sebagai output
  pinMode(startButton, INPUT);  //atur relayPin startButton input
  pinMode(stopButton, INPUT);   //atur relayPin stopButton input

  digitalWrite(relayPin, LOW);  //biarkan kondisi relay mati pada kondisi awal
}

void loop() { 
  startButtonStatus = digitalRead(startButton);  //membaca kondisi pin startButton dan menyimpannya di startButtonStatus
  stopButtonStatus = digitalRead(stopButton);    //membaca kondisi pin stopButton dan menyimpannya di stopButtonStatus

  //memeriksa jika push button START kondisi HIGH, AND(&&) push button STOP kondisi LOW, jika ya nyalakan relay. 
  if (startButtonStatus == HIGH && stopButtonStatus == LOW) { 
    digitalWrite(relayPin, HIGH); 
  }

  //memeriksa jika push button START kondisi LOW, AND(&&) push button STOP kondisi HIGH, jika ya matikan relay.
  if (startButtonStatus == LOW && stopButtonStatus == HIGH) {
    digitalWrite (relayPin, LOW); 
  } 
}

Cara menggunakan:

Kamu seharusnya dapat mendengarkan suara klik ketika kontak relay aktif, dan melihat LED indikator pada modul relay menyala. Jadi ketika pertama kali Arduino dinyalakan kondisi relay mati, ketika kamu menekan push button ON maka relay akan aktif sebaliknya ketika menekan push button OFF maka relay akan mati.

12 - Sensor Jarak

Sensor Jarak

Sensor jarak dapat mendeksi dimana keberadaan suatu objek, dapat digunakan untuk percobaan mengitung jarak, kecepatan, akselerasi dan dapat digunakan pada robot untuk menghindari suatu penghalang. Pada latihan ini akan membawa kamu mengetahui dasar bagaimana menggunakan sensor jarak ultrasonik untuk mengukur jarak dengan metoda sinyal suara.

Sensor Jarak Ultrasonik: sensor ini bekerja dengan cara mengirimkan sinyal suara dari sebuah pemancar, kemudian menghitung dibutuhkan waktu berapa lama ketika sinyal suara tersebut menabrak sebuah objek dan memantul diterima oleh sebuah penerima.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x HC-SR04 Ultrasonik
— 6 x Kabel Jumper

Rangkaian:


Perakitan:


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.
/*
  12 - Sensor Jarak

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

int trigPin = 2;        //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 3;        //hubungkan dengan pin echo pada sensor jarak     

float distance = 0;           //menyimpat nialai jarak yang diukur oleh sensor

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

  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

  Serial.print(distance,1);   //menampilkan jarak yang telah diukur pada serial monitor dengan 1 angka dibelakang koma
  Serial.println(" cm");      //menampilkan unit satuan setelah nilai
  delay(50);                  //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 sinyal pulsa ultrasonic 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:

Buka serial monitor untuk melihat jarak yang terbaca oleh sensor jarak ultrasonik, kemudian gerakan tanganmu maju mundur didepan sensor dan amati apakah jarak yang terbaca oleh sensor sama dengan jarak sebenarnya.

10 - Sensor DHT11

Sensor DHT11

Pada latihan ini akan menggunakan sensor DHT11 untuk mengukur suhu dan kelembaban, kemudian menampilkan hasil data pengukurannya pada serial monitor

Sensor DHT11: di dalam sensor terdapat dua bagian yaitu sebuah kapasitif sensor untuk mengukur kelembaban dan termistor untuk mengukur suhu, serta terdapat chip untuk merubah tegangan analog menjadi singal data digital yang dapat dengan mudah di baca oleh mikrokontroler.

Untuk dapat membaca data dari sensor ini oleh sebuah Arduino, diperlukan penggunaan library DHT yang dapat kamu download disini

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x DHT11
— 5 x Kabel Jumper

Rangkaian:


Perakitan:


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.
[15:00, 10/7/2019] sugandi adi10: /*
  10 - Sensor DHT11

  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 DHT11

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

void setup() {
  Serial.begin(115200);             //memulai komunikasi dengan serial monitor
  Serial.println("DHT11 test!");    //menampilkan tulisan pada awal serial monitor

  dht.begin();    //memulai komunikasi dengan sensor
}

void loop() {
  //Jeda beberapa detik antara setiap pengukuran.
  delay(2000);

  //Membaca suhu atau kelembaban memakan waktu sekitar 250 milliseconds!
  //Untuk tipe pabrikan sensor yang lam mungkin bisa sampai 2 detik
  float h = dht.readHumidity();
  //Membaca suhu dalam Celsius (the default)
  float t = dht.readTemperature();
  //Membaca suhu dalam Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

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

  //Menghitung index panas dalam Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  //Menghitung index panas dalam Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

Cara menggunakan:

Buka serial monitor kemudian kamu akan melihat ada data yang tampil menunjukan berapa nilai kelembaban, suhu dalam satuan Celsius dan Fahrenheit. Apabila pada serial monitor tampil tulisan "Failed to read from DHT sensor!" ada kemungkinan koneksi kabel ada yang terlepas atau tertukar atau bahkan sensor yang kamu gunakan sudah rusak, coba cek kembali.

09 - Motor Servo

Motor Servoo

Pada latihan ini kamu akan belajar bagaiman cara menghubungkan motor servo dan mengendalikannya dengan dengan sebuah potensiometer. Motor servo banyak digunakan pada pengendali mobil RC, pesawat RC, tangan robor dan masih banyak lagi perlatan yang memerlukan pergerakan secara presisi.

Motor Servo: terdapat tiga pin pada koneksi motor servo, power, ground dan sinyal. Ketika kamu memberikan pulsa listrik yang benar pada pin sinyal maka motor servo akan bergerak ke sudut putaran tertentu dan diam diposisi tersebut. Servo pada umumnya mempunya batas putaran gerak 0° sampai 180° walaupun ada yang dapat bergerak 360°. Sinyal yang diterima oleh motor servo berupa sinyal PWM yang sama seperti digunakan pada LED untuk mengatur kecerahannya.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Servo
— 8 x Kabel Jumper

Rangkaian:


Perakitan:


Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat memakai 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 dengan tambahan komponen modul Bluetooth HC-05.

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.
[14:58, 10/7/2019] sugandi adi10: /*
  09 - Motor Servo

  Mengontrol posisi motor servo menggunakan potensiometer.
*/

#include    //menyertakan library untuk penggunaan motor servo
 
Servo myservo;       //membuat objek servo untuk mengontrol sebuah motor servo 
 
int servoPin = 9;    //pin yang terhubung dengan motor servo

int potpin = 0;  //menggunakan pin analog untuk dihubungkan ke potensiometer
int val;         //variabel untuk membaca nilai dari pin analog
 
void setup() 
{ 
  myservo.attach(servoPin);  //menghubungkan servo ke pin 9 ke objek servo 
} 
 
void loop() 
{ 
  val = analogRead(potpin);            //membaca nilai dari potentiometer (nilai antara 0 dan 1023) 
  val = map(val, 0, 1023, 0, 179);     //menskalan nilai supaya bisa digunakan dengan servo (nilai antara 0 dan 180) 
  myservo.write(val);                  //membuat posisi servo sesuai nilai yang diskalakan 
  delay(15);                           //jeda untuk menunggu servo selesai merubah posisi
}
Arduino library: untuk menulis kode perintah untuk mengirim sinyal PWM bisa kamu lakukan, namun akan menyita waktu karena perlu menuliskan cukup banyak baris kode dan kamu juga perlu mengetahui lebih jauh tentang motor servo. Beruntungnya pada sistem pemrograman Arduino sudah terdapat kumpulan baris kode perintah yang sudah disederhanakan sehingga hanya butuh menuliskan sedikit kode perintah jika ingin menjalankan fungsi yang cukup rumit, kumpulan baris kode perintah disebut sebagai library. #include adalah sebuah perintah "preprocessor" spesial untuk menyertakan sebuah library (atau file lain) kedalam sketch.

Library servo merupakan library bawaan Arduino untuk menambahkan beberapa perintah untuk dapat mengontrol sebuah servo. Sebagai persiapan supaya Arduino dapat mengontrol sebuah servo, terlebih dahulu kamu harus membuat "object" servo untuk setiap servo (dalam contoh ini object diberi nama ("myServo"), kemudian tuliskan perintah "attach" untuk menghubungkan ke pin digital (dalam contoh ini menggunakan pin 9).

Cara menggunakan:

Dengan memutar-mutar knob potensiometer searah atau berlawanan arah jarum jam, akan diikuti pergerakan yang sama oleh motor servo.

07 - Buzzer

Buzzer

Pada latihan ini kamu akan menggunakan Arduino bersama buzzer kecil untuk memainkan musik, dan kamu akan belajar bagaimana cara membuat program untuk musik kamu sendiri menggunakan variabel array.

Buzzer: di dalamnya menggunakan sebuah lilitan magnet untuk mengetarkan piringan besi dibungkus dengan housing plastik. Dengan cara memberikan tegangan berupa pulsa listrik pada lilitan magnet dengan frekuensi yang berbeda-beda, maka akan menghasilkan suara dari buzzer tersebut.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Buzzer
— 3 x Kabel JUmper

Rangkaian:


Perakitan:


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.
/*
  08 - Buzzer

  Memainkan nada menggunakan sebuah buzzer yang terhubung ke pin 8
*/

int speakerPin = 8;               //pin dimana buzzer dihubungkan

void setup() {
  pinMode(speakerPin, OUTPUT);    //set pin digital sebagai output untuk speaker
}

void loop() {
    
  play('g', 2);       //ha
  play('g', 1);       //ppy
  play('a', 4);       //birth
  play('g', 4);       //day
  play('C', 4);       //to
  play('b', 4);       //you
  
  play(' ', 2);       //jeda 2 beats
  
  play('g', 2);       //ha     
  play('g', 1);       //ppy
  play('a', 4);       //birth
  play('g', 4);       //day
  play('D', 4);       //to
  play('C', 4);       //you

  play(' ', 2);       //jeda 2 beats
  
  play('g', 2);       //ha
  play('g', 1);       //ppy
  play('G', 4);       //birth
  play('E', 4);       //day
  play('C', 4);       //dear
  play('b', 4);       //your
  play('a', 6);       //name

  play(' ', 2);       //jeda 2 beats
  
  play('F', 2);       //ha
  play('F', 1);       //ppy
  play('E', 4);       //birth
  play('C', 4);       //day
  play('D', 4);       //to
  play('C', 6);       //you
  
  while(true){}       //membuaat program stak disini sehingga musik hanya dimainkan sekali
}


void play( char note, int beats) {
  int numNotes = 14;  //jumlah nada didalam array notes dan frekuensi (ada 15 nilai, tapi sebuah array dimulai dari 0 - 14)
  
  //Catatan: nada-nada yang digunakan adalah C major

  //array notes ini digunakan untuk menyimpan kumpulan nada-nada
  char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G', 'A', 'B', ' '};
  //array frequencies dibawah berpasangan dengan tiap huruf (contoh urutan nada ke 4 adalah 'f', urutan frekuensi ke 4 adalah 175)
  int frequencies[] = {131, 147, 165, 175, 196, 220, 247, 262, 294, 330, 349, 392, 440, 494, 0};
  
  int currentFrequency = 0;    //variabel ini digunakan untuk menyimpan frekuensi yang sedang dimainkan
  int beatLength = 150;        //waktu ketukan (merubah nilai ini akan mempercepat atau memperlambat tempo tempo dari lagu)

  //mencari frekuensi yang berpasangan sesuai dengan nada
  for (int i = 0; i < numNotes; i++)  //cek setiap nilai didalam array notes dari 0 sampai 14
  {
    if (notes[i] == note)             //memeriksa apakah huruf yang akan dimainkan ada yang cocok dengan huruf/nada yang berada didalam array notes?
    {
      currentFrequency = frequencies[i];   //jika Ya! Set nilai currentFrequency sama dengan frekuensi yang sepasang dengan huruf/nada
    }
  }

  //memainkan frequency yang sepasang dengan huruf/nada dengan ketukan yang sesuai dengan nilai variabel beats pada pemanggilan fungsi play
  tone(speakerPin, currentFrequency, beats * beatLength);   
  delay(beats* beatLength);   //jeda sesuai dengan lama ketukan nada yang dimainkan
  delay(50);                  //sedikit jeda antara tiap nada untuk membuat lagu menjadi lebih natural

}

Cara menggunakan:

Ketika program mulai berjalan, sebuah akan dimainkan oleh buzzer. Untuk mengulang musik kamu perlu menekan tombol reset pada board Arduino.

06 - Lampu Malam RGB

Lampu Malam RGB

Pada Latihan kali ini akan sama konsepnya dengan latihan sebelumnya bernama lampu otomatis cuma ditambahkan LED RGB dan potensiometer.

LED RGB: bisa dikatakan seperti tiga LED kecil dengan warna berbeda merah, hijau dan biru digabung menjadi satu. Kaki negatif/katoda dari masing-masing warna LED digabung sehingga hanya memiliki 4 kaki. Untuk menyalakan LED ini hubungkan kaki katoda dengan tegangan ground/negatif dan kaki masing-masing warna LED dengan tegangan positif, dan jangan lupa memasang resistor untuk membatasi arus.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Photoresistor
— 1 x Potensiometer
— 1 x LED RGB
— 3 x Resistor 330Ω
— 1 x Resistor 10KΩ
— 11 x Kabel Jumper

Rangkaian:



Perakitan:



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.
 /*
  06 - Lampu Malam RGB

  Menyalakan dan mematikan sebuah LED RGB berdasarkan intensitas cahaya yang diterima oleh photoresistor.
  Putar potensiometer untuk merubah warna nyala LED.
*/

int photoresistor;          //variabel untuk menyimpan nilai photoresistor
int potentiometer;          //variabel untuk menyimpan nilai potensiometer
int threshold = 700;             //jika photoresistor membaca dibawah nilai ini maka LED akan menyala

//LED RGB dihubungkan dengan tiga pin digital
int RedPin = 9;
int GreenPin = 10;
int BluePin = 11;

int photoPin = A0;       //pin yang terhubung dengan photoresistor
int potPin = A1;       //pin yang terhubung dengan potensiometer


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

  //set pin digital LED sebagai output
  pinMode(RedPin,OUTPUT);
  pinMode(GreenPin,OUTPUT);
  pinMode(BluePin,OUTPUT);
}

void loop() {
  
  photoresistor = analogRead(photoPin);       //membaca nilai dari photoresistor
  potentiometer = analogRead(potPin);         //membaca nilai dari potensiometer

  Serial.print("Photoresistor value:");
  Serial.print(photoresistor);            //menampilkan nilai photoresistor ke serial monitor
  Serial.print("  Potentiometer value:");
  Serial.println(potentiometer);          //menampilkan nilai photoresistor ke serial monitor
  
  if(photoresistor < threshold){          //jika kondisi gelap (nilai photoresistor dibawah nilai threshold) maka LED menyala
    //jika kondisi gelap maka akan menjalankan fungsi-fungsi warana
    //yang berbeda disesuaikan dengan nilai dari pembacaan potensiometer.
    if(potentiometer > 0 && potentiometer <= 150)
      red();
    if(potentiometer > 150 && potentiometer <= 300)
      orange();
    if(potentiometer > 300 && potentiometer <= 450)
      yellow(); 
    if(potentiometer > 450 && potentiometer <= 600)
      green();
    if(potentiometer > 600 && potentiometer <= 750)
      cyan();
    if(potentiometer > 750 && potentiometer <= 900)
      blue(); 
    if(potentiometer > 900)
      magenta();  
  } 
  else {                                  //jika kondisi terang maka akan mematikan LED
    
    turnOff();                            //memanggil fungsi untuk mematikan LED
  }  
  
  delay(100);                             //jeda untuk membuat penampilan data mudah dibaca
}

void red() {
    //set pin LED dengan nilai untuk membuat nyala LED menjadi merah    
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 0);
}

void orange() {
    //set pin LED dengan nilai untuk membuat nyala orange
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 50);
    analogWrite(BluePin, 0);
}

void yellow() {
    //set pin LED dengan nilai untuk membuat nyala kuning
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 100);
    analogWrite(BluePin, 0);
}

void green() {
    //set pin LED dengan nilai untuk membuat nyala hijau    
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 100);
    analogWrite(BluePin, 0);
}

void cyan() {
    //set pin LED dengan nilai untuk membuat nyala cyan    
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 100);
    analogWrite(BluePin, 100);
}

void blue() {
    //set pin LED dengan nilai untuk membuat nyala biru
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 100);
}

void magenta() {
    //set pin LED dengan nilai untuk membuat nyala magenta   
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 100);
}

void turnOff() {
    //set semua pin LED ke 0 atau mati
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 0);
}

Cara menggunakan:

Sama seperti pada latihan lampu otomatis, apabila kondisi ruangan terang atau sensor photoresistor tidak tertutup maka LED RGB akan mati, tapi apabila kondisi ruangan gelap atau sensor ditutup maka LED RGB akan nyala. Nyala warna LED RGB dapat kamu rubah dengan memutar knob potensiometer.

05 - Lampu Otomatis

Lampu Otomatis

Pada latihan sebelumnya kamu menggunakan potensiometer, dimana nilai hambatannya dapat berubah-rubah ketika kamu memutar knobnya. Dilatihan sekarang ini kamu akan menggunakan photoresistor.

Photoresistor: merupakan sebuah variable resistor yang sensitif terhadap cahaya dimana hambatanya dapat berubah-ubah tergantung seberapa cerah cahaya yang mengenai sensor tersebut.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Photoresistor
— 1 x LED
— 1 x Resistor 330Ω
— 1 x Resistor 10KΩ
— 5 x Kabel Jumper

Rangkaian


Perakitan:



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.
/*
  05 - Lampu Otomatis

  Menggunakan photoresistor untuk mengetahui intensitas cahaya disebuah ruangan, kemudian menyalakan LED ketika kondisi gelap.
*/

int ledPin = 7;          //pin yang terhubung dengan LED
int photoPin = A0;       //pin yang terhubung dengan photoresistor

int photoresistor = 0;              //variabel ini akan menyimpan nilai yang didasarkan dari dari hambatan photoresistor
int threshold = 750;                //jika photoresistor membaca dibawah nilai ini maka LED akan menyala

void setup() {
  Serial.begin(115200);             //memulai komunikasi serial
  
  pinMode(ledPin, OUTPUT);               //set pin 7 sebagai sebuah output yang dapat diset ke HIGH atau LOW
}

void loop() {
  //read nilai photoresistor
  photoresistor = analogRead(photoPin);   //membaca nilai photoresistor antara 0 sampai 1023 bergantung dari nilai hambatan photoresistor
  Serial.println(photoresistor);          //menampilkan nilai photoresistor pada serial monitor

  //jika nilai photoresistor value dibawah nilai threshold maka led menyala, dan begitu sebaliknya akan mati
  if (photoresistor < threshold){
    digitalWrite(ledPin, HIGH);         //menyalakan LED  
  } else{
    digitalWrite(ledPin, LOW);          //mematikan LED
  }

  delay(100);                       //jeda untuk membuat penampilan data mudah dibaca
}

Cara menggunakan:

Dalam program terdapat variable treshold untuk menyimpan sebuah nilai sebagai set point. Menggunakan fungsi if/else untuk membandingkan nilai variable pembacaan dari input sensor dengan nilai treshold, apabila nilai variable tersebut di atas nilai treshold (terang) maka LED mati, sebaliknya jika nilai variable tersebut di bawah nilai treshold (gelap) maka LED nyala. Buka serial monitor dan nilai variable dari photoresistor akan tampil.

04 - Lampu Tidur

Lampu Tidur

Pada Latihan kali ini kamu akan membuat sebuah lampu tidur menggunakan potensiometer sebagai inputan untuk mengontrol nyala redup terangnya sebuah LED.

Potensiometer: disebut juga rebagai variabel resistor. Memiliki tiga kaki, ketika diberi tegangan 5V antara kaki no 1 dan 3, pada kaki tengah atau no 2 dapat mengeluarkan tegangan atara 0V sampai dengan 5V tergantung dari posisi knob potensiometer.
Pembagi Tegangan: merupakan rangkaian sederhana yang dapat merubuah sebuah tegangan menjadi lebih kecil hanya dengan menggunakan dua resistor. Sebuah potensiometer merupakan apalikasi dari rangkaian pembagi tegangan yang sangat bagus. Tegangan dibagi secara proporsional berdasarkan hambatan anatara kaki tengah dengan kaki ground. rangkain pembagi tegangan tersebut akan kamu aplikasikan pada latihan ini dengan menggunakan potensiometer.

Kebutuhan komponen:

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

Rangkaian:


Perakitan:



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.

/*
  Lampu Tidur

  Menggunakan potensiometer untuk mengatur tingkat kecerahan sebuah LED.
*/

int ledPin = 6;       //pin yang terhubung dengan LED
int potPin = A0;       //pin yang terhubung dengan potensiometer

int potPosition;            //variabel ini akan menyimpan nilai dari tegangan masukan ke A0 yang berdasarkan posisi dari knob potensiometer
int calibratedpotPosition;  //variabel ini akan menyimpan nilai yang telah diskalakan/terkalibrasi dari nilai potPosition

void setup() {
  
  Serial.begin(115200);  //inisialisasi komunikasi serial pada 115200 bits per second.
  pinMode(ledPin, OUTPUT);    //Menentukan pin 6 sebagai output untuk sebuah LED.
}

void loop() {
  potPosition = analogRead(potPin);   //membaca tegangan dari pin A0 dan menyimpannya sebagai nilai potPosition
  Serial.println(potPosition);    //menampilkan nilai potPosition pada serial monitor

  calibratedpotPosition = map(potPosition, 0, 1023, 0, 255);  //menskalakan nilai potPosition dari 0 - 1023 menjadi 0 - 255.
                                                              //fungsi map() penggunaanya untuk sebuah bilangan skala yang linear.
                                                              //map(inputValue, fromMin, fromMax, toMin, toMax);

  analogWrite(ledPin, calibratedpotPosition);    //menggunakan fungsi analogWrite untuk dapat mengeluarkan output tegangan linear
                                            //dari sebuah pin digital/PWM antara 0 - 255 atau 0 - 5V. 
}

Serial Monitor: merupakan salah satu fitur yang paing penting yang terdapat di dalam software Arduino IDE. Ketika kamu membuat sebuah proyek dengan Arduino, ini akan sangat membantu untuk melihat dan mengetahui apakah nilai variable yang kamu gunakan di dalam programmu sesuai atau untuk mengetahui saat program kamu mengalami masalah dimana ada kode yang tidak bekerja dengan seperti yang kamu harapkan. Pada latihan ini akan memngenalkan kamu dengan Serial Monitor. Untuk membuka serial monitor kamu bisa mengklik icon yang bergambar kaca pembesar.

ANALOG OUTPUT (PWM): dengan perintah digitalWrite() dapat membuat sebuah pin menjadi kondisi ON (5V) atau OFF (0V), tapi bagaimana ketika kamu ingin 2.5V? perintah analogWrite() yang dapat mengeluarkan output 2.5V dengan cara membolak-balikan kondisi pin ON dan OFF dengan perbandingan waktu yang tertentu secara terus menerus, sehingga dengan perbandingan waktu 50% dari 5V akan menjadi 2.5V. Jadi dengan begitu mau tegangan berapapun antara 0 - 5V bisa memungkinkan, yang seperti ini yang dinamakan Pulse-Width-Modulation (PWM).

Cara menggunakan:

Kamu akan melihat nyala LED terang, redup atau bahkan mati tergantung dari posisi knob potensiometer. Dengan kamu memutar-mutar knob potensio akan mengatur tingkat kecerahan nyala LED. Selain itu kamu juga dapat membuka serial monitor dan melihat nilai yang terbaca oleh analog pin ketika kamu memutar-mutar potensiometer, jika kamu tidak dapat melihat nilai tersebut pastikan kamu telah memilih baudrate yang sesuai 115200.

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

Rangkaian:


Perakitan:


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.

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

Rangkaian:


Perakitan:



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.

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