Sunday, October 9, 2016

INPUT OUTPUT DIGITAL ARDUINO

Kali ini kita akan belajar tentang konsep input output digital pada arduino dan bagaimana menggunakan input output digital pada arduino.

Secara umum pin pada Arduino dapat dikonfigurasi ke dalam dua mode, yaitu mode input dan output. Mode input berarti mengeset pin agar dapat digunakan untuk menerima masukan sinyal. Mode output berarti mengeset pin agar dapat mengirimkan sinyal.

Untuk mengeset mode pin, kita gunakan fungsi pinMode(). Fungsi ini biasanya dipanggil di dalam fungsi setup(). fungsi ini memerlukan dua parameter, pinMode([nomorPin], [mode]). Parameter pertama diisi oleh nomor pin, dan parameter kedua diisi oleh konstanta INPUT atau OUTPUT, sesuai dengan mode yang ingin kita gunakan. Sebagai contoh, lihat pada kode berikut.

void setup() {
 pinMode(1, INPUT); //deklarasikan 1 sebagai INPUT 
 pinMode(2, OUTPUT); //deklarasikan 2 sebagai OUTPUT 
} 

INPUT DIGITAL

Input digital digunakan untuk mendeteksi perubahan logika biner pada pin tertentu. Adanya input digital memungkinkan mikrokontroler untuk dapat menerjemahkan 0V menjadi logika LOW dan 5V menjadi logika HIGH.

Membaca sinyal digital pada Arduino dapat menggunakan sintaks digitalRead(pin);
Berikut contoh sederhana membaca state dari sebuah push button, lalu menampilkan kondisi state push button tersebut pada teminal.


Komponen yang digunakan :
- Arduino
- Resistor 330 ohm
- Push Button
- Protoboard
- Kabel jumper



Setelah rangkaian sudah kamu buat hubungkan Arduino ke PC menggunakan kabel downloader. Selanjutnya buka software arduino dan copas program dibawah ini ke software Arduino, kemudian upload lah programnya.

int tombol = 9; //deklarasi pin 9 dengan nama 'tombol'

void setup() {

  Serial.begin(9600); //komunikasi serial dgn baud rate 9600 bits per second
  pinMode(tombol, INPUT); //deklarasikan tombol sebagai INPUT

}

void loop() {

  int keadaanTombol = digitalRead(tombol); //baca state tombol

  if (keadaanTombol == 1) {
    Serial.println("Tombol on"); //print state tombol melalui serial
  }
  else  {
    Serial.println("Tombol off"); //print state tombol melalui serial
  }

  delay(100); //delay 100 milisekon
}
Setelah program selesai kamu upload di software Arduino kemudian buka serial monitor yang berada di pojok kanan atas dengan cara mengekliknya.


Jika Push Button ditekan maka akan muncul tulisan "Tombol on" dan jika Push Button tidak ditekan / dilepas maka akan muncul tulisan "Tombol off". "Tombol on" dan "Tombol off"  merupakan state digital push button yang terbaca pada pin input digital Arduino yang digunakan.

PENJELASAN

Apabila pushbutton ditekan, maka rangkaian akan menjadi closed circuit yang mengakibatkan tegangan 5V timbul pada input pin nomor 9, sehingga Arduino akan mendeteksi logika HIGH (state = Tombol on) pada pin nomor 9. Arduino kemudian mengirimkan state tersebut pada serial komputer dan kita bisa melihat data yang dikirim ke serial komputer tersebut melalui serial monitor.

Sebaliknya, apabila push button dalam keadaan dilepas, maka rangkaian menjadi open circuit, sehingga tidak ada arus yang muncul pada pin nomor 9, maka input digital menganggap (state =Tombol off) karena tidak ada beda potensial antara pin nomor 9 dengan GND.


OUTPUT DIGITAL
Output digital terdiri dari dua buah logika, yaitu kondisi logika HIGH dan kondisi logika LOW.
Untuk menghasilkan output kita dapat menggunakan sintaks digitalWrite(pin,nilai); yang sebelumnya pin sudah diset ke mode OUTPUT, lalu parameter kedua adalah set nilai HIGH atau LOW. Apabila pin diset dengan nilai HIGH, maka voltase pin tersebut akan diset ke 5V atau 3.3V dan bila pin diset ke LOW, maka voltase pin tersebut akan diset ke 0V.

Untuk lebih jelasnya dibawah ini adalah contoh bagaimana mengaktifkan LED sebagai OUTPU.


Komponen yang digunakan :
- Arduino
- LED ( 3 )
- Resistor 330 ohm ( 3 )
- Protoboard
- Kabel jumper

Setelah rangkaian sudah kamu buat hubungkan Arduino ke PC menggunakan kabel downloader. Selanjutnya buka software arduino dan copas program dibawah ini ke software Arduino, kemudian upload lah programnya.
Dengan program di bawah ini led akan menyala secara running dengan terus menerus.

int led1 = 11; //deklarasi pin 11 dengan nama 'led1'
int led2 = 12; //deklarasi pin 11 dengan nama 'led2'
int led3 = 13; //deklarasi pin 11 dengan nama 'led3'

void setup() {
  pinMode (led1,OUTPUT); //deklarasi led1 sebagai OUTPUT
  pinMode (led2,OUTPUT); //deklarasi led2 sebagai OUTPUT
  pinMode (led3,OUTPUT); //deklarasi led3 sebagai OUTPUT
}

void loop() {
  digitalWrite (led1,HIGH);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  delay(500);
  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  digitalWrite (led3,LOW);
  delay(500);
  digitalWrite (led1,LOW);
  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay(500);
}

