15 Okt 2019

LED Berjalan

LED Berjalan

Kamu telah menyelesaikan LED berkedip menyala dan mati. Sekarang saatnya untuk mencoba latihan yang sedikit lebih rumit yaitu dengan menghubunkan empat LED sekaligus. Latihan ini bagus untuk melatih dalam memahami program dan bagaimana program tersebut berjalan didalam 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
— 4 x LED
— 4 x 330 Ohm Resistor

Komponen yang digunakan pada Shield:

4 x yang terhubung ke pin D9, D10, D11 & D13.
Selector switch pada posisi LED.


Rangkaian:


Upload sketch:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 04 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_04

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) dibawah.
/* Bluino Starter Shield
  Latihan 04 LED Berjalan
   
  It turns each LED ON and then OFF before going to the next LED.

  Version 1.0 9/2017 MK
*/

int ledPins[] = {9,10,11,13};   // Defines an array to store the pin numbers of the 4 LEDs.
// An array is like a list variable that can store multiple numbers.
// Arrays are referenced or "indexed" with a number in the brackets [ ]. See the examples in
// the pinMode() functions below. 

void setup() {
  // setup all 4 pins as OUTPUT - notice that the list is "indexed" with a base of 0.
  pinMode(ledPins[0],OUTPUT);  // ledPins[0] = 9
  pinMode(ledPins[1],OUTPUT);  // ledPins[1] = 10
  pinMode(ledPins[2],OUTPUT);  // ledPins[2] = 11
  pinMode(ledPins[3],OUTPUT);  // ledPins[3] = 13
}

void loop() {
  int index;
  int delayTime = 300; // milliseconds to pause between LEDs
   
  for(index = 0; index <= 3; index++) {  // step through the LEDs, from 0 to 3
    digitalWrite(ledPins[index], HIGH);  // turn LED on
    delay(delayTime);                    // pause to slow down
    digitalWrite(ledPins[index], LOW);   // turn LED off
  }
}

Catatan kode:

int ledPins[] = {9,10,11,13};
Ketika harus mengatur variabel yang cukup banyak, dapat menggunakan "array" sebagai cara untuk mengelopokan variabel sehingga menjadi lebih mudah. Pada contoh latihan kali ini kita membuat sebuah array dari integer, diberi nama ledPins dengan empat elemen.
digitalWrite(ledPins[0], HIGH);
Disini untuk menggunakan ledPins kamu dapat mengacu pada elemen dalam array berdasarkan posisinya. Elemen pertama ada pada posisi 0, yang kedua ada di posisi 1, dan seterusnya. Untuk mengacu pada tiap elemen yang menggunakan "ledPins[x]" di mana x adalah posisinya. Di sini kita membuat pin digital 9 HIGH, karena elemen array pada posisi 0 adalah "9".
for(index = 0; index <= 3; index++)
Didalam sketch, menggunakan for() loop untuk membuat nyala LED berpindah satu persatu dari pin D9 sampai D13.

Setiap for() loop mempunyai tiga parameter dan dipisahkan menggunakan titik koma (;):

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 didalam tanda kurung {}. Ketika index = 4, akan keluar dari loop dan melanjutkan baris kode selanjutnya didalam sketch.
3. index++ Sesuatu yang dilakukan setelah menjalankan satu baris loop: Meletakan "++" setelah sebuah variabel bermaksud menambahkan variabel tersebut dengan satu. Dapat juga menggunakan "index = index + 1".

Apa yang seharusnya kamu lihat:

Kamu akan melihat nyala lampu LED bergerak satu arah seperti berjalan. Jika ini tidak terjadi, pastikan sketch sudah masuk kedalam Arduino. 


Push Button

Push Button

Sampai saat ini kebanyakan fokus latihan pada komponen output. Sekarang kita mencoba latihan menggunakan komponen input sederhana yang umum digunakan yaitu push button menggunakan fungsi digital input. Push button dirangkaikan dengan Arduino sehingga ketika push button ditekan akan menjadikan kondisi LOW.

Pada latihan ini, menggunakan parameter INPUT_PULLUP didalam fungsi pinMode(), sehingga tidak memerlukan resistor yang dihubungkan sebagai pull-up untuk menjaga inputan pada pin dalam kondisi HIGH ketika push button tidak ditekan.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 2 x Push Button
— 1 x LED
— 1 x Resistor 330Ω

Komponen yang digunakan pada Shield:

2 x Push Button yang terhubung dengan D2 & D4.
1 x LED yang terhubung ke D13.



Rangkaian:


Upload sketch:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 05 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_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) dibawah.
/* Bluino Starter Shield
   Latihan 05 Push Button

   Use pushbuttons for digital input.

   Version 1.0 9/2017 MK
*/

const int button1Pin = 2;  // pushbutton 1 pin
const int button2Pin = 4;  // pushbutton 2 pin
const int ledPin =  13;    // LED pin

int button1State, button2State;  // variables to hold the pushbutton states


void setup() {
  // Set up the pushbutton pins to be an input with the internal pull-up resistor enabled :
  pinMode(button1Pin, INPUT_PULLUP);
  pinMode(button2Pin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT); // Set up the LED pin to be an output
  
}

