Program Aktivasi Tombol Untuk Ganti Posisi Transmisi Pada Kendaraan Dengan Arduino Nano

Project berikut ini kita akan membuat sebuah kontroller untuk mengendalikan posisi transmisi (gigi) pada kendaraan bermotor. Rangkaian kontroller ini menggunakan Arduino Nano seperti pada gambar berikut.

gbr nano7

Gambar 1 rangkaian tombol dan LED untuk simulasi kontroller transmisi kendaraan.

Pada rangkaian terdapat 6 buah tombol yang terhubung ke pin Ao – A5 Arduino. Tombol ini berfungsi sebagai input signal ke mikrokontroller. Tombol A0 untuk mengaktifkan gigi 1, tombol A1 untuk gigi 2, tombol A2 untuk gigi 3, tombol A3 untuk gigi 4, tombol A4 untuk gigi 5 dan tombol A5 untuk netral. Lampu LED yang terpasang pada pin D11 hingga pin D6 berfungsi sebagai indikator posisi transmisi. Bila hendak diaplikasikan ke kendaraan, maka rangkaian ini harus dihubungkan ke rangkaian interfacing dan aktuator ke sistem transmisi kendaraan yang akan dikontrol.

Untuk mengaktifkan transmisi tinggal menekan tombol gigi yang dikehendaki. Tombol gigi tidak dapat berpindah melompat, tetapi harus bertahap. Tombol Netral dapat diaktifkan pada posisi mana saja. Berikut kode program arduino.

int F;
int tombol1 = A0;
int tombol2 = A1;
int tombol3 = A2;
int tombol4 = A3;
int tombol5 = A4;
int tombol6 = A5;
int led;

void setup ()
{
  pinMode(tombol1, INPUT);
  pinMode(tombol2, INPUT);
  pinMode(tombol3, INPUT);
  pinMode(tombol4, INPUT);
  pinMode(tombol5, INPUT);
  pinMode(tombol6, INPUT);
  for(led=2; led<13; led++)
  {pinMode(led, OUTPUT);}
}

void loop()
{ 
  if(digitalRead(tombol1) == 1)
  {F = 1;}
  else if(digitalRead(tombol2) == 1)
  {F = 2;}
  else if(digitalRead(tombol3) == 1)
  {F = 3;}
  else if(digitalRead(tombol4) == 1)
  {F = 4;}
  else if(digitalRead(tombol5) == 1)
  {F = 5;}
  else if(digitalRead(tombol6) == 1)
  {F = 6;}
  else
  {F = 0;}
  
  switch (F)
  { case 1 : label : digitalWrite(7, LOW);
             digitalWrite(2, HIGH);
             if(digitalRead(tombol5) == 1)
             {digitalWrite(2,LOW);
             break;}
             else if(digitalRead(tombol2) == 1)
             {digitalWrite(2,LOW);
             break;}
             else if(digitalRead(tombol6) == 1)
             {break;}
             else
             {goto label;}
    break;
    case 2 : label2 : digitalWrite(7, LOW);
             digitalWrite(3, HIGH);
             if (digitalRead(tombol1) == 1)
             {digitalWrite(3,LOW);
             break;}
             else if(digitalRead(tombol3) == 1)
             {digitalWrite(3,LOW);
             break;}
             else if(digitalRead(tombol6) == 1)
             {break;}
             else
             {goto label2;}
    break;
    case 3 : label3 : digitalWrite(7, LOW);
             digitalWrite(4, HIGH);
             if(digitalRead(tombol2) == 1)
             {digitalWrite(4,LOW);
             break;}
             else if(digitalRead(tombol4) == 1)
             {digitalWrite(4,LOW);
             break;}
             else if(digitalRead(tombol6) == 1)
             {break;}
             else
             {goto label3;}
    break;
    case 4 : label5 :digitalWrite(7, LOW);
             digitalWrite(5, HIGH);
             if(digitalRead(tombol3) == 1)
             {digitalWrite(5,LOW);
             break;}
             else if(digitalRead(tombol5) == 1)
             {digitalWrite(5,LOW);
             break;}
             else if(digitalRead(tombol6) == 1)
             {break;}
             else
             {goto label5;}
    break;
    case 5 : label6: digitalWrite(7, LOW);
             digitalWrite(6, HIGH);
             if(digitalRead(tombol4) == 1)
             {digitalWrite(6,LOW);
             break;}
             else if(digitalRead(tombol6) == 1)
             {break;}
             else if(digitalRead(tombol1) == 1)
             {digitalWrite(6,LOW);
             goto label;}
             else
             {goto label6;}
    break;
    case 6 :  digitalWrite(7, HIGH);
              digitalWrite(2, LOW);
              digitalWrite(3, LOW);
              digitalWrite(4, LOW);
              digitalWrite(5, LOW);
              digitalWrite(6, LOW);
   break;
    
   default :  digitalWrite(7, HIGH);
              digitalWrite(2, LOW);
              digitalWrite(3, LOW);
              digitalWrite(4, LOW);
              digitalWrite(5, LOW);
              digitalWrite(6, LOW);
    break;
}
}

Berikut hasilnya :

Tombol untuk pilihan pada Arduino Nano

Deskripsi Project :

Pada project ini, kita akan membuat 5 buah tombol pilihan yang terpasang pada pin A0, A1, A2, A3 dan A4. Jika ke 5 buah tombol ini tidak ditekan, maka lampu LED 6 akan menyalah, Jika tombol A0 ditekan, maka lampu LED 11 yang akan menyalah, jika tombol A1 ditekan, maka lampu LED 10 yang akan menyalah dan seterusnya hingga tombol ke A4 yang menyalahkan lampu LED 7.

