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.