void loop() {
  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);

  // if button1 or button 2 are pressed (but not both)
  if (((button1State == LOW) && (button2State == HIGH)) || ((button1State == HIGH) && (button2State == LOW))) {
    digitalWrite(ledPin, HIGH);  // turn the LED on
  }
  else {
    digitalWrite(ledPin, LOW);  // turn the LED off
  }
}

Catatan kode:

pinMode(button2Pin, 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 didalam IC mikrokontroller secara kode.
button1State = digitalRead(button1Pin);
Untuk membaca sebuah inputan digital menggunakan fungsi digitalRead(). Fungsi ini akan menghasilkan HIGH jika tegangan 5V terhubung dengan pin, atau LOW jika tegangan 0V terhubung dengan pin.
if (button1State == LOW)
Karena menghubungkan salah satu kaki push button ke GND, maka akan membaca LOW ketika push button ditekan. Disini menggunakan operator dua sama dengan ("==") untuk mendeteksi apakah push button ditekan.

Apa yang seharusnya kamu lihat:

Kamu akan melihat LED akan menyala ketika salah satu push button ditekan, dan akan mati ketika kedua push button ditekan. (Lihat pada sketch kenapa bisa terjadi seperti itu!). Jika tidak bekerja, pastikan sketch sudah masuk kedalam Arduino. 

Membaca Sensor Cahaya

Membaca Sensor Cahaya

Pada latiahan 02 telah belajar menggunakan potensiometer, merupakan hambatan yang dapat berubah tergantung dari posisi putaran knob. Pada latihan sekarang akan menggunakan sebuah sensor cahaya (photoresistor), dimana nilai hambatan akan berubah-ubah bergantung dari intensitas cahaya yang diterima oleh sensor. Kita memerlukan rangkaian pembagi tegangan untuk bisa menggunakan photoresistor supaya perubahan hambatannya dapat menyebabkan perubahan tegangan dan dapat dibaca oleh Arduino.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Photoresistor
— 1 x LED
— 1 x Resistor 10kΩ
— 1 x Resistor 330Ω

Komponen yang digunakan pada Shield:

1 x Photoresistor yang terhubung ke A1.
1 x LED yang terhubung ke D9.


Rangkaian:

Upload sketch:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 06 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_06

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) dibawah.
/* Bluino Starter Shield
   Latihan 06 Membaca Sensor Cahaya

   Use a photoresistor (light sensor) to control the brightnessof a LED.

   Version 1.0 9/2017 MK
*/

const int sensorPin = A1;
const int ledPin = 9;


int lightLevel;  // We'll also set up some global variables for the light level
int calibratedlightLevel; // used to store the scaled / calibrated lightLevel

void setup() {
  pinMode(ledPin, OUTPUT);    // Set up the LED pin to be an output.
}

void loop() {
  lightLevel = analogRead(sensorPin);  // reads the voltage on the sensorPin

  calibratedlightLevel = map(lightLevel, 0, 1023, 0, 255);  // scale the lightLevel from 0 - 1023 range to 0 - 255 range.
                                                  // the map() function applies a linear scale / offset.
                                                  // map(inputValue, fromMin, fromMax, toMin, toMax);

  analogWrite(ledPin, calibratedlightLevel);    // set the led level based on the input lightLevel.
}

Catatan kode:

calibratedlightLevel = map(lightLevel, 0, 1023, 0, 255);
Parameters

map(value, fromLow, fromHigh, toLow, toHigh)

value: nilai yang dipetakan

fromLow: batas bawah dari range nilai terbaca

fromHigh: batas atas dari range nilai terbaca

toLow: batas bawah dari range nilai diinginkan

toHigh: batas atas dari range nilai diinginkan

Ketika membaca sinyal analog menggunakan fungsi analogRead(), akan terbaca nilai dari angka 0 sampai 1023. Tapi jika kita ingin mengeluarkan output pada pin PWM menggunakan fungsi analogWrite(), nilai yang diset antara 0 sampai 255. Kita dapan memperkecil nilai yang mempunyai range besar menjadi range yang kecil atau sebaliknya menggunakan fungsi map().

Apa yang seharusnya kamu lihat:

Kamu akan melihat LED menyala lebih terang atau lebih redup tergantung dari intensitas cahaya yang terbaca oleh photoresistor. Jika tidak terjadi, pastikan sketch sudah masuk kedalam Arduino. 

Membaca Sensor Suhu

Membaca Sensor Suhu

Sensor suhu berfungsi untuk mengukur suhu lingkungan sekitar. Sensor yang digunakan pada latihan ini adalah TMP36 memiliki tiga pin; positif, ground dan sinyal. Ini merupakan jenis sensor suhu yang linier, setiap perubahan suhu satu derajat sama dengan perubahan 10 mV pada keluaran sensor.

Sensor TMP36 memiliki nilai 750 mV pada suhu 25°C (suhu ruangan). Pada latihan ini akan mempelajari bagaimana menggunakan sensor suhu dengan Arduino, dan menggunakan serial monitor untuk menampilkan suhu.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Sensor suhu

Komponen yang digunakan pada Shield:

1 x Sensor suhu yang terhubung ke pin A2.


Rangkaian:


Upload sketch:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 07 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_07

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) dibawah.
/* Bluino Starter Shield
   Latihan 07 Membaca Sensor Suhu

   Use the "serial monitor" window to read a temperature sensor.

   Version 1.0 9/2017 MK
*/