kode Program Arduino :

int F;
int tombol1 = A0;
int tombol2 = A1;
int tombol3 = A2;
int tombol4 = A3;
int tombol5 = A4;
int led;

void setup ()
{
  pinMode(tombol1, INPUT);
  pinMode(tombol2, INPUT);
  pinMode(tombol3, INPUT);
  pinMode(tombol4, INPUT);
  pinMode(tombol5, INPUT);
  for(led=2; led<13; led++)
  {pinMode(led, OUTPUT);}
}

void loop()
{ 
  if(digitalRead(tombol1) == 1)
  {F = 1;}
  else if(digitalRead(tombol2) == 1)
  {F = 2;}
  else if(digitalRead(tombol3) == 1)
  {F = 3;}
  else if(digitalRead(tombol4) == 1)
  {F = 4;}
  else if(digitalRead(tombol5) == 1)
  {F = 5;}
  else
  {F = 0;}
  
  switch (F)
  { case 1 : digitalWrite(7, LOW);
             digitalWrite(2, HIGH);
    break;
    case 2 : digitalWrite(7, LOW);
             digitalWrite(3, HIGH);
    break;
    case 3 : digitalWrite(7, LOW);
             digitalWrite(4, HIGH);
    break;
    case 4 : digitalWrite(7, LOW);
             digitalWrite(5, HIGH);
    break;
    case 5 : digitalWrite(7, LOW);
             digitalWrite(6, HIGH);
    break;
    default : digitalWrite(7, HIGH);
              digitalWrite(2, LOW);
              digitalWrite(3, LOW);
              digitalWrite(4, LOW);
              digitalWrite(5, LOW);
              digitalWrite(6, LOW);
    break;
}
}

atau dapat juga menggunakan kode program arduino berikut ini.

int F;
int tombol1 = A0;
int tombol2 = A1;
int tombol3 = A2;
int tombol4 = A3;
int tombol5 = A4;
int led;

void setup ()
{
  pinMode(tombol1, INPUT);
  pinMode(tombol2, INPUT);
  pinMode(tombol3, INPUT);
  pinMode(tombol4, INPUT);
  pinMode(tombol5, INPUT);
  for(led=2; led<13; led++)
  {pinMode(led, OUTPUT);}
}

void loop()
{ 
  if(digitalRead(tombol1) == 1)
  {digitalWrite(7, LOW);
   digitalWrite(2, HIGH);
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);}
  else if(digitalRead(tombol2) == 1)
  {digitalWrite(7, LOW);
   digitalWrite(2, LOW);
   digitalWrite(3, HIGH);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);}
  else if(digitalRead(tombol3) == 1)
  {digitalWrite(7, LOW);
   digitalWrite(2, LOW);
   digitalWrite(3, LOW);
   digitalWrite(4, HIGH);
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);}
  else if(digitalRead(tombol4) == 1)
  {digitalWrite(7, LOW);
   digitalWrite(2, LOW);
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, HIGH);
   digitalWrite(6, LOW);}
  else if(digitalRead(tombol5) == 1)
  {digitalWrite(7, LOW);
   digitalWrite(2, LOW);
   digitalWrite(3, LOW);
   digitalWrite(4, LOW);
   digitalWrite(5, LOW);
   digitalWrite(6, HIGH);}
  else
   {digitalWrite(7, HIGH);
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW); }
}

hjk

ON – OFF lampu LED dengan 1 Tombol

Deskripsi :

Project berikut ini kita akan mencoba menyalahkan dan mematikan lampu LED dengan menggunakan 1 buah tombol tekan. Tombol tekan (push button) dipasang di pin A0 dan lampu LED dipasang di pin D2. Kondisi awal, lampu LED tidak menyalah (OFF), ketika tombol ditekan 1 kali, maka lampu LED akan menyalah (ON) dan ketika lampu LED menyalah dan tombol ditekan 1 kali, maka lampu LED akan padam (OFF).

Flowchart :

Sebelum menulis kode program terlebih dahulu, kita menyusun flowchart program sebagai berikut.

gbr nano6

Gambar 1 flowchart

Kode program arduino :

/* menyalahkan dan mematikan lampu LED dengan menggunakan 1 tombol
   by djukarna @ STKIP SURYA                                       */
   
char tombol = A0;
char led = 2;
char A = 0;
char B = 0;

void setup()
{
  pinMode(tombol, INPUT);
  pinMode(led, OUTPUT);
}

void loop()
{
 label:  A = digitalRead(tombol);
          delay(300);
          if(A == 0) {goto label;}
          if (A == 1)
          {
            if(B == 0 )
              {  digitalWrite(led,HIGH);
                 B = 1;}
            else
              { digitalWrite(led,LOW);
                B = 0;}
          }
}

Penjelasan program :

char tombol = A0;
char led = 2;
char A = 0;
char B = 0;

Mula-mula dideskripsikan terlebih dahulu variabel-variabel  yang akan digunakan. Dalam program ini akan digunakan 4 variabel yaitu variabel “tombol” sebagai pin A0 yang akan digunakan untuk sebagai pin input, variabel “led” sebagai pin D2 yang akan digunakan sebagai pin output, variabel “A” yang nilai awal 0 yang akan digunakan sebagai variabel input dari tombol dan variabel “B” yang nilai awalnya 0 yang akan digunakan sebagai proses logika dalam program utama.

void setup()
{
  pinMode(tombol, INPUT);
  pinMode(led, OUTPUT);
}

