Tutorial Menggunakan dan Memprogram Servo dengan Arduino
![Gambar](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGK1JIApX72w16ysnp0xSE7JrKeCqudEXjDvUpecUXxpHsKCWMv9WVryxxLhxldD83mIht3CRrEyCrpSNs1dy132_1kg0FrAo7yDB_Nri0BuNXMgY6d4WFPUfNFIgHAsKDUEkhq15qMCxL/w380-h255/acmServo_.jpg)
Tetapi dapat juga dikomunikasikan dengan komputer untuk ditampilkan hasil dari pengolahan datanya sehingga komunikasi yang dilakukan bersifat dua arah.
Pada Arduino IDE terdapat fasilitas untuk berkomunikasi dua arah melalui serial monitor yang dapat dimanfaatkan dalam berbagai keperluan.
Dengan menggunakan fasilitas ini, dapat dikirimkan data ke Arduino Uno dan sebaliknya dapat membaca kiriman dari arduino uno.
Tentu saja, hal ini memungkinkan dapat mengontrol Arduino Uno melalui komputer dan memantau sesuatu yang sedang terjadi di Arduino Uno.
Untuk itu kita akan membahas satu contoh komunikasi serial 2 arduino dan komunikasi I2C LCD.
Kita akan menggunakan 2 Arduino, sebagai penerima (received) dan pengirim (transmitter). Lalu ada inputan menggunakan button dan output nya menggunakan LED dan LCD.
Tutorial ini akan menggunakan proteus untuk mendemo kan contoh kali ini. Jadi bisa disesuaikan untuk rangkaian di proteusnya.
Pin Arduino 1 TX | Pin Komponen |
---|---|
7 | btn 1 |
6 | btn 2 |
5 | btn 3 |
A4 | SDA |
A5 | SCL |
Pin Arduino 2 RX | Pin Komponen |
---|---|
8 | Led |
A4 | SDA |
A5 | SCL |
LCD | pin I2C |
---|---|
VSS | GND |
VDD | Power/DC |
RS/4 | P0/4 |
RW/5 | P1/5 |
E/6 | P2/6 |
D4/11/ | P4/9 |
D5/12 | P5/10 |
D6/13 | P6/11 |
D7/14 | P7/12 |
A0,A1,A2 | GND |
Setelah membuat rangkaiannya, selanjutnya masuk ke program arduino. Berikut code dan penjelasannya :
Pada contoh komunikasi serial ini kita menggunakan 2 Arduino, jadi akan ada dua program. program yang pertama adalah arduino pengirim sebagai pengirim data dan kedua arduino penerima sebagai penerima data.
//------------------------ COPYRIGHT YT CHANNEL : ARIN CANTIKA MUSI -------------------------------//
//--------------------------- COPYRIGHT Kumpulan Tips and Trik ----------------------------------//
//-------------------------------- KOMUNIKASI SERIAL ARDUINO -------------------------------------//
//------------------------------------ ARDUINO PENGIRIM -----------------------------------------//
#include <Wire.h> // Penggunaan Library I2C yang tersedia pada arduino
#include <LiquidCrystal_I2C.h> //Library LCD
LiquidCrystal_I2C lcd(0x20,16,2); //set address I2C dan besar karakter untuk lcd
#define btn1 7 //define (tipedata) > deklarasi variable btn pada pin di arduino
#define btn2 6
#define btn3 5
String a = "KEDIP"; //Inisialisasi pada variable a,b,c
String b = "HIDUP";
String c = "MATI";
String data;
//int dataint;
void setup() {
Serial.begin(9600);
//Serial.begin : untuk menentukan kecepatan pengiriman dan penerimaan data melalui port serial. Kecepatan yang umum digunakan adalah 9600 bit per detik (9600 bps).
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
pinMode(btn3, INPUT_PULLUP);
lcd.init(); //inisialisasi LCD
}
void loop() {
lcd.setCursor(0,0); //mengatur tulisan yang muncul di LCD pada posisi (x,y)
lcd.print("Ini Pengirim");
lcd.setCursor(0,1);
if(Serial.available()) {
data = Serial.read();
Serial.print(data);
lcd.print(data);
}
int n1 = digitalRead(btn1);
int n2 = digitalRead(btn2);
int n3 = digitalRead(btn3);
// Untuk membaca nilai button dan disimpan pada variabel
if (n1 == 0) {
Serial.print(a); //
lcd.setCursor(0,1); //KEDIP
lcd.print(a);//KEDIP
delay(500);
lcd.clear();
}
// Jika nilai button LOW/button ditekan maka akan terjadi kondisi di atas, yaitu menampilkan nilai a = "KEDIP" pada cursor led X=0, Y=1; dan ditampilkan dengan lcd.print() dengan lama tampil sebesar 500 ms. Kemudian tulisan akan dihapus pada layar dengan fungsi lcd.clear().
if (n2 == 0) {
Serial.print(b);
lcd.setCursor(0,1);
lcd.print(b); //HIDUP
delay(500);
lcd.clear();
}
// Jika nilai button LOW/button ditekan maka akan terjadi kondisi di atas, yaitu menampilkan nilai b = "HIDUP" pada cursor led X=0, Y=1; dan ditampilkan dengan lcd.print() dengan lama tampil sebesar 500 ms. Kemudian tulisan akan dihapus pada layar dengan fungsi lcd.clear().
if (n3 == 0) {
Serial.print(c);
lcd.setCursor(0,1);
lcd.print(c); //MATI
delay(500);
lcd.clear();
}
// Jika nilai button LOW/button ditekan maka akan terjadi kondisi di atas, yaitu menampilkan nilai c = "MATI" pada cursor led X=0, Y=1; dan ditampilkan dengan lcd.print() dengan lama tampil sebesar 500 ms. Kemudian tulisan akan dihapus pada layar dengan fungsi lcd.clear().
}
////-------------------------------- Jangan Lupa Subscribe channel youtube : Arin Cantika Musi --------------------------////
////----------------------------------------- Untuk video pembelajaran menarik lainnya ---------------------------------////
/// Share jika bermanfaat beserta sumbernya ////
//-------------------------------------- COPYRIGHT YT CHANNEL : ARIN CANTIKA MUSI --------------------------------------------//
//-------------------------------------------- KOMUNIKASI SERIAL ARDUINO ----------------------------------------------------//
//------------------------------------------------- ARDUINO PENGIRIM -------------------------------------------------------//
#include <Wire.h> // Penggunaan Library I2C yang tersedia pada arduino
#include <LiquidCrystal_I2C.h> //Library LCD
LiquidCrystal_I2C lcd(0x20,16,2); //set address I2C dan besar karakter untuk lcd
int pinled = 8; //mendeklarasi pinled pada pin 8 di arduino
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //: untuk menentukan kecepatan pengiriman dan penerimaan data melalui port serial. Kecepatan yang umum digunakan adalah 9600 bit per detik (9600 bps).
lcd.init(); //inisiasi lcd
pinMode(pinled, OUTPUT); //PinMode menginisialisasi led sebagai OUTPUT
lcd.clear(); //menghapus tampilan LCD
lcd.setCursor(0,0); //mengatur posisi kursor pada x 0 y 0
lcd.print("Ini Penerima"); //menulis kata
Serial.flush(); // berfungsi sebagai untuk pengosongan data pembacaan yang ditaruh pada buffer
}
void loop() {
// put your main code here, to run repeatedly:
String data =""; //Variabel untuk menyimpan nilai String yang didapat dari pengirim
while (Serial.available() > 0){
data += (char) Serial.read();
delay(5); }
// Selama Serial.variable > 0 maka variabel data akan terus menyimpan dan bertambah 1 dari pembacaan Serial.read()/Pembacaan serial dari pengirim
lcd.setCursor(0,0);
lcd.print("Ini Penerima");
delay(50);
// Menampilkan tulisan pada lcd dengan posisi X=0, Y=0 dengan lama 50 ms
if (data == "KEDIP") {
digitalWrite(pinled,HIGH);
delay(100);
digitalWrite(pinled,LOW);
delay(50);
lcd.setCursor(0,1);
lcd.print(data);
delay(50);
lcd.clear();
}
// Jika kondisi diatas memenuhi/ Serial yang dibaca adalah "KEDIP" maka LED akan HIGH dan LOW dengan delay diatas, kemudian akan tampil sebuah kaata sesuai data yang dikirimkan.
else if (data == "HIDUP") {
digitalWrite(pinled,HIGH);
lcd.setCursor(0,1);
lcd.print(data);
delay(50);
lcd.clear();
}
// Jika kondisi diatas memenuhi/ Serial yang dibaca adalah "HIDUP" maka LED akan HIGH dengan delay diatas, kemudian akan tampil sebuah kata sesuai data yang dikirimkan.
else if (data == "MATI") {
digitalWrite(pinled,LOW);
lcd.setCursor(0,1);
lcd.print(data);
delay(50);
lcd.clear();
}
// Jika kondisi diatas memenuhi/ Serial yang dibaca adalah "MATI" maka LED akan LOW dengan delay diatas, kemudian akan tampil sebuah kata sesuai data yang dikirimkan.
}
////-------------------------------- Jangan Lupa Subscribe channel youtube : Arin Cantika Musi --------------------------////
////----------------------------------------- Untuk video pembelajaran menarik lainnya ---------------------------------////
/// Share jika bermanfaat beserta sumbernya ////
Sekian dulu tips dan trik kali ini, semoga bermanfaat dan dapat dipahami teman-teman.
Jika ada yang kurang jelas dan ingin bertanya ataupun request bisa di kolom komentar ya!
Untuk penjelasan lebih bisa di cek pada link youtube berikut :
PENJELASAN KOMUNIKASI SERIAL ARDUINO
Terima kasih dan Have a nice day !!
Makasih atas info nya ya....sukses selalu anda
BalasHapusSangat membantu
BalasHapus