const int temperaturePin = A2;  // We'll use analog input A2 to measure the temperature sensor's signal pin.


void setup() {
    Serial.begin(115200); //Initialize serial port & set baud rate to 115200 bits per second (bps)
}


void loop() {
    float voltage, degreesC, degreesF; //Declare 3 floating point variables

    voltage = getVoltage(temperaturePin); //Measure the voltage at the analog pin

    degreesC = (voltage - 0.5) * 100.0; // Convert the voltage to degrees Celsius

    degreesF = degreesC * (9.0 / 5.0) + 32.0; //Convert degrees Celsius to Fahrenheit

    //Now print to the Serial monitor. Remember the baud must be 115200 on your monitor!
    // These statements will print lines of data like this:
    // "voltage: 0.73 deg C: 22.75 deg F: 72.96"

    Serial.print("voltage: ");
    Serial.print(voltage);
    Serial.print("  deg C: ");
    Serial.print(degreesC);

Catatan kode:

Serial.begin(115200);
Sebelum menggunakan serial monitor, harus menyertakan Serial.begin() sebagai inisialisasi awal. 115200 adalah "baud rate", atau kecepatan komunikasi data. Ketika dua perangkat atau antara Arduino dengan komputer berkomunikasi satu sama lain, maka harus diseting dengan baud rate yang sama.
Serial.print(degreesC);
Serial.print() merupakan salah satu fungsi yang sering digunakan untuk serial monitor. Perintah ini dapat menampilkan tulisan (string), angka atau data dari hasil pengukuran.
Serial.println(degreesF);
Serial.println() mempunyai fungsi yang sama dengan Serial.print() perbedaanya setelah fungsi ini menampilkan data akan diakhiri dengan akhir baris jadi untuk data yang akan ditampilkan selanjutnya pada garis baru.

Apa yang seharusnya kamu lihat:

Kali ini untuk melihat latihan ini bekerja atau tidak kamu harus menggunakan fitur serial monitor pada software Arduino IDE atau aplikasi Bluino Loader. Untuk membuka serial monitor kamu dapat mengklik ikon kaca pembesar dipojok kanan atas, atau pada aplikasi ini kamu dapat membuaka langsung fitur serial monitor tersebut dengan mengklik ikon yang berada di samping ikon upload.

Kamu dapat membaca suhu setempat yang terukur oleh sensor suhu. Jika tidak menampilkan, pastikan sketch sudah masuk kedalam Arduino dan setingan baud rate pada serial monitor sudah sama 115200.

Contoh yang harus terlihat pada serial monitor:

voltage: 0.73 deg C: 23.24 deg F: 73.84
voltage: 0.73 deg C: 23.24 deg F: 73.84
voltage: 0.73 deg C: 22.75 deg F: 72.96
voltage: 0.73 deg C: 23.24 deg F: 73.84
voltage: 0.73 deg C: 23.24 deg F: 73.84

Membaca Potensiometer

Membaca Potensiometer

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. Sebuah potensiometer merupakan apalikasi dari rangkaian pembagi tegangan yang sangat bagus. Tegangan dibagi secara proporsional berdasarkan hambatan anatara kaki tengah dengan kaki ground. Pada latihan ini akan belajar menggunakan potensiometer untuk mengatur nilai delay saat LED berkedip.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Potensiometer
— 1 x LED
— 1 x Resistor 330Ω

Komponen yang digunakan pada Shield:

1 x Potensiometer yang terhubung ke A0.
1 x LED yang terhubung ke D13.


Rangkaian:


Upload sketch:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 02 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_02

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) dibawah.
/* Bluino Starter Shield
   Latihan 02 Membeaca Potensiometer

   Measure the position of a potentiometer and use it to
   control the blink rate of an LED. Turn the knob to make
   it blink faster or slower!

   Version 1.0 7/2017 MK
*/

int sensorPin = A0;   // The potentiometer is connected to analog pin 0
int ledPin = 13;      // The LED is connected to digital pin 13
int sensorValue;      // We declare another integer variable to store the value of the potentiometer

void setup() {        // this function runs once when the sketch starts up
  pinMode(ledPin, OUTPUT);
}

void loop() {        // this function runs repeatedly after setup() finishes
  sensorValue = analogRead(sensorPin);

  digitalWrite(ledPin, HIGH);     // Turn the LED on
  delay(sensorValue);             // Pause for sensorValue in milliseconds
  digitalWrite(ledPin, LOW);      // Turn the LED off
  delay(sensorValue);             // Pause for sensorValue in milliseconds
}

Catatan kode:

int sensorValue;
Sebuah "variabel" merupakan tempan penyimpanan data yang dapat dirubah-rubah secara program. Pertama harus mendeklerasikan sebuah variabel sebelum menggunakannya; pada contoh disini mendeklerasikan sebuah variabel yang diberi nama sensorValue, tipe dari variabel ini adlah int (integer). Perlu diingat penamaan varabel bersifat case-sensitive.
sensorValue = analogRead(sensorPin);
Kita menggunakan fungsi analogRead() untuk membaca nilai dari pin analog. analogRead() membutuhkan satu parameter, yaitu nama pin yang akan digunakan ("sensorPin"), dan nilai hasil pembacaannya akan disimpan pada variabel ("sensorValue") dengan nilai antara 0 (0 volt) dan 1023 (5 volt).
delay(sensorValue);
Mikrokontroller sangat cepat dalam memperoses isi program, dapat menjalankan ratusan baris kode tiap detiknya. Untuk membuatnya menjadi lambat sehingga kita bisa melihat apa yang sedang dikerjakan, dengan cara menambahkan delay pada baris kode. delay() menghitung dalam milidetik; dimana 1000 milidetik sama dengan 1 detik.