Tahap berikutnya kita mengatur fungsi pin mikrokontroller yaitu pin A0 sebagai pin input (dalam hal ini diwakili oleh variabel “tombol”) dan pin D2 sebagai variabel output yang diwakili oleh variabel “led”.

void loop()
{
 label:  A = digitalRead(tombol);
          delay(300);               //waktu tunda untuk debouncing
          if(A == 0) {goto label;}  //looping untuk debouncing
          if (A == 1)
          {
            if(B == 0 )
              {  digitalWrite(led,HIGH);
                 B = 1;}
            else
              { digitalWrite(led,LOW);
                B = 0;}
          }
}

Pada program utama, pertama – tama program akan membaca pin A0 dan memindahkan isi pin A0 ke variabel “A”. Untuk menjaga kestabilan tombol, maka digunakan waktu tunda (delay) selama 300 ms dan “looping” selama nilai “A” masih sama dengan 0. Jika tombol ditekan, maka A akan bernilai 1, sehingga program akan menjalan perintah setelah proses debouncing, tetapi jika A bernilai 0 (tombol tidak ditekan) maka program akan looping mengulang membaca kembali tombol A.

Jika tombol ditekan, maka variabel “A” akan bernilai 1 dan program akan pindah ke baris di bagian bawah dan kemudian membandingkan nilai variabel B dengan angka 0. Karena di bagian deklarasi awal, variabel “B” sudah diberi nilai awal sebesar 0, maka pernyataan ini akan bernilai benar dan program di baris berikutnya akan dijalankan yaitu menyalahkan lampu LED dan mengganti nilai B dengan 1. Setelah itu program akan melakukan pengulangan ke awal yaitu membaca kembali tombol. Selama tombol tidak ditekan, maka program dibawahnya tidak akan dijalankan.

Ketika tombol kembali ditekan, maka pernyataan ” A == 1″ akan kembali bernilai benar dan program akan menjalankan baris berikutnya yaitu membandingkan nilai B dengan 0 (B==0), karena pada proses sebelumnya nilai B sudah diganti dengan 1, maka pernyataan menjadi salah sehingga pembacaan program loncat ke pernyataan “else” dan menjalankan perintah yang ada dibawah “else” yaitu mematikan lampu LED dan kembali mengganti nilai B dengan 0. Demikian proses berulang-ulang.

Pada program ini yang menjadi masalah adalah mengatasi kondisi bouncing yang timbul pada tombo,l ketika toombol ditekan. Untuk mengatasi hal ini, dapat digunakan waktu tunda sebesar beberapa mili detik supaya data yang masuk benar-benar stabil baru nilai data diambil. Penentuan waktu tunda ini dapat dilakukan dengan coba-coba dan sangat tergantung pada jenis tombol yang digunakan.

video ini menunjukkan hasil dari program ini.

Input Output Arduino 2

Pada program sebelumnya kita sudah mencoba input dan output pada Arduino Nano. Pada pembahasan ini kita akan membuat program sebagai berikut :

” jika tombol 2 ditekan, maka lampu LED akan bergerak dari LED 2 ke LED 11, tetapi jika tombol 2 tidak ditekan, maka lampu akan bergerak dari LED 11 ke LED 2″

Kode Program Arduino :

 

/* program input output arduino nano
   by djukarna @ STKIP SURYA        */


int tombol1 = A0;
int tombol2 = A1;
int tombol3 = A2;
int tombol4 = A3;
int tombol5 = A4;

int LED;

void setup()
{
  for(LED=2; LED<13; LED ++)
  {pinMode(LED, OUTPUT);}
   pinMode(tombol1, INPUT);
   pinMode(tombol2, INPUT);
   pinMode(tombol3, INPUT);
   pinMode(tombol4, INPUT);
   pinMode(tombol5, INPUT);
}

void loop() 
{ int a;
  a = digitalRead(tombol2);
  if (a == 1)
  {  for(int b=2; b<13; b++)
    { digitalWrite(b,HIGH);
      delay(25);
      digitalWrite(b,LOW);
      delay(25);}
  }
  else
  {for(int b=12; b>1; b--)
    { digitalWrite(b,HIGH);
      delay(25);
      digitalWrite(b,LOW);
      delay(25);}
  }  
}

Penjelasan Program:

Kode awal program sama dengan kode awal program sebelumnya hanya ada perubahan pada bagian program utama yaitu pada “void loop ()”. Pada program ini kita menambahkan pernyataan “if – else ” untuk perintah pemilihan.

Pada mulanya dideklarasi sebuah variabel pembantu “a” sebagai sebuah bilangan bulat. Kemudian variabel “a” ini dinyatakan sebagai hasil pembacaan (“digitalRead”) dari “tombol 2”. Maka nilai tombol 2 akan disimpan ke dalam variabel “a”. Jika tombol 2 ditekan, maka pin “A0” akan mendapatkan tegangan 5V, sehingga variabel “a” akan bernilai 1, tetapi jika tombol 2 tidak ditekan, maka pin “A0” akan mendapat tegangan 0V, sehingga variabel “a” akan bernilai 0.

Logika ini yang akan dipakai untuk proses pemilihan tipe output. Output untuk Led menyalah bergantian, sudah dibahas sebelumnya, jadi tinggal copas saja. Untuk pemilihan kita gunakan perintah “if – else” seperti kode program di atas.

Berikut ini video dari kode program di atas

Input / Output pada Arduino Nano

