1. Tujuan
kembali
Memahami prinsip kerja aplikasi serial
2. Alat dan Bahan
Memahami prinsip kerja aplikasi serial
- Arduino Mega 2560
- Jumper
- Power
- Ground
3. Landasan Teori
kembali
Untuk mengirim data dari arduino ke PC dan menerima data dari PC kita bisa menggunakan berbagai cara salah satunya yg paling sederhana adalah komunikasi Serial yg terdapat pada setiap board Arduino.
Perlu kita ketahuai pemrograman sketch arduino menggunakan gaya bahasa C tapi pada pembuatan librarynya menggunakan C++ yg menerapkan pemrograman Objek (Class). Untuk itu sy sarankan anda sebaiknya mengetahuai sedikit dasar-dasar pemrograman berorientasi objek.
Pemrograman code arduino (sketch) untuk komunikasi serial menjadi mudah karena fungsi fungsi sudah tersedia dlm class yg tersedia untuk komunikasi Serial . Instance dari class untuk komunikasi serial (objek) sudah dibuatkan namanya Serial . Untuk arduino yg mempunyai lebih dari 1 port serial misal arduino mega256 nama objek untuk komunikasi serialnya adalah Serial1, Serial2, Serial3.
Penulisan objek dan fungsi pada library arduino adalah : namaobjek.namafungsi
contoh : Serial.read() , artinya kita memanggil fungsi read() dari objek bernama Serial .
Data yg dikirim ke serial port akan dikirim ke buffer pengirim (Tx buffer) begitupun data yg diterima adalah data yg diambil dari buffer penerima (RX buffer).
Karena data yg diterima arduino juga dlm bentuk ASCII (char) maka
kita tdk bisa langsung melakukan operasi matematika dari data ASCIIpada
program sketch arduino. Data ASCII dari buffer serial harus dirubah
dulu ke bentuk numerik/bilangan (int). misalkan kita menerima data
‘4’ dan ‘3’ maka jika kita langsung jumlahkan ‘3’ + ‘4’ = 103 ,
karena sebenarnya kita menjumlahkan code ascii ‘3’ = 51 dancode ascii
‘4’ =52 (lihat tabel ASCII).Untuk mengirim data dari arduino ke PC dan menerima data dari PC kita bisa menggunakan berbagai cara salah satunya yg paling sederhana adalah komunikasi Serial yg terdapat pada setiap board Arduino.
Perlu kita ketahuai pemrograman sketch arduino menggunakan gaya bahasa C tapi pada pembuatan librarynya menggunakan C++ yg menerapkan pemrograman Objek (Class). Untuk itu sy sarankan anda sebaiknya mengetahuai sedikit dasar-dasar pemrograman berorientasi objek.
Pemrograman code arduino (sketch) untuk komunikasi serial menjadi mudah karena fungsi fungsi sudah tersedia dlm class yg tersedia untuk komunikasi Serial . Instance dari class untuk komunikasi serial (objek) sudah dibuatkan namanya Serial . Untuk arduino yg mempunyai lebih dari 1 port serial misal arduino mega256 nama objek untuk komunikasi serialnya adalah Serial1, Serial2, Serial3.
Penulisan objek dan fungsi pada library arduino adalah : namaobjek.namafungsi
contoh : Serial.read() , artinya kita memanggil fungsi read() dari objek bernama Serial .
Data yg dikirim ke serial port akan dikirim ke buffer pengirim (Tx buffer) begitupun data yg diterima adalah data yg diambil dari buffer penerima (RX buffer).
Data yang dikirm dan diterima arduino dalam bentuk ASCII. Misalnya
program arduino mengirim huruf A maka akan dikirim sebenarnya adalah 1
byte code ascii yaitu 65 . Jika kita mengirim angka 123 maka
sebetulnya yg dikirm adalah 3 byte data ascii yaitu 49, 48, dan 50 .
Selengkapnya anda bisa lihat tabel ASCII berikut :
Untuk merubah data ascii ke data numerik dengan cara yg cukup sederhana yaitu :
-untuk mendapatkan angka 0 dari ascii ‘0’ dgn cara ‘0’- 48=0 (atau bisa juga ditulis ‘0’-‘0’=0)
-untuk mendapatkan angka 1 dari ascii ‘1’ dgn cara ‘1’- 48=1 (atau bisa juga ditulis ‘1’-‘0’=1)
-dan seterusnya.
jadi kalau mau menjumlahkan data ascii ‘3’ dan ‘4’ yg kita terima dari RX Bufer maka code program seharusnya adalah :
int hasil = (‘3’ – ‘0’) + (‘4’ – ‘0’) atau
int hasil = (‘3’- 48) + (‘4’-48) maka hasil berupa bilangan integer 7.
Fungsi fungsi yg tersedia untuk komunikasi serial Arduino
- if (Serial) : Untuk mengecek apakah Port sudah siap
- Serial.available() : Untuk mengecek apakah data sudah ada di buffer penerima
- Serial.begin() : untuk mengeset kecepatan transmisi data
- serial.end() : Untuk menon-aktifkan pin rx dan tx sbg fungsi serial dan kembali sbg pin I/O
- Serial.find() : mencari string dlm buffer data
- Serial.findUntil(): mencari buffer data sampai data dgn panjang/terminator nya yg diberikan ditemukan
- Serial.flush(): menunggu data terkirim semua
- Serial.parseFloat(): mengambil data float pertama dari data di buffer serial.
- serial.parseInt(): mengambil data integer pertama dari data di buffer serial.
- Serial.peek(): mengambil data berikutnya di bufer penerima
- Serial.print() : mengirim data ASCII
- Serial.println() : mengirimdata ASCII + CR,LF (kode enter)
- Serial.read(): membaca data yg diterima
- Serial.readBytes(): membaca data byte yg diterima
- Serial.readBytesUntil()
- Serial.setTimeout(): mengeset batas maksimum waktu tunggu(timeout) transmisi data.
- Serial.write() : mengirim data byte (numerik)
- Serial.serialEvent(): fungsi ini akan dipanggil jika data datang/diterima.berlaku spt interupsi serial.
4. Rangkaian
kembali
Berikut merupakan listing program dari aplikasi kontrol robot :
int led1 = 2;
int led2=3;
int led3=4;
int led4=5; // select the pin for the LED
int val = 0; // variable to store the data from the serial port
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
Serial.begin(9600); // connect to the serial port
}
void loop () {
val = Serial.read(); // read the serial port
if (val =='1' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Hijau");
digitalWrite(led1,HIGH);
int delayTime = 500;
}
}
if (val =='2' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Biru");
digitalWrite(led2,HIGH);
}
}
if (val =='3' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Merah");
digitalWrite(led3,HIGH);
int delayTime = 500;
}
}
if (val =='4' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Kuning");
digitalWrite(led4,HIGH);
int delayTime = 500;
}
}
if (val =='0' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Matisemua LED");
digitalWrite(led4,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
int delayTime = 500;
}
}
val=val-'0';
switch(val){
case 9 :
digitalWrite(led1,LOW);
Serial.println("Mati led1");
break;
case 8 :
digitalWrite(led2,LOW);
break;
case 7 :
digitalWrite(led3,LOW);
break;
case 6 :
digitalWrite(led4,LOW);
break;
}
}
Berikut merupakan listing program dari aplikasi kontrol robot :
int led1 = 2;
int led2=3;
int led3=4;
int led4=5; // select the pin for the LED
int val = 0; // variable to store the data from the serial port
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
Serial.begin(9600); // connect to the serial port
}
void loop () {
val = Serial.read(); // read the serial port
if (val =='1' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Hijau");
digitalWrite(led1,HIGH);
int delayTime = 500;
}
}
if (val =='2' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Biru");
digitalWrite(led2,HIGH);
}
}
if (val =='3' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Merah");
digitalWrite(led3,HIGH);
int delayTime = 500;
}
}
if (val =='4' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Kuning");
digitalWrite(led4,HIGH);
int delayTime = 500;
}
}
if (val =='0' ) {
val = val - '0'; // convert from character to number
{
Serial.println("Matisemua LED");
digitalWrite(led4,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
int delayTime = 500;
}
}
val=val-'0';
switch(val){
case 9 :
digitalWrite(led1,LOW);
Serial.println("Mati led1");
break;
case 8 :
digitalWrite(led2,LOW);
break;
case 7 :
digitalWrite(led3,LOW);
break;
case 6 :
digitalWrite(led4,LOW);
break;
}
}
6. Flowchart
7. link Download
klik dibawah ini untuk mendownload
download rangkaian
download program arduino
Tidak ada komentar:
Posting Komentar