Apa yang seharusnya kamu lihat:

Kamu akan melihat LED berkedip dengan kedipan lebih cepat atau lebih lambat tergantung dari potensiometer. Jika tidak bekerja, pastikan sketch sudah masuk kedalam Arduino. 


LED RGB Berkedip

LED RGB Berkedip

Salah satu yang lebih menarik selain LED berkedip adalah merubah warna sebuah LED. RGB atau red-green-blue, adalah LED yang mempunyai tiga nyala cahaya yang berbeda-beda yang dapat dikombinasikan sehingga dapat menciptakan semua jenis warna. Pada latihan ini akan belajar bagaimana menggunakan sebuah LED RGB untuk membuat kombinasi warna yang unik.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x LED RGB common Cathode
— 3 x Resistor 330Ω

Komponen yang digunakan pada Shield:

1 x LED RGB yang terhubung ke D9, D10 & D11.
Selector switch pada posisi RGB.


Rangkaian:


Upload sketch:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Buka sketch Latihan 03 yang sudah diunduh dan disimpan pada folder Examples sebelumnya.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_03

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) dibawah.
/* Belajar Arduino Dasar
   Latihan 03 LED RGB Berkedip
   
   Make an RGB LED display a rainbow of colors!

   Version 1.0 9/2017 MK
*/
  
const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;

const int DISPLAY_TIME = 1000;  // used in mainColors() to determine the length of time each color is displayed.

void setup() //Configure the Arduino pins to be outputs to drive the LEDs
{
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

void loop()
{
  mainColors();        // Red, Green, Blue, Yellow, Cyan, Purple, White
}

/**********************
 * void mainColors()
 * This function displays the eight "main" colors that the RGB LED
 * can produce. If you'd like to use one of these colors in your 
 * own sketch.
/***********************/
void mainColors()
{
  // all LEDs off
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Red
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Green
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Blue
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);

  // Yellow (Red and Green)
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Cyan (Green and Blue)
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);

  // Purple (Red and Blue)
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);

  // White (turn all the LEDs on)
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);
}

Catatan kode:

Pada sketch latihan ini menunjukan penyederhanan sebuah fungsi didalam fungsi utama loop().

Menulis fungsi sendiri dapat berguna untuk membuat isi sketch terlihat rapi, mudah dipahami, dan efisien.

Pada contoh ini, kita akan membuat satu fungsi: mainColors()

mainColors() berfungsi untuk menampilkan beberapa warna dari kombinasi tiap warna LED (RED, BLUE, dan GREEN) nyala dan mati dengan tingkat kecerahan yang bervariasi bisa sepenuhnya nyala atau sepenuhnya mati.

Pemanggilan fungsi:
Melakukan panggilan pada sebuag fungsi bermaksud untuk menjalankan kumpulan kode dari fungsi tersebut. Karena fungsi mainColors() tidak memiliki parameter didalam tanda kurungnya, jadi untuk memanggilnya sederhana, cukup menuliskan seperti dibawah:
mainColors();

Apa yang seharusnya kamu lihat:

Kamu akan melihat LED menyala, tapi untuk kali ini menyalanya beubah-ubah warna. Jika tidak terjadi, pastikan sketch sudah masuk kedalam Arduino. 


LED Berkedip

LED Berkedip

Pada umumnya percobaan pertama dari sebuah latihan Arduino adalah LED berkedip. Ini merupakan sebuah latihan yang cukup mudah dengan membuat sebuah LED yang terhubung ke pin 13 menyala selama selang waktu 1 detik kemudian mati selama selang waktu 1 detik dan begitu seterusnya. Pada percobaan ini tidak terdapat banyak fungsi yang digunakan tapi merupakan dasar untuk bisa memahami bahasa pemograman yang lebih kompleks nantinya.

+ Pada setiap latihan akan terdapat sebuah penjelasan singkat dan bagaimana percobaan tersebut bekerja.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x LED
— 1 x Resistor 330Ω

+ Ini merupakan daftar komponen yang diperlukan untuk menyelesaikan setiap latiahan.

Komponen yang terpakai pada Shield:

1 x LED yang terhubung ke pin D13.


Rangkaian:


+ Ini adalah gambar rangkaian, sesuai dengan komponen yang digunakan pada Bluino Starter Shield.

Upload sketch Arduino pertama:

Buka software Arduino IDE apabila menggunakan PC/Laptop. Jika menggunakan Android dapat membuka aplikasi Bluino Loader yang sudah diinstal dari Google Playstore. Sebelum membuka sketch Latihan 01 kamu dapat mendownload semua file latihan pada link berikut: Belajar_Arduino_Dasar, kemudian disimpan pada subfolder Examples dari folder Arduino atau BluinoLoader.

Untuk membuka sketch temukan file di: BluinoLoader > examples > Belajar_Arduino_Dasar > Latihan_01

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) dibawah.