Pada kesempatan ini akan dibahas input dan output pada Arduino Nano. Input menggunakan tombol (push button) yang menghubungkan pin analog (pin A) dengan sumber tegangan 5V. Bila tombol ditekan, maka akan ada tegangan 5 V pada pin arduino yang terhubung pada tombol tersebut. Pada tiap pin ditambahkan resistor pulldown yang berfungsi untuk memberikan tegangan 0V pada saat tombol tidak ditekan sehingga tidak terganggu oleh listrik statis yang ada di sekitarnya.

Sedangkan untuk output masih sama dengan tutorial sebelumnya yaitu menggunakan lampu LED sebagai beban output. Lampu LED ini terhubung pada pin digital arduino yaitu pin D2 – pin D12. Skema rangkaian untuk tutorial ini dapat dilihat seperti pada gambar 1 berikut ini.

gbr nano5

Gambar 1 skema rangkaian yang akan digunakan.

Foto rangkaian dapat dilihat pada gambar 2 berikut ini.

 IMG_0687

Gambar 2 foto rangkaian percobaan input / output Arduino Nano

Untuk percobaan pertama ini kita akan membuat program yang cara kerjanya demikian :

“jika tombol 1 ditekan, maka LED1 menyalah, jika tombol 1 dilepas, LED 1 padam. Jika tombol 2 ditekan, maka LED2 menyalah, jika tombol 2 dilepas, LED2 padam, dan seterusnya hingga tombol 5.

Kode program arduino :

/* program input output arduino nano
   by djukarna @ STKIP SURYA        */


int tombol1 = A0;
int tombol2 = A1;
int tombol3 = A2;
int tombol4 = A3;
int tombol5 = A4;

int LED;

void setup()
{
  for(LED=2; LED<13; LED ++)
  {pinMode(LED, OUTPUT);}
   pinMode(tombol1, INPUT);
   pinMode(tombol2, INPUT);
   pinMode(tombol3, INPUT);
   pinMode(tombol4, INPUT);
   pinMode(tombol5, INPUT);
}

void loop() 
{
  digitalWrite(12,digitalRead(tombol1));
  digitalWrite(11,digitalRead(tombol2));
  digitalWrite(10,digitalRead(tombol3));
  digitalWrite(9,digitalRead(tombol4));
  digitalWrite(8,digitalRead(tombol5));
}

Penjelasan Program

Pada mulanya kita mendeklarasikan terlebih dahulu variabel “tombol1”, “tombol2”, “tombol3”, “tombol4”, dan “tombol5” sebagai bagian dari pin A0 sampai pinA4 arduino dan tambahan sebuah variabel “led” untuk mengatur pin output.

Pada bagian “setup”, pin D2 sampai pin D12 difungsikan sebagai pin OUTPUT, sedangkan pin A0 sampai pin A4 difungsikan sebagai pin INPUT.

Program utama dalam “void loop ()” sangat sederhana, kita hanya memindahkan kondisi pin A0 ke LED 1 (pin D12), kondisi pin A1 ke LEd2 (pin D11) dan seterusnya hingga tombol ke 5 (pin A4). Bila tombol 1 yang terpasang pada pin A0 tidak ditekan, maka pada pin A0 tegangannya akan menjadi 0V sehingga yang ditulis pada pin 12 (D12) atau LED1 adalah 0 (LOW), sebaliknya jika tombol1 ditekan, atau pin A0 mendapat tegangan 5V, maka pada pin 12 (D12) atau LED1 akan ditulis 1 HIGH. Demikian juga dengan pin yang lainnya.

Video berikut menunjukan hasil dari program arduino ini.

Jawaban Mari Bermain Lampu LED dengan Arduino Nano (bagian 2)

1. Pertanyaan :

Buat program untuk menyalahkan lampu LED kebalikan dari yang bagian2.

Jawab

mudah saja tinggal balik fungsi yang ada di dalam perintah “for”, sehingga kode program menjadi seperti ini:

/*  Program 3 running LED2
    Dibuat oleh : Djukarna
    STKIP SURYA             */

void setup() 
{
  int pinLED;
  for(pinLED = 2; pinLED < 13; pinLED ++)
    {pinMode(pinLED, OUTPUT);}
}

void loop() 
{
  int LED;
  for(LED = 13; LED > 1; LED --)
    {digitalWrite(LED, HIGH);
     delay(50);
     digitalWrite(LED, LOW);
     delay(50);}
}

Penjelasan program

semua sama kecuali pada bagian :

for(LED = 2; LED < 13; LED ++)

dibalik menjadi

for(LED = 13; LED > 1; LED --)

Tadinya program menghitung maju dari LED = 2 sampai LED = 12 dengan kenaikan 1 sekarang menjadi menghitung mundur dari LED = 13 menjadi LED = 2 dengan turun satu-satu.

Berikut hasilnya :

 

2. Pertanyaan :

Coba ubah program sehingga lampu LED menyalah satu-per-satu kemudian mati satu-per-satu

Jawab :

Untuk ini kita harus menggunakan 2 kali proses pengulangan. Pengulangan pertama untuk menyalahkan lampu satu per satu dan pengulangan kedua untuk mematikan lampu satu per satu. Berikut ini kode programnya :

/*  Program 2 running LED1 (ON one by one & OFF one by one)
    Dibuat oleh : Djukarna
    STKIP SURYA             */

void setup() 
{
  int pinLED;
  for(pinLED = 2; pinLED < 13; pinLED ++)
    {pinMode(pinLED, OUTPUT);}
}

void loop() 
{
  int LED;
  for(LED = 2; LED < 13; LED ++)
    {digitalWrite(LED, HIGH);
     delay(500);}
  for(LED = 2; LED<13; LED ++)   
     {digitalWrite(LED, LOW);
     delay(500);}
}