PERINGATAN!
     Untuk mengaktifkan LED tidak harus menggunakan logika HIGH. Karena penggunaannya sesui dengan rangkaian yang ingin kalian buat. Ada dua jenis pengaktifan yaitu Aktif-High dan Aktif-Low.



Pada rangkaian LED Aktif-High, LED akan menyala jika diberi logika 1 (HIGH) dan akan mati jika diberi logika 0 (LOW)


Pada rangkaian LED Aktif-Low, LED akan menyala jika diberi logika 0 (LOW) dan akan mati jika diberi logika 1 (HIGH).





TUGAS!

Buatlah program di Arduino dimana jika Push Button ditekan maka LED1 menyala, LED2 mati dan jika Push Button dilepas atau tidak ditekan maka LED2 menyala, LED1 mati. Dengan ketentuan jika PB ditekan maka pada serial monitor akan muncul tulisan "HIDUP" dan jika PB dilepas maka akan muncul tulisan "MATI".

JAWAB :
Buatlah rangkaian seperti di atas dengan Arduino kemudian Upload program di bawah ini menggunakan software Arduino kamu :

int tombol = 2; //Pin digital no 2 telah dipasang Push button dan diberi nama 'tombol'
int led1 = 12; //pin digital nomer 12 telah dipasang LED dan diberi nama led1
int led2 = 13; //pin digital nomer 13 telah dipasang LED dan diberi nama led2
void setup() {

  Serial.begin(9600); //mulai komunikasi serial dengan baud rate 9600 bits per second
  pinMode(tombol, INPUT); //deklarasikan tombol sebagai INPUT
  pinMode(led1, OUTPUT); //deklarasikan led1 sebagai OUTPUT
  pinMode(led2, OUTPUT); //deklarasikan led2 sebagai OUTPUT
}

void loop() {

  int keadaanTombol = digitalRead(tombol); //baca state tombol

//print state tombol melalui serial
  if (keadaanTombol == 1) {
    Serial.println("HIDUP");
    digitalWrite(led1,HIGH);
    digitalWrite(led2,LOW);
  }
  else  {
    Serial.println("MATI");
    digitalWrite(led1,LOW);
    digitalWrite(led2,HIGH);
  }

  delay(100); //delay 100 milisekon
}
 Dibawah ini adalah hasil program 

Hasil rangkaian yang sudah jadi


Semoga artikel di atas dapat bermanfaat bagi semuanya ^_^
Mampir juga boleh Klinik Fisioterapi

Friday, October 7, 2016

KOMUNIKASI SERIAL ARDUINO

Kali ini gue akan ngepost tentang bagaimana menggunakan serial monitor pada Arduino, sebelumnya kita mengenal terlebih dahulu pengertian dan berbagai instruksi yang ada di Arduino. Silahkan membaca......^_^


PENGERTIAN

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 serial port library yang memudahkan programmer untuk membuat program.


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”); 
}


TUGAS!

Buatlah program arduino dengan menggunakan serial port sebagai control pengendali.
jika pada serial port di ketik "a" maka led akan jalan running,
jika pada serial port di ketik "b" maka led akan flip flop,
jika pada serial port di ketik "c" maka led akan mati.  
Gunakan 3 LED saja.

JAWAB!

int led1 = 13;
int led2 = 12;
int led3 = 11;
int out;
void setup()
{
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void loop()
{
  if (Serial.available()>0)
  {
    int baca = Serial.read();
    if (baca =='a')
    {
    out=1;
    }
    if (baca =='b')
    {
    out=2;
    }
    if (baca =='c')
    {
    out=3;
    }
    
  if(out==1)
  jalan:                          //LED akan berjalan running
  {
  digitalWrite(led1, HIGH);
  delay(500);
  digitalWrite(led1, LOW);
  delay(500);
  digitalWrite(led2, HIGH);
  delay(500);
  digitalWrite(led2, LOW);
  delay(500);
  digitalWrite(led3, HIGH);
  delay(500);
  digitalWrite(led3, LOW);
  delay(500);
  Serial.println("LED running");
  loop();
  goto jalan;
   }
       
  if(out==2)
  start:                           // LED akan berjalan flip flop
  {
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  delay(500);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  delay(500);
  Serial.println("LED flip flop");  
  loop();
  goto start;
  }
      
  if(out==3)
  stop:                             // LED akan mati
  {
  digitalWrite(led1,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led3,LOW);
  Serial.println("LED mati");
  loop();
  goto stop;
  }
  }
}

Setelah membuat progran diatas dibawah ini adalah langkah - langkah mengaktifkan LED mengunakan serial port :

1. Rangkailah rangkaian menggunakan arduino. Gunakan output di nomor 13,12,11. LED aktif high.


2. Sambungkan kabel downloader ke PC. 
(sebelumnya pastikan kabel downloader sudah terinstal terlebih dahulu di PC anda, jika belum terinstal installah dulu. baca artikel saya sebelumnya tentang cara menginstal downloader arduino).


3. Buka Aplikasi Arduino, kemudian buat program sesuai perintah di atas. atau tinggal copas program yang sudah saya buat.


4. Pastikan port berada pada serial port COM5.


5. Upload program sampai tertera tulisan Done Uploading.


6. Buka serial monitor di pojok kanan atas.


7. Ketikan "a" untuk menjalankan perintah running. "b" untuk menjalankan perintah flip flop. "c" untuk mematikan semua program.


Nah semoga itu semua bermanfaat untuk semuanya :)
Mampir juga boleh Klinik Fisioterapi