/* Belajar Arduino Dasar
   Latihan 01 LED Berkedip
 
   Turn an LED on for one second, off for one second,
   and repeat forever.

   Version 1.0 9/2017 MK
*/

void setup()
{
  pinMode(13, OUTPUT);   // Define pin D13 as output
}

void loop()
{
  digitalWrite(13, HIGH);   // Turn on the LED
  delay(1000);              // Wait for one second
  digitalWrite(13, LOW);    // Turn off the LED
  delay(1000);              // Wait for one second
}

+ Ini adalah sketch Arduino untuk setiap latihan percobaan.

Catatan kode:

Selamat datang di Arduino!
Jika kamu baru pertama mendengar Arduino, kamu akan belajar sesuatu yang baru dan menarik.

Arduino adalah sebuah komputer kecil dan didalamnya berjalan kumpulan kode instruksi yang disebut "sketch". Sketch terdiri dari beberapa baris susunan kode intruksi dan hanya dimengerti oleh Arduino.

Didalam sketch selain berisi baris kode instuksi, terdapat juga beberapa catatan atau "comment" yang dapat berfungsi memberikan sebuah keterangan singkat dari sebuah baris kode instruksi. Comment tidak akan mempengaruhi terhadap kerja dari suatu sketch dan juga comment warnanya dibedakan dengan kode instruksi sehiangga dapat terlihat jelas mana yang merupakan comment.

Untuk menyatakan sebuah huruf, kata atau kalimat menjadi sebuah comment, diawali dengan penulisan garis miring dua kali "//", maka karakter yang ditulis setelahnya dianggap sebagai comment sampai awal garis baru.

/* Tulisan ini juga merupakan contoh sebuah comment, perbedaannya comment ini dapat ditulis dalam satu paragraph tanpa menghiraukan baris baru. Cara penulisan untuk comment seperti ini yaitu diawali dengan garis miring tanda bintang kemudian harus diakhiri dengan tanda bintang garis miring */

Satu blok kumpulan dari baris kode instuksi dapat disebut sebagai "fungsi" yang dapat menjalankan perintah tertentu. Semua sketch Arduino harus memiliki dua fungsi utama yaitu "setup()" dan "loop()". Arduino menjalankan kedua blok fungsi tersebut secara otomatis ketika pertama Arduino dihidupkan atau saat setelah menekan tombol reset.

Fungsi setup() berjalan pertama dan satu kali, sering digunakan untuk penulisan kode yang hanya dibutuhkan satu kali atau pertama seperti inisialisasi.

Arduino memiliki 13 pin digital input/output. Pin-pin tersebut dapat dikonfigurasi sebagai input atau output. Untuk menkonfigurasi pin tersebut menggunakan fungsi bawaan bahasa arduino yaitu pinMode().

Fungsi pinMode() memerlukan dua parameter, yang ditulis setelah nama fungsi didalam tanda kurung. Parameter pertama adalah nomor pin, dan parameter kedua adalah sebuah kata dengan huruf besar yaitu INPUT atau OUTPUT.

Pada contoh sketch ini, kita akan menentukan pin 13 sebagai output (pin yang terhubung dengan sebuah LED). Pin 13 diseting sebagai output karena kita menginginkan untuk mengirim tegangan dari Arduino ke LED.

Semua pin 13 digital pada Arduino stabil bila difungsikan sebagai input maupun output dengan kondisi on/off, atau menerima/mengeluarkan sinyal "digital". Pada pin digital hanya terdapat dua keadaan yaitu akan selalu 5 Volts (atau juga disebut "HIGH"), atau 0 Volts (atau juga disebut "LOW").

Karena hanya terdapat satu LED yang terhubung pin 13, jika membuat kondisi output HIGH, LED akan menerima tegangan dan LED menyala. Jika membuat kondisi output LOW, LED tidak akan menerima tegangan dan LED mati.

digitalWrite() adalah fungsi bawaan bahasa Arduino yang digunakan untuk membuat sebuah pin output digital dalam kondisi HIGH atau LOW. Fungsi ini memerlukan dua parameter; sebuah nomor pin, kemudian diikuti dengan kata HIGH atau LOW:

delay() adalah sebuah fungsi untuk berhenti selama beberapa saat. Fungsi ini memerlukan parameter nilai waktu tunggu, yang dihitung dalam milliseconds. 1000 milliseconds adalah satu detik, maka jika menuliskan "delay(1000)", akan membuat program berhenti selama satu detik.

Semua gabungan dari baris fungsi pada contoh sketch kali ini akan menjadikan sebuah program untuk memerintahkan LED menyala, kemudian menunggu/berhenti selama satu detik, kemudian LED mati, dan menunggu lagi selama satu detik.

Ketika Arduino selesai menjalankan baris fungsi dan berada pada akhir fungsi loop(), maka akan kembali ke awal menjalankan kumpulan baris fungsi yang ada didalam fungsi loop() terus menerus. Jadi program ini akan membuat LED berkedip terus menerus!

Apa yang seharusnya kamu lihat:

Kamu akan melihat LED berkedip menyala dan mati. Jika ini tidak terjadi, pastikan kamu melakukan tahap demi tahap dari percobaan dengan benar pada latihan 01 dan pastikan kamu telah upload sketchnya kedalam Arduino.