Pada bagian loop terlihat pada mulanya kita menyalahkan lampu dari LED = 2 sampai LED = 12 kemudian keluar dari pengulangan pertama masuk ke pengulangan kedua yang mematikan lampu satu per satu dari LED = 12 hingga LED = 2.

untuk menyalahkan dan mematikan satu per satu lampu LED denga arah terbalik maka kode program menjadi :

/*  Program 3 running LED2 (ON one by one & OFF one by one)
    Dibuat oleh : Djukarna
    STKIP SURYA             */

void setup() 
{
  int pinLED;
  for(pinLED = 2; pinLED < 13; pinLED ++)
    {pinMode(pinLED, OUTPUT);}
}

void loop() 
{
  int LED;
  for(LED = 13; LED > 1; LED --)
    {digitalWrite(LED, HIGH);
     delay(100);}
  for(LED = 13; LED > 1; LED --) 
     {digitalWrite(LED, LOW);
     delay(100);}
}

berikut hasilnya :

 

3. Pertanyaan

coba ubah program agar lampu LED menyalah bolah-balik

jawab:

Mudah saja tinggal membuat 2 kali fungsi pengulangan pada bagian loop yaitu :

/*  Program 4 running LED3
    Dibuat oleh : Djukarna
    STKIP SURYA             */

void setup() 
{
  int pinLED;
  for(pinLED = 2; pinLED < 13; pinLED ++)
    {pinMode(pinLED, OUTPUT);}
}

void loop() 
{
  int LED;
  for(LED = 13; LED > 1; LED --)
    {digitalWrite(LED, HIGH);
     delay(10);
     digitalWrite(LED, LOW);
     delay(10);}
  for(LED = 2; LED < 13; LED ++)
    {digitalWrite(LED, HIGH);
     delay(10);
     digitalWrite(LED, LOW);
     delay(10);}
}

Berikut hasilnya :

 

Kalau hendak dinyalakan dan dimatikan satu per satu dan bolak-balik maka kode program menjadi :

/*  Program 4 running LED3 (one by one)
    Dibuat oleh : Djukarna
    STKIP SURYA             */

void setup() 
{
  int pinLED;
  for(pinLED = 2; pinLED < 13; pinLED ++)
    {pinMode(pinLED, OUTPUT);}
}

void loop() 
{
  int LED;
  for(LED = 13; LED > 1; LED --)
    {digitalWrite(LED, HIGH);
     delay(100);}
  for(LED = 13; LED > 1; LED --) 
     {digitalWrite(LED, LOW);
     delay(100);}
  for(LED = 2; LED < 13; LED ++)
    {digitalWrite(LED, HIGH);
     delay(100);}
  for(LED = 2; LED < 13; LED ++)
     {digitalWrite(LED, LOW);
     delay(100);}
}

Berikut hasilnya :

 

Nah selamat mencoba!
berikutnya akan dibahas tentang input digital

Mari Bermain Lampu LED dengan Arduino Nano (bagian 2)

Lanjut……………………………………… bro

latihan berikutnya adalah kita akan menyalahkan lampu LED yang terpasang pada pin D2 hingga pin D12 secara bergantian dari kiri ke kanan, ehhhmmmmmmmmmm, mungkin kanan ke kiri,,,,,, gak juga atas ke bawah,,,,, bukan juga bawah ke atas…. ya itulah relatif, yang pasti nyala bergantian satu per satu berurutan dan searah.

skema rangkaian sama dengan skema rangkaian pada bagian 1.

Flowchart untuk kode program :

FC1

Gambar 1 Flowchart program

Kode program adalah sebagai berikut :

/*  Program 2 running LED1
    Dibuat oleh : Djukarna
    STKIP SURYA             */

void setup() 
{
  int pinLED;
  for(pinLED = 2; pinLED < 13; pinLED ++)
    {pinMode(pinLED, OUTPUT);}
}

void loop() 
{
  int LED;
  for(LED = 2; LED < 13; LED ++)
    {digitalWrite(LED, HIGH);
     delay(100);
     digitalWrite(LED, LOW);
     delay(100);}
}

Penjelasan program :

Pertama-tama, kita mendeklarasikan sebuah variabel bilangan bulat “pinLED”. Variabel ini digunakan untuk mengatur pin mode board arduino nano sebagai pin output dengan menggunakan perintah pengulangan “for”. Tahap berikutnya  kembali dideklarasikan variabel bilangan bulat “LED”. Setelah itu lampu LED dinyalakan bergantian dengan selang waktu 100 ms mulai dari lampu led pada pin D2 (LED=2) hingga lampu led pada pin D12(LED=12 ). jika LED > atau = 13, maka program akan berulang kembali dari awal. Hasilnya dapat dilihat pada video berikut ini.

coba ganti nilai delay dari 100 ms menjadi 500 ms dan lihat efeknya.

Latihan :

1. coba ubah arah nyalah lampu LED menjadi sebaliknya.

2. coba ubah program sehingga lampu LED menyalah satu-per-satu kemudian mati satu-per-satu .

3. coba ubah program agar lampu LED menyalah bolah-balik

Bersambung ……………………………………………………………………………………..

Jawaban Soal Mari Bermain Lampu LED dengan Arduino Nano (bagian 1)

Pertanyaan :

