Laporan praktikum mikrokontroler dan indonesia

PRAKTIKUM MIKROKONTROLER

LAPORAN PRAKTIKUM

Oleh
Fahmi Ulin Nuha
NIM E32151173

PROGRAM STUDI TEKNIK KOMPUTER
JURUSAN TEKNOLOGI INFORMASI
POLITEKNIK NEGERI JEMBER
2017

Laporan praktikum mikrokontroler perlu menyiapkan bahan bahan yang akan digunakan :

Pendahuluan:
1. Deskripsi Singkat
Visual C# merupakan sebuah alat bantu pemrograman desktop yang berorientasi
objek yang dibuat oleh Microsoft Corporation. Visual C# dapat digunakan untuk
membuat program berbasis grafis dengan menggunakan bahasa pemrograman yang
mirip dengan C++.

Bahan dan aplikasi :
1.
2.
3.
4.

Arduino board
Laptop
Csharpdevlop
Shield arduino uno

1. Patrikum pertama
Pada praktikum pertama (praktikum 2 P1 dan P2) yaitu mencoba
mengkomunikasikan antara arduino ono dengan port serial lalu menghidupakan led
pada board arduino
Pelaksanakan
Untuk percobaan pertama membuka csharpdevlop dan mulai membuat desain dan
masukan coding agar bisa terkonneksi dengan arduino

Gambar 1 desain pada csharpdevlop

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.IO.Ports;
using System.IO;