Coba rubah nilai 1000 dari fungsi delay() dengan nilai yang berbeda dan lihat bagaimana mempengaruhi waktu berkedip dari LED. Nilai yang kecil akan membuat loop berjalan cepat. (Mengapa?)

Tantangan lain:
* kurangi delay ke 10 ms. Dapatkah kamu melihat LED masih berkedip?
Temukan nilai delay terkecil sehingga kamu masih dapat melihat LED berkedip.

+ Lihat hasilnya jika percobaan latihan kamu selesai dan berjalan benar. 

Arduino Shield

Arduino Shield

Pendahuluan

Arduino bisa disebut sebagai otaknya dari sebuah rangkaian atau project yang kamu bangun dengan Arduino didalamnya, tanpa perangkat input dan output Arduino tidak dapat melakukan banyak hal. Ketika kamu merencanakan atau membuat sebuah prototype, kebanyakan orang menggunakan komponen-komponen dan kabel yang di rangkai pada breadboard dan dihubungkan dengan Arduino, tapi ketika akan menjadikan prototype tersebut menjadi alat jadi serta diproduksi banyak atau dikemas dalam kemasan, akan kesulitan apabila masih menggunakan rangkaian yang dibuat pada breadboard.

Banyak orang-orang atau perusahaan elektronik yang membuat modul dengan masing-masing fungsi yang berbeda dan dapat dengan mudah dipasangkan diatas Arduino, sehingga ketika membuat prototype menjadi sangat mudah dan praktis. Modul tersebut yang dapat dipasang diatas Arduino dengan fungsi tertentu disebut sebagai Shield.


Contoh shield yang sudah ada dan dijual pasaran adalah shield untuk mengontrol motor, shield untuk terhubung dengan internet, shield untuk komunikasi Bluetooth, shield untuk mengontrol LCD dan masih banyak lagi.

Bluino Starter Shield

Bluino Starter Shield adalah salah satu shield Arduino produk Bluino Electronics yang cocok bagi pemula yang ingin belajar dasar Arduino dengan mudah dan praktis.

Dengan shield ini juga kamu dapat membuat beberapa contoh project Arduino yang menarik seperti; jam digital, timer on/off menggunakan relay, termometer digital, pengukur jarak, saklar pengendali melalui bluetooth, mengatur warna lampu LED melalui bluetooth, counter dan masih banyak lagi.
<
Berikut gambar rangkaian keseluruhan dari Bluino Starter Shield:

Pada shield ini sudah terdapat beberapa komponen input dan output yang biasa digunakan untuk project Arduino, Pada gamabar dibawah menunjukan nama-nama komponen yang terdapat didalam shield:



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 shield ini menggunakan active buzzer 5V. Kamu dapat menggunakan buzzer untuk menghasilkan music yang sederhana.

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 Bluetooth — pada Bluino Starter Shield terdapat socket 6 pin untuk memasangkan modul bluetooth HC05, sehingga Arduino bisa melakukan komunikasi data dengan perangkat bluetooth lainnya tanpa kabel. Selain itu modul bluetooth HC05 dapat berfungsi sebagai cara untuk mengisi program (upload sketch) ke dalam Arduino tanpa menggunakan kabel USB. Pengisian program melalui bluetooth bisa dilakukan dari komputer atau dari Android.

7-Segment display — berfungsi sebagai penampil karakter angka dan karakter huruf. Pada display 7 segment juga dilengkapi karakter titik (dot) yang sering dibutuhkan untuk karakter koma atau titik pada saat menampilkan suatu bilangan. Display 7 segment terdiri dari 7 penampil karakter yang disusun dalam sebuah kemasan sehingga dapat menampilkan karakter angka dan karakter huruf. 4 x 7-segment yang digunakan pada Bluino Starter Shield ini kaki dari 7-segment tersebut tidak langsung dihubungkan dengan pin Arduino, karena akan memerlukan jumlah pin yang cukup banyak, tapi menggunakan komponen tambahan yaitu IC 74HC595 (shift register) dan IC 74LS247 (BCD to 7-segment) sehingga hanya memerlukan 4 pin saja untuk menampilkan 4 digit angka dan koma.
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 didalamnya.

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.

LED RGB — adalah sebuah LED yang didalamnya 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.



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.
Photoresistor — (disebut juga sebagai LDR - lightdependent resistor) sebuah variabel resistor yang nilai hambatannya bergantung dari intensitas yang diterima pada permukaan sensor tersebut.
Temperature Sensor — perubahan tegangan output pada sensor ini tergantung dari suhu body komponen tersebut. Kedua sisi kaki terluar dihubungkan dengan positif 5V dan ground, dan output tegangan dari pin tengah.

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.

Modul RTC (Real Time Clock) — merupakan modul yang dapat memberikan informasi mengenai waktu saat ini (real time). Waktu disini dapat berupa detik, menit, hari, bulan dan tahun.

Pada Arduino tidak dilengkapi secara internal dengan RTC. Dengan demikian, untuk aplikasi yang memerlukan pewaktuan, kita harus menyertakannya secara tersendiri. Sebuah RTC dilengkapi dengan baterai, agar RTC tetap dapat bekerja dan menyimpan waktu saat ini. Komunikasi data antara RTC dengan Arduino menggunakan komunikasi I2C.

Apa itu Arduino?

Apa itu Arduino?

Pengenalan Arduino