“ Buat program flip-flop dengan menggunakan 2 kelompok lampu LED yaitu LED pada pin D2 – pin D6 sebagai kelompok pertama dan pin D8 – pin D12 sebagai kelompok kedua. Kedua kelompok ini menyalah bergantian dengan selang waktu 500 milidetik. LED pada titik tengah yaitu pin D7 menyalah berkedip sendiri dengan selang waktu 1 detik. “

Jawab :

Board arduino nano terhubung ke 11 lampu LED dengan konfigurasi sebagai berikut :

pinD2 – pinD6 sebagai kelompok LED 1

pinD7 sendiri berkedip dengan selang waktu 1 detik = 1000 ms

pin D8 – pin D12 sebagai kelompok LED 2

kelompok LED 1 dan kelompok LED 2 menyalah flip-flop dengan selang waktu 500 ms

skema rangkaian adalah sebagai berikut :

gbr nano4Gambar 1 skema rangkaian

kode program arduino

/* flip-flop by djukarna @ STKIP SURYA*/
 
 int kled1;
 int kled2;
 int ledD7 = 7;
 
void setup()
{
  int i;
  for(i=2 ; i<13; i++)
  {pinMode(i,OUTPUT);}
}

void loop()
{
  digitalWrite(ledD7,HIGH);
  for(kled1=2; kled1<7; kled1++)
  {digitalWrite(kled1,HIGH);}
  for(kled2=8; kled2<13; kled2++)
  {digitalWrite(kled2,LOW);}
  delay(500);
  for(kled1=2; kled1<7; kled1++)
  {digitalWrite(kled1,LOW);}
  for(kled2=8; kled2<13; kled2++)
  {digitalWrite(kled2,HIGH);}
  delay(500);
  
  digitalWrite(ledD7,LOW);
  for(kled1=2; kled1<7; kled1++)
  {digitalWrite(kled1,HIGH);}
  for(kled2=8; kled2<13; kled2++)
  {digitalWrite(kled2,LOW);}
  delay(500);
  for(kled1=2; kled1<7; kled1++)
  {digitalWrite(kled1,LOW);}
  for(kled2=8; kled2<13; kled2++)
  {digitalWrite(kled2,HIGH);}
  delay(500);
}

Penjelasan kode program

Pertama-tama dideklarasikan terlebih dahulu 3 variabel yaitu variabel “kled1” sebagai kelompok LED 1, variabel “ledD7” sebagai variabel LED yang terpasang pada pin D7 dan variabel “kled2” sebagai kelompok LED 2. Kemudian pada bagian program “setup”, kita harus mengatur seluruh pin D sebagai output, ini dapat dilakukan dengan mendeskripsikan satu persatu, namun hal ini akan menambah panjang kode program atau dapat menggunakan perintah pengulangan “for” seperti pada kode program di atas.

logika pemograman, kelompok LED1 dan kelompok LED2 menyalah flip-flop dengan selang waktu 500 ms sehingga untuk menjalankan 1 siklus (flip-flop) dibutuhkan waktu 2 x 500 ms = 1000 ms. Sedangkan lampu LED yang terpasang pada pin D7 menyalah berkedip dengan selang waktu 1000 ms. Ini akan memudahkan kita membuat program. program dibagi menjadi 2 blok yaitu blok flip dengan lampu LED pada pin D7 menyalah 1000 ms dan blok flop dengan lampu LED pada pin D7 mati selama 1000 ms.

Bingung ?, coba buat program di atas dan upload, terus lihat hasilnya, baru bisa paham, kalau cuma dibayangkan nanti hanya jadi program angan-angan belaka 😀

berikut foto hasilnya:

IMG_0667

berikut videonya :

Mari Bermain Lampu LED dengan Arduino Nano (bagian 1)

Cara yang paling mudah untuk mempelajari pemograman mikrokontroller adalah dengan memahami terlebih dahulu bagaimana proses input/output tegangan pada mikrokontroller. Aplikasi paling mudah adalah dengan menggunakan lampu LED. Berikut ini rangkaian untuk membuat aplikasi lampu LED dengan Arduino Nano.
gbr nano2

Gambar 1 skema rangkaian aplikasi lampu LED dengan arduino nano

Gambar 1 menunjukkan skema rangkaian board arduino nano dengan 11 buah lampu LED. Kaki anoda LED dihubungkan ke pin D2 hingga pin D12, jadi semuanya terdapat 11 lampu LED. Semua kaki katoda LED dihubungkan ke ground board arduino nano. Rangkaian ini disebut rangkaian common cathoda (katoda bersama). Pada rangkaian common cathoda, LED akan menyalah jika kaki anoda diberi tegangan positif dan akan mati jika kaki anoda diberi tegangan negatif.

Sumber tegangan untuk board arduino nano menggunakan sumber tegangan dari USB port komputer, sehingga rangkaian akan aktif jika dihubungkan dengan komputer melalui USB port. Gambar 2 menunjukan foto board arduino nano yang terpasang pada papan rangkaian dan terhubung ke 11 buah lampu LED dengan mengikuti skema rangkaian pada gambar 1.

gbr nano 1

Gambar 2 foto rangkaian board arduino nano yang sudah terhubung ke lampu LED

Berikut ini beberapa contoh program untuk memvariasikan nyala lampu LED.

 

1. Program 0 membuat lampu LED berkedip

Program 0 ini merupakan program yang paling dasar. Tujuannya adalah untuk menyalahkan lampu LED selama beberapa detik dan mematikan juga selama beberapa detik dan berulang-ulang sehingga LED berkedip-kedip. LED yang akan dibuat berkedip adalah LED yang terpasang pada pin D3. LED akan menyalah selama 750 milidetik dan mati selama 750 milidetik.