maksut dalam program diatas adalah menggunakan library yang ada pada csharpdevlop
dan yang dibutuhkan di komunikasi serial
namespace fahmi_uln_nuha_E32151173
{ public partial class MainForm : Form
{
public MainForm()
{
}
void RadioButton1CheckedChanged(object sender, EventArgs e)
{
}
void Timer1Tick(object sender, EventArgs e) // suatu fungsi timer

{
if (serialPort1.IsOpen == true) // jika pembacaan srialport berlogika benar
{
rd1.Text="stastus: terhubung"; // menampilkan status
rd1.Checked = true;
}
else
{
rd1.Text="status : tidak terhubung";
rd1.Checked= false;
}
program diatas menujukan suatu fungsi , fungsi timer untuk menujukan status terhubung
dan mengirimkan data pada arduino untuk bisa terkonneksi
}
void Btn3Click(object sender, EventArgs e)
{
serialPort1.PortName= cb1.SelectedItem.ToString();
serialPort1.BaudRate= Convert.ToInt32(cb2.SelectedItem.ToString());
serialPort1.Open();
}

fungsi diatas sebagai pembacaan komunikasi serial jika di klik maka ia kan membaca
serialport lalau menconvertnya
void Btn4Click(object sender, EventArgs e)
{
serialPort1.Close();
}
fungsi diatas menunjukan pemutusan komunikasi serial
void Btn1Click(object sender, EventArgs e)
{
serialPort1.WriteLine("on");
}

fungsi diatas memunjukan pengiriman data dengan tipe data karakter “on”
void Btn2Click(object sender, EventArgs e)
{
serialPort1.WriteLine("off");
}
fungsi diatas menunjukan pengiriman data dengan tipe data karakter “off”
selanjutnya pada arduinonya
String dataTerima; // membuat variable dataTerima

void setup() { // untuk inisialaisasi pin
// put your setup code here, to run once:
Serial.begin(9600); //mengatifkan serialmonitor
pinMode(13, OUTPUT); // inisialisasi port 13 sebagai output
}
void loop() { // pemanggilan program yang akan di ulang
// put your main code here, to run repeatedly:
if (Serial.available()>0) // jika ada data serial masuk
{
dataTerima= Serial.readStringUntil('\n');} // dibacakan pada tipe data string
if (dataTerima == "on") // jika data serial “on”
{
digitalWrite(13, HIGH); //led hidup selama 1 detik
delay(1000);
digitalWrite(13, LOW); // led mati selama 1 detik
delay(1000);
Serial.println("hidup");
}else
if (dataTerima== "off") jika data “off”
{

digitalWrite(13, LOW); // led mati
Serial.println("mati");
}
}
Program diatas menunjukan led akan hidup jika ada data serial dari csharpdevelop “on”
selama 1 detik dan akan mati selama 1 detik lalu akan di ulang lagi , namun akan mati jika
data yang diterima “off”

2. Praktikum ke dua

Praktikum kedua ini (praktikum ke 3 P1 dan P2) yaitu melakukan komunikas serial antara
sharpdevlop dengan arduino board untuk menghidupkan beberapa led dengan bantuan
project board.
Pelaksanaan
Pelakasaan praktikum pertama yang dilakukan yaitu menambah button pada desain
sharpdevlop L1 ON , L2 ON, L3 ON, L4 ON, L1 OFF, L2 OFF, L3 OFF dan L4 OFF seperti gambar
di bawah

Lalu isi button dengan program untuk mengirim data serial pada arduino , berikut
programnya :

void Button1Click(object sender, EventArgs e)
{
serialPort1.WriteLine("A");
}
void Button2Click(object sender, EventArgs e)
{
serialPort1.WriteLine("B");
}
void Btn7Click(object sender, EventArgs e)
{
serialPort1.WriteLine("C");
}
void Btn8Click(object sender, EventArgs e)
{
serialPort1.WriteLine("D");
}
void Btn9Click(object sender, EventArgs e)
{
serialPort1.WriteLine("a");
}

void Btn10Click(object sender, EventArgs e)
{
serialPort1.WriteLine("b");
}
void Btn11Click(object sender, EventArgs e)
{
serialPort1.WriteLine("c");

}
void Btn12Click(object sender, EventArgs e)
{
serialPort1.WriteLine("d");
}
Pada program tersebut merupak program untuk mengirimkan data serial yang berupa
A,B,C,D,a,b,c dan d , data tersebut dikirim ke arduino board lalu akan di baca sebagai input
pada arduino , argar mendapat reaksi dan dapat membac data serialnya maka perlu
program pada arduinonya , programnya seperti berikut :
String dataTerima;
void setup() {
// put your setup code here, to run once:

Serial.begin(57600);
pinMode(13,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(14, INPUT_PULLUP);
pinMode(15, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);
}
void led()
{
pwm();
digitalWrite(13, 1);
delay(nDelay);
digitalWrite(13, 0);
delay(nDelay);
Serial.println(nDelay);
if(dataTerima == "A"){digitalWrite(9, HIGH); Serial.println("led 1 hidup");}
if(dataTerima == "B"){digitalWrite(10, HIGH);}

if(dataTerima == "C"){digitalWrite(11, HIGH);}
if(dataTerima == "D"){digitalWrite(12, HIGH);}
if(dataTerima == "a"){digitalWrite(9, LOW);Serial.println("led 1 mati");}
if(dataTerima == "b"){digitalWrite(10, LOW);}
if(dataTerima == "c"){digitalWrite(11, LOW);}
if(dataTerima == "d"){digitalWrite(12, LOW);}
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>0)
{
dataTerima = Serial.readStringUntil('\n');
led();
}

Program arduino yang di masukan diatas yaitu program untuk membaca kiriman data serial,
untuk inisialisasi pin pada arduino lalu reaksi yang akan dilakukan ketika ada inputan data
serial , contohnya jika ada inputan “A” maka pin 9 akan aktif dan berlogika satu maka akan
hidup pada let pertama jika ada inputan “a” maka pin sembilan akan berlogika 0 dan amati
pada led pertama.

Prktikum selanjutnya ya itu membuat led berkedip sesuai delay yang di berikan melalui data
serial
Pelaksaan
Pertama tambahkan scrolbar dan lalu atur range pada desain seperti gambar berikut

Lalu tambahkan bahkan program pada scrolbarnya
void Scr1Scroll(object sender, ScrollEventArgs e)
{
label1.Text= "NILAI:" + scr1.Value.ToString();
}
program menunjukan data serial yang terdapa pada scrolbar
selanjutnya isi program pada arduino , program yang saya masukan seperti ini :
String dataTerima = "off";
int pwm;
int nDelay = 1000;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(13, OUTPUT);
}

void loop() {
if(Serial.available()>0)
{

dataTerima=Serial.readStringUntil('\n');}
pwm = dataTerima.toInt();
nDelay = dataTerima.toInt();
analogWrite(13, digitalRead(13)^1);
delay (ndelay)
// put your main code here, to run repeatedly:
}
Program ini menunjukakan delay yang deberikan sesuai inputan data seria yang di terima
dari sharpdevlop
3. Praktitum ke tiga
Praktikum ke tiga (praktikum 4 P1 dan P2)
Praktikum ini dilakukan untuk meredeupkan dan mencerahkan led dengan pwm namun
pwmnya di tentukan melauli data serial yang dikirim .
Pelaksaan
Tambahkan timer dan label untuk mengatur tempo dan menampilkan data serial nantinya
seperti berikut :

Lalu isi program pada komponen timer :

private void Timer2Tick(object sender, EventArgs e)
{
serialPort1.WriteLine(scr1.Value.ToString());
//string dataKirim = "A" + scr1.Value.ToString() + "B" + scr2.Value.ToString() + "C" +
scr3.Value.ToString() + "D";
//tx3.Text= dataKirim;
//serialPort1.WriteLine(dataKirim);
}
program tersebut menunjukakan pembacaa data serial pada scrol bar dan mengirimkan
data serial nantiny pada arduino board
lalu tambahkan program pada scrol bar dan edit value pada scrol bar
void Scr1Scroll(object sender, ScrollEventArgs e)
{
label1.Text= "NILAI:" + scr1.Value.ToString();
}
menampilkan nilai data serial pada label 1
jadi nanti ketika dijalankan akan berdampak redup terangnya led menggunakan pwm yang
dikirim melului serial.
Prakktikum selanjutnya yaitu menambah lednya dan lalu menambah program namun
dampak yang dilakukan sama dengan yang dilakukan sebelumnya
Pelaksanan
Tambahkan crolbar chekbox dan label yang berfungsi nanti ketika program di jalankan
seperti gambar berikut

Program yang di butuhkan untuk tiap komponen yang di butuhkan

Yang pertama pada scrolbar program yang di isi dalam beberapa scrolbar pada sharpdevlop
Berikut progrm yang ada :
void Scr1Scroll(object sender, ScrollEventArgs e)
{
label1.Text= "NILAI:" + scr1.Value.ToString();
}
void Scr2Scroll(object sender, ScrollEventArgs e)
{
label2.Text= "NILAI:" + scr1.Value.ToString();
}
void Scr3Scroll(object sender, ScrollEventArgs e)
{
label3.Text= "NILAI:" + scr1.Value.ToString();
}
program diatas memanpilkan data serial pada label
pada timer
private void Timer2Tick(object sender, EventArgs e)
{
//serialPort1.WriteLine(scr1.Value.ToString());
string dataKirim = "A" + scr1.Value.ToString() + "B" + scr2.Value.ToString() + "C" +
scr3.Value.ToString() + "D";
tx3.Text= dataKirim;
serialPort1.WriteLine(dataKirim);
}
data serial yang dikirim yaitu dalam satu data dan di pisahkan dengan huruf abcd , lalu
dikirim sebgai variable dataKirim, dataKirim yaitu sebagai variable global
pada chekbox
void CheckBox1CheckedChanged(object sender, EventArgs e)
{
if(checkBox1.Checked == true)
{
timer2.Enabled = true;
checkBox1.Text= "hidup";
}
if(checkBox1.Checked == false)
{
timer2.Enabled = false;
checkBox1.Text= "mati";
}
}
pada chekbox ini adalah berguna untuk menghidupkan timer2

String dataTerima;
int nA,nB,nC,nD;
String pwm1,pwm2,pwm3;
int npwm1,npwm2,npwm3;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
if(Serial.available()>0)
{
dataTerima = Serial.readStringUntil('\n');
}
nA = dataTerima.indexOf("A");
nB = dataTerima.indexOf("B");
nC = dataTerima.indexOf("C");
nD = dataTerima.indexOf("D");
pwm1= dataTerima.substring(nA+1,nB);
pwm2= dataTerima.substring(nB+1,nC);
pwm3= dataTerima.substring(nC+1,nD);
npwm1 = pwm1.toInt();
npwm2 = pwm2.toInt();
npwm3 = pwm3.toInt();
analogWrite(9,npwm1);
analogWrite(10,npwm2);
analogWrite(11,npwm3);
// put your main code here, to run repeatedly:
}
Program arduino ini berfungsi sama dengan praktikum sebelumnya yaitu mambaca serial
untuk dijadikan pwm sebagai redup terangnya led
4. Praktikum ke empat
Pada praktikum (praktikum ke 5 P1 da P2) yaitu memapilkan nama pada label dengan
komunikasi serial
Pelaksanaan
Tambahkan label dan serial port
Lalu tambhakan program pada serial port

void SerialPort1DataReceived(object sender, SerialDataReceivedEventArgs e)
{
dataTerima = serialPort1.ReadLine();
setText(dataTerima);
dataTerima="";
}
program tersebut untuk meneriam data serial yang dikirim
void setText(string data)
{
if(this.labelDataSerial.InvokeRequired)
{
stringInvoke d = new stringInvoke (setText);
this.Invoke(d, new object[] {data});
}
else
{
this.labelDataSerial.Text=data;
}
}
data serial yang akan dikirim
lalu tambahakn variable dataTerima pada variable global di bagian atas
string dataTerima;
delegate void stringInvoke(string text);
lalu tambhakan lagi program terakhir yaitu program arduinonya
void setup() {
// put your setup code here, to run once:
Serial.begin(57600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("E32151173");
delay(1000);
Serial.println("fahmi ulin nuha");
delay(1000);
}
Program tersebut untuk mengirimkan data serial pada sharp devlop , akan di tampilkan
pada interface sharp devlop
Praktikum selanjutnya yaitu mengganti gambar dengan gambar 2 melalui inputan data serial
melalui board arduino .

Pelaksanaan
Pertama tambahakann 6 gambar yang dimasukan pada 6 picturebox tambahakn lalu timpa
gambar 1 sama yang lain
Lalu tambahkan program berikut pada timer1
if(labelDataSerial.Text.Substring(0,1) =="1")
//if(scr1.Value