Arduino adalah sebuah minimum sistem mikrokontroler bersifat open-source yang banyak digunakan untuk membagun sebuah project elektronika. Platform Arduino berisi dua yaitu hardware berupa board dan sebuah software atau IDE (Integrated Development Environment) yang berjalan pada komputer, digunakan untuk menulis dan mengisikan perogram ke board Arduino.

Platform Arduino menjadi sangat populer bagi orang-orang yang ingin memulai belajar elekronika khususnya mikrokontroler, karena dengan memnggunakan Arduino tidak lagi memerlukan hardware tambahan (sering disebut downloader) untuk mengisikan program kedalam board mikrokontroler, tapi hanya perlu kabel USB saja yang disambungkan dari komputer ke board Arduino. Bahasa pemograman yang dituliskan pada Arduino IDE menggunakan bahasa pemograman C++ yang telah disederhanakan, sehingga dapat lebih mudah dimengerti. Sebuah board Arduino didesain dengan standar bentuk board serta posisi dan susunan pin/port sehingga dapat lebih mudah digunakan dan diakses dengan perangkat lain.



Arduino tipe UNO adalah salah satu jenis board dari Arduino yang sangat populer karena merupakan pilihan yang sangat cocok bagi pemula. Pada latihan percobaan yang akan kita praktekan akan mengguanakan board Arduino UNO.



Percaya atau tidak, hanya memerlukan 10 baris kode kamu dapat membuat LED yang berada pada Arduino kamu berkedip. Kode-kode tersebut mungkin kamu belum memahaminya untuk sekarang, tapi setelah membaca dan mengikuti latihan-latihan kamu akan memahami maksud dari kode-kode tersebut atau bahkan dapat mengembangkannya.

Sejatinya Arduino hardware dan software didesain untuk dapat digunakan oleh seniman, desainer, penggiat hobi, hacker, pemula, dan semua orang yang tertarik untuk membuat sebuah objek interaktif. Arduino dapat berinteraksi dengna tombol, LED, motor, speaker, unit GPS, camera, internet, smartphone atau TV dan masih banyak lagi perangkat yang kamu bisa hubungkan dengan Arduino. Arduino sangat fleksibel untuk bisa membuat berbagai project, dimana software Arduino adalah gratis, dan hardware board juga dengan harga yang sangat terjangkau, keduanya baik hardware dan software mudah untuk dipelajari karena sudah terdapat komunitas besar dari pengguna-pengguna Arduino yang sudah berkontribusi contoh program dan instruksi-intruksi untuk membuat berbagai project elektronika yang dibuat menggunakan board Arduino.

Ada apa saja didalam Arduino?

Terdapat banyak varian jenis board Arduino yang dapat digunakan untuk fungsi yang berbeda-beda. Beberapa board ada yang terlihat sedikit berbeda tidak seperti pada gambar dibawah, tetapi hampir semua komponen utama adalah sama:

Power (USB / Barrel Jack)

Setiap Arduino memiliki jalur yang akan dihubungkan dengan sumber tenaga/tegangan. Arduino UNO dapat diberi tegangan melalui USB (1) dapat berasal dari komputer, power bank atau berasal dari power supply melalui barrel jack (2). Koneksi kabel USB juga berfungsi untuk jalur pemograman ke board Arduino.

Perhatian: Jangan menggunakan power supply yang tegangannya lebih dari 20 Volt, karena dapat merusak board Arduino karena overpower. Tegangan yang dizinkan untuk Arduino adalah 6 - 12 Volt.

Pin (5V, 3.3V, GND, Analog, Digital, PWM, AREF)

Pin pada Arduino adalah tempat dimana untuk menyambungkan kabel anatara pin Arduino dengan perangkat-perangkat input/output (biasanya menghubungkan dengan rangakain project pada breadboard). Pin Arduino biasanya berupa female header sehingga untuk mendapatkan koneksi dari pin Arduino hanya cukup colokan kabel ke dalam lubang pin header tersebut. Terdapat beberapa pin pada Arduino dengan fungsi yang berbeda-beda, masing-masing pin diberi label sesuai nama dan fungsinya pada PCB.

— GND (3): Kependekan dari 'Ground'. Terdapat beberapa pin ground dan semuanya dapat digunakan.

— 5V (4) & 3.3V (5): 5V pin memberikan supply tegangan 5 volt, dan 3.3V pin memberikan supply tegangan 3.3 volt. Kebanyakan yang digunakan dengan Arduino bekerja pada tegangan 5 atau 3.3 volt.

— Analog (6): Pin yang berada dibawah tulisan 'Analog In' (A0 sampai A5 pada Arduino UNO) adalah pin Analog Input. Pin ini dapat membaca sinyal dari sensor analog (seperti sensor suhu) dan mengkonversinya kedalam nilai digital yang dapat kita baca.

— Digital (7): Terletak disisi lain dari analog pin terdapat pin digital (0 sampai 13 pada UNO). Pin ini dapat difungsikan sebagai digital input (seperti memberitahukan apabila button dipencet) dan digital output (seperti menyalakan sebuah LED).

— PWM (8): Kamu bisa melihat simbol (~) pada beberapa pin digital (3, 5, 6, 7, 9, 10, dan 11 pada UNO). Pin ini berfungsi sebagai pin digital biasanya, tapi bisa digunakan untuk Pulse-Width Modulation (PWM), sederhananya pin ini dapat mengeluarkan keluaran tegangan Analog.