Berikut ini kode program untuk membuat lampu LED berkedip

/*  Program 0 LED berkedip
    Dibuat oleh : Djukarna
    STKIP SURYA             */

int pinLED1 = 3;
  
void setup()
{
 pinMode(pinLED1, OUTPUT);
}

void loop() 
{
  digitalWrite(pinLED1,HIGH);
  delay(750);
  digitalWrite(pinLED1,LOW);
  delay(750);
}

Tampilan pada Program Arduino sebagai berikut

gbr led1

Gambar 3 Tampilan pada program Arduino

Cara kerja program :

/*  Program 0 LED berkedip
    Dibuat oleh : Djukarna
    STKIP SURYA             */

Baris program diatas tidak akan dieksekusi, karena hanya sebagai label saja.

int pinLED1 = 3 ;

Baris berikutnya adalah deklarasi variabel yaitu mendeklarasikan variabel “pinLED1” sebagai pin D3.

Selanjutnya program akan menjalankan perintah :

void setup()
{
 pinMode(pinLED1, OUTPUT);
}

Pada baris program “setup” di atas, mikrokontroller akan mengatur pin D3 (“pinLED”) sebagai pin OUTPUT, sehingga pin D3 dapat mengeluarkan tegangan 5V pada kondisi HIGH dan tegangan 0V pada kondisi LOW.

Program utama adalah:

void loop() 
{
  digitalWrite(pinLED1,HIGH);
  delay(750);
  digitalWrite(pinLED1,LOW);
  delay(750);
}

Pada program utama, mikrokontroller akan mengeluarkan tegangan 5V pada pin D3 dan menahannya selama 750 milidetik, kemudian mengeluarkan tegangan 0V pada pin D3 dan menahannya selama 750 milidetik. Akibatnya lampu LED akan menyalah berkedip-kedip dengan selang waktu 750 milidetik.

Penulisan program harus memperhatikan penggunaan tanda huruf besar dan huruf kecil, serta tanda “ ; “ dan “ { } “, jangan sampai tertinggal atau tertukar.

Setelah program selesai ditulis dan diperiksa dengan benar, cobalah untuk men-upload program ke mikrokontroller dengan mengklik tanda upload pada toolbar atau dari menu program. Bila tidak ada kesalahan dalam penulisan kode program maka program akan ter-upload ke mikrokontroller dan lampu LED yang terpasang pada pin D3 akan berkedip.

Selanjutnya cobalah mengubah lamanya waktu tunggu dengan mengganti nilai 750 dengan nilai yang anda kehendaki dan upload kembali program ke mikrokontroller. Lihatlah perbedaan yang terjadi pada nyala lampu LED yang terpasang pada pin D3.

Cobalah buat modifikasi pada program dengan menyalahkan lampu-lampu LED yang lain.

 

2. Program 1 membuat lampu flip-flop

Pada latihan program 1 kita akan membuat lampu flip-flop, yaitu lampu LED yang menyalah secara bergantian dengan selang waktu tertentu. Lampu LED yang akan dibuat menjadi lampu flip-flop adalah lampu LED yang terpasang pada pin D2 dan pin D3. Selang waktu flip-flop adalah 750 milidetik. Berikut ini kode program untuk membuat lampu flip-flop LED.

/*  Program 1 LED flip-flop
    Dibuat oleh : Djukarna
    STKIP SURYA             */

int pinLED1 = 2;
int pinLED2 = 3;
  
void setup()
{
 pinMode(pinLED1, OUTPUT);
 pinMode(pinLED2, OUTPUT);
}

void loop() 
{
  digitalWrite(pinLED1,HIGH);
  digitalWrite(pinLED2,LOW);
  delay(750);
  digitalWrite(pinLED1,LOW);
  digitalWrite(pinLED2,HIGH);
  delay(750);
}

Tampilan pada program arduino adalah sebagai berikut

gbr nano3

Gambar 3 tampilan pada program arduino

Cara kerja program :

Program ini hampir sama dengan program pertama, kita hanya menambahkan beberapa baris kode program. Karena kita akan menggunakan 2 buah lampu LED, maka pada bagian deklarasi variabel ditambah variabel “pinLED1” yang terpasang pada pin D2 dan “pinLED2” yang terpasang pada pin D3. Selanjutnya pada bagian “setup” kedua pin tersebut diatur sebagai pin output, seperti pada kode program berikut ini.

void setup()
{
 pinMode(pinLED1, OUTPUT);
 pinMode(pinLED2, OUTPUT);
}

Selanjutnya pada program utama, kita akan menyalahkan kedua lampu LED secara bergantian. Kode program utama adalah sebagai berikut.

void loop() 
{
  digitalWrite(pinLED1,HIGH);
  digitalWrite(pinLED2,LOW);
  delay(750);
  digitalWrite(pinLED1,LOW);
  digitalWrite(pinLED2,HIGH);
  delay(750);
}

Pada mulanya kita akan menyalahkan LED yang terpasang pada pin D2 dan mematikan LED yang terpasang pada pin D3 selama 750 milidetik, kemudian kondisi ini dibalik dengan menyalahkan LED pada pin D3 dan mematikan LED pada pin D2 selama 750 milidetik. Program ini akan berulang tak terhingga (infinite loop).

Setelah kode program selesai ditulis dan diperiksa, cobalah upload ke board arduino nano dan lihatlah apa yang terjadi pada lampu LED di pin D2 dan pin D3.

Selanjutnya silakan modifikasi kode program dengan mengubah nilai waktu tunda dari 750 milidetik menjadi nilai lainnya, upload dan lihat perbedaan yang terjadi.

