PRAKTIKUM MIKROKONTROLER
LAPORAN PRAKTIKUM
Oleh
Fahmi Ulin Nuha
NIM E32151173
PROGRAM STUDI TEKNIK KOMPUTER
JURUSAN TEKNOLOGI INFORMASI
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.
Arduino board
2.
Laptop
3.
Csharpdevlop
4.
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;
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) {
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) {
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”
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) {
}
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;
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() {
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 :
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
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) {
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
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
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<=74)
program di atas dijalankan untuk cheng gambar jika logika satu benar maka gambar 1 tampil jika 0 salah maka gambar 2 yang akan tampil , begitu seterusnya samapai gambar 6
lalu program ini ke arduino
}
void coba() {
int pinA0 = digitalRead(14); int pinA1 = digitalRead(15); int pinA2 = digitalRead(16);
if (pinA0 == LOW )
Serial.println("0"); }
else {
Serial.println("1"); }
delay(500); }
void loop() { coba();}
program diatas mengirim data sesuai inputan yang di lakukan , data yang dikirim berupa data serial yang kan dikirim pada interface dan dibaca sebagi input untuk mengubah gambar
5. Praktikum ke lima
Praktikum yang ke lima (praktikum 6 P1 dan P2 ) yaitu membaca data analog pada shield arduino
Pasang shield pada arduino lalu bacakan datanya sebagi imputan untuk menyalakan scrolbral berjalan sesuai imputan yang dibaca , lalu ubah value sesuai max masukan nilai
Lalu untuk program dari interface untuk membaca seperti berikut :
int nA = labelDataSerial.Text.IndexOf("A"); int nB = labelDataSerial.Text.IndexOf("B"); int nC = labelDataSerial.Text.IndexOf("C"); int nD = labelDataSerial.Text.IndexOf("D");
label1.Text= "Nilai: " + labelDataSerial.Text.Substring(nA +1, nB - nA-1); label2.Text= "Nilai: " + labelDataSerial.Text.Substring(nB +1, nC - nB-1); label3.Text= "Nilai: " + labelDataSerial.Text.Substring(nC +1, nD - nC-1);
int d1 = Convert.ToInt32(labelDataSerial.Text.Substring(nA +1, nB - nA-1)); int d2 = Convert.ToInt32(labelDataSerial.Text.Substring(nB +1, nC - nB-1)); int d3 = Convert.ToInt32(labelDataSerial.Text.Substring(nC +1, nD - nC-1));
scr1.Value= d1; scr2.Value= d2; scr3.Value= d3;
di atas adalah program untuk membaca data serial dan memetakan nilai yang akan di baca
sementara program transmiter serialnya seperti berikut
maksut program diatas adalah mengirimkan nilai serial yaitu Abil1Bbil2Cbil3D
6. Praktikum ke enam
Pada praktikum ke enam (praktikum 7 P1 dan P2) Yaitu menampilkan data dan menyimpannya
Pelaksanaan
void Timer3Tick(object sender, EventArgs e) {
string dataRecord;
System.DateTime localDate= System.DateTime.Now;
dataRecord = localDate.ToString() + ":" + scr3.Value.ToString(); lbx1.Items.Add(dataRecord);
program tersebut yaitu berfungsi untuk menampilkan data pada lisbox
berikut program untuk memulai record
void Cx1CheckedChanged(object sender, EventArgs e) {
if (cx1.Checked == true) {
timer3.Enabled=true; }
else {
timer3.Enabled=false; }