— AREF (9): Singkatan dari Analog Reference. Pin ini digunakan untuk mengatur tegangan referensi external (antara 0 dan 5 volt) sebagai batas untuk pin analog input.

Tombol Reset

Seperti komputer pada umumnya, Arduino mempunyai tombol reset (10). Menekan tombol ini akan menghubungkan pin reset dengan ground dan merestart semua kode program yang ada didalam Arduino. Reset ini akan sangat membantu jika kode tidak berjalan berulang-ulang, tapi kamu ingin menjalankannya beberapa kali.

Power LED Indicator

Tepat di bawah dan di sebelah kanan kata "UNO" di board Arduino, ada LED kecil di samping kata 'ON' (11). LED ini harus menyala setiap kali Anda memasukkan Arduino Anda ke sumber tegangan. Jika lampu ini tidak menyala, ada kemungkinan ada sesuatu yang salah.

TX RX LED

TX adalah singkatan dari transmit, RX adalah singkatan dari receive. Kata ini cukup familiar dalam istilah elektronik untuk menunjukkan pin sebagai komunikasi serial. Dalam board Arduino terdapat dua tempat tulisan TX dan RX - pertama pada pin digital 0 dan 1, dan yang kedua di samping indikator LED TX dan RX (12). LED ini akan memberi kita beberapa indikasi visual setiap kali Arduino menerima atau mentransmisikan data (seperti saat kita memasukan program baru ke board Arduino).

IC Utama

Berwarna hitam terdapat banyak kaki logam disampingnya adalah IC, atau Integrated Circuit (13). Anggap saja itu sebagai otaknya Arduino. IC utama pada Arduino UNO berbeda dengan jenis board Arduino lainnya tapi biasanya merupakan IC keluarga ATmega yang diproduksi oleh perusahaan ATMEL. Untuk mengetahui jenis IC yang dipakai bisa ditemukan secara tertulis disisi atas IC. Jika Anda ingin tahu lebih banyak tentang perbedaan antara IC tersebut, dapat dilihat pada datasheet.

Voltage Regulator

Regulator tegangan (14) berfungsi untuk membatasi jumlah tegangan yang masuk ke board Arduino. Anggap saja itu sebagai semacam gatekeeper; ini akan menghilangkan tegangan lebih yang mungkin membahayakan sirkuit. Tentu saja, ini memiliki batas, jadi jangan menghubungkan Arduino Anda dengan yang lebih besar dari 20 volt.

9 Okt 2019

13 - Alarm Parkir

Alarm Parkir

Ini merupakan latihan lanjutan dari penggunaan sensor jarak ultrasonik, pada latihan ini kamu akan membuat sensor parkir seperti yang ada pada kendaran roda empat, untuk mengetahui apakah kendaraan tersebut akan mendabrak sesuatu ketika parkir dengan membunyikan sebuah buzzer.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x HC-SR04 Ultrasonik
— 1 x LED RGB
— 1 x Buzzer
— 3 x Resistor 330Ω
— 12 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.
/*
  13 - Alarm Parkir

  Mengontrol warna nyala LED RGB menggunakan sensor jarak ultrasonik.
  Ketika sebuah objek/benda terlalu dekat dengan sensor, maka buzzer berbunyi.
*/

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

int redPin = 9;         //pin mengontrol nyala LED merah didalam LED RGB
int greenPin = 10;      //pin mengontrol nyala LED hijau didalam LED RGB
int bluePin = 11;       //pin mengontrol nyala LED biru didalam LED RGB

int buzzerPin = 8;      //pin yang akan membunyikan buzzer

float distance = 0;           //menyimpan nilai 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
  
  //set pin LED RGB sebagai output
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);

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

}

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

  Serial.print(distance);     //menampilkan jarak yang telah diukur pada serial monitor
  Serial.println(" cm");      //menampilkan unit satuan setelah nilai

  if(distance <= 10){                         //jika objek berada dekat dari sensor
    
    //menyalakan LED RGB menjadi merah
    analogWrite(redPin, 255);
    analogWrite(greenPin, 0);
    analogWrite(bluePin, 0);

    tone(buzzerPin, 272);         //membunyikan buzzer dengan nilai frekuensi 272
    delay(100);                   //jeda 100 milliseconds
    
    noTone(buzzerPin);            //mematikan bunyi buzzer
    delay(100);                   //jeda 100 milliseconds
    
    
  } else if(10 < distance && distance < 20){  //jika objek berada pada jarak yang sedang

    //menyalakan LED RGB menjadi kuning
    analogWrite(redPin, 255);
    analogWrite(greenPin, 50);
    analogWrite(bluePin, 0);
    
  } else{                                     //jika objek berada jauh dari sensor
    
    //menyalakan LED RGB menjadi hijau
    analogWrite(redPin, 0);
    analogWrite(greenPin, 255);
    analogWrite(bluePin, 0);    
  }

  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 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:

Sebuah LED RGB akan menyala warna hijau ketika jarak benda masih cukup jauh, berubah warna menjadi kuning ketika jarak benda berada sudah mulai mendekat, dan akan berubah menjadi merah ketika jarak sensor dengan benda sudah terlalu dekat dibarengi dengan buzzer berbunyi sebagai perhatian.

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

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

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 

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