Untuk latihan lebih lanjut, cobalah buat program berikut ini.

“ Buat program flip-flop dengan menggunakan 2 kelompok lampu LED yaitu LED pada pin D2 – pin D6 sebagai kelompok pertama dan pin D8 – pin D12 sebagai kelompok kedua. Kedua kelompok ini menyalah bergantian dengan selang waktu 500 milidetik. LED pada titik tengah yaitu pin D7 menyalah berkedip sendiri dengan selang waktu 1 detik. “

bersambung …………………………… ke bagian 2

Komunikasi Data Serial

Komunikasi data serial digunakan untuk komunikasi antara board arduino dengan komputer atau perangkat lain. Semua board arduino mempunyai sedikitnya 1 buah port serial yang juga dikenal dengan nama UART atau USART. Komunikasi data serial menggunakan 2 buah pin yaitu pin RX untuk menerima data dan ppin TX untuk mengirimkan data. Pada board arduino pin RX terletak pada pin0 dan pin TX terletak pada pin1. Ketika board arduino dikonfigurasikan untuk berkomunikasi secara serial, maka kedua pin0 dan pin1 tidak dapat digunakan sebagai pin input/output digital.
Pada sistem operasi windows XP dan sebelumnya terdapat program HyperTerminal yang dapat digunakan untuk berkomunikasi secara serial dengan hardware, Pada Windows yang lebih baru, seperti Win7, Win8 dan Vista program hyperterminal sudah tidak tersedia. Tetapi hal ini tidak menjadi masalah, program Arduino telah menyediakan serial monitor yang dapat dibuka dengan memilih tool – serial monitor pada menu program arduino atau dengan mengetik shift-ctrl-M bersamaan.
Board Arduino Nano dilengkapi dengan 1 buah serial port yang dapat diakses melalui mini-usb port dengan membuat virtual comport atau melalui pin0 dan pin1.
Program Arduino telah dilangkapi dengan serialport library yang memudahkan programmer untuk membuat program. Berikut ini beberapa intruksi yang terdapat dalam serialport library yang dapat digunakan pada board Arduino Nano.

1. Serial.available()

Digunakan untuk menyatakan angka, bytes atau karakter yang sudah siap dibaca dari serial port. Data ini adalah data yang telah diterima dan disimpan dalam serial receive buffer. Serial receive buffer dapat menampung 64 bytes data. Berikut ini contoh penulisan instruksi available.

int dataterkirim = 0;   

void setup() 
{ Serial.begin(9600);} 

void loop() 
{
  if (Serial.available() > 0) 
{
  	dataterkirim = Serial.read();
  	Serial.print("saya menerima data: ");
  	Serial.println(dataterkirim, DEC);
 	}
}

2. Serial.begin()

“begin()” digunakan untuk mengatur baudrate / kecepatan transmisi data. Beberapa pilihan kecepatan komunikasi data yang dapat digunakan pada board arduino adalah 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 atau 115200. Pengaturan baudrate dilakukan pada bagian setup(). Berikut ini format penulisan dan contoh program “begin()”

void setup() { Serial.begin(9600);}

3. Serial.end()

Perintah “serial.end()” digunakan untuk menutup komunikasi serial port. Berikut format penulisan dan contoh program. Untuk membuka kembali komunikasi serial port dapat menggunakan perintah “Serial.begin()”.

Serial.end

4. Serial.find()

Perintah “Serial.find() digunakan untuk membaca data dari serial port buffer hingga target yang ditentukan dalam perintah “Serial.find()” terpenuhi. Fungsi akan bernilai benar jika target tercapai dan bernilai salah jika target tidak tercapai. Berikut ini contoh penulisan program “Serial.find()”.

Serial.find

5. Serial.print()

Perintah “Serial.print” digunakan untuk menampilkan data ke serial monitor. Data yang ditampilkan dapat berupa karakter, bytes, atau angka. Berikut ini beberapa contoh perintah “serial.print()”.

Serial.print(78)                // mencetak "78" 
Serial.print(1.23456)           // mencetak "1.23" 
Serial.print('N')               // mencetak "N" 
Serial.print("Hello world.")    // mencetak "Hello world." 
Serial.print(78, BIN)           // mencetak "1001110" 
Serial.print(78, OCT)           // mencetak "116" 
Serial.print(78, DEC)           // mencetak "78" 
Serial.print(78, HEX)           // mencetak "4E" 
Serial.println(1.23456, 0)      // mencetak "1" 
Serial.println(1.23456, 2)      // mencetak "1.23" 
Serial.println(1.23456, 4)      // mencetak "1.2346" 

Terdapat 2 macam yaitu Serial.print dan Serial.println. perbedaannya adalah jika “Serial.print” akan menampilkan data di serial monitor dalam satu baris, tetapi perintah “Serial.println” akan menampilkan data di serial monitor pada baris baru.

6. Serial.read()

Perintah “Serial.read()” digunakan untuk membaca data dari serial port. Berikut contoh penulisan perintah “Serial.read()”

void loop() 
{
  if (Serial.available() > 0) 
{
  	dataterkirim = Serial.read();
  	Serial.print("saya menerima data: ");
  	Serial.println(dataterkirim, DEC);
 	}
}

7. Serial.write()
Perintah “Serial.write” digunakan untuk membaca data biner dari serial port. Data ini dikirim dalam bentuk byte atau deretan data byte. Contoh penulisan perintah “Serial.write”

 

void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.write(45); 
   int bytesSent = Serial.write(“hello”); 
}