Jumat, 29 Mei 2015

Aplikasi yang digunakan untuk menghidupkan danmematikan 3 buah LED

Asalammualaikum Wr.Wb

Selamat datang kembali sahabat mardianto, kali ini saya akan membuat :::::::
Sebuah aplikasi yang digunakan untuk menghidupkan dan
mematikan 3 buah LED yang ada pada Arduino. Pengaturan komunikasi
serial dapat dilakukan langsung pada aplikasi tanpa harus mengubah
program aplikasi.



ini adalah bentuk codingannya yang pertama ::::


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int a = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(a==1)
            {
                button1.Text = "Connect";
                serialPort1.Close();
                a = 0;
                this.Close();
            }
            else
            {
                button1.Text = "Disconnect";
                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text);
                serialPort1.Open();
                a = 1;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (button2.Text == "On")
            {
                button2.Text = "Off";
                serialPort1.Write("1");

            }
            else
            {
                button2.Text = "On";
                serialPort1.Write("0");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (button3.Text == "On")
            {
                button3.Text = "Off";
                serialPort1.Write("3");

            }
            else
            {
                button3.Text = "On";
                serialPort1.Write("2");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (button4.Text == "On")
            {
                button4.Text = "Off";
                serialPort1.Write("5");

            }
            else
            {
                button4.Text = "On";
                serialPort1.Write("4");
            }
        }
    }
}








dan ini codingan yang ke dua :::

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        int a = 0;
        string rx;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (a == 1)
            {
                button1.Text = "Connect";
                serialPort1.Close();
                a = 0;
                this.Close();
            }
            else
            {
                button1.Text = "Disconnect";
                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text);
                serialPort1.Open();
                a = 1;
            }
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
          
            rx = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(tampil));
        }
        void tampil(object sender, EventArgs e)
        {
            textBox1.AppendText(rx);
          
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text == "0")
            {
              
                pictureBox1.Image = WindowsFormsApplication2.Resource1.mati;
                textBox1.Clear();
              
            }
            else if (textBox1.Text == "1")
            {
              
                pictureBox1.Image = WindowsFormsApplication2.Resource1.hidup;
                textBox1.Clear();
              
            }
            else if (textBox1.Text == "2")
            {

                pictureBox2.Image = WindowsFormsApplication2.Resource1.mati;
                textBox1.Clear();

            }
            else if (textBox1.Text == "3")
            {

                pictureBox2.Image = WindowsFormsApplication2.Resource1.hidup;
                textBox1.Clear();

            }
            else if (textBox1.Text == "4")
            {

                pictureBox3.Image = WindowsFormsApplication2.Resource1.mati;
                textBox1.Clear();

            }
            else if (textBox1.Text == "5")
            {

                pictureBox3.Image = WindowsFormsApplication2.Resource1.hidup;
                textBox1.Clear();

            }
        }
    }
}


Baiklah untuk lebih tau cara kerja programnya silahkan kunjungi....


https://youtu.be/Hg9t5w6vJ4g

Komunikasi Serial

Asallammualaikum Wr.Wb.

Selamat datang sahabat mardianto,kali ini saya akan mencoba menerangkan tentang KOMUNIKASI SERIAL

Dasar Teori
Port merupakan kumpulan jalur elektronik untuk menyalurkan
data. Port ada yang untuk input saja, output saja atau input/output.
Port dipakai untuk komunikasi antara CPU dengan monitor, keyboard,
mouse dll.
Proses pengiriman data dapat langsung sekaligus secara paralel
dengan menggunakan beberapa kabel, atau satu-persatu secara
berurutan (serial) dengan menggunakan sepasang kabel. Contoh
transmisi data secara paralel adalah komunikasi harddisk IDE dengan
CPU, komunikasi printer dengan komputer. Contoh transmisi data
secara serial adalah komunikasi harddisk SATA dengan CPU, komunikasi
USB dll.
Mikrokontroller umumnya menggunakan standar komunikasi
serial RS232 untuk koneksi dengan perangkat lain. Komputer juga
memiliki port standar serialport, paralelport, USB, VGA dan PS/2. Pada
praktikum ini kita akan mempelajari penggunaan serial port.



Praktikum
 
1. Tujuan praktikum ini adalah untuk menerima data dari
mikrokontroller melalui port serial. Data yang dikirim oleh
mikrokontroller adalah kondisi dari potensiometer. Nilai analog
tegangan akan dikonversi oleh mikro ke nilai digital dalam range 0
- 1023. Kemudian nilai digital ini yang dikirim ke komputer melalui
port serial. Program pada mikro (kita akan menggunakan arduino)
cukup sederhana:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A1);
delay(500);
Serial.println(sensorValue, DEC);
}


2. Buat solution baru. Susun form dengan control-control seperti
terlihat pada gambar.


3. Komponen Timer ada di Windows Form toolbar. Sedangkan
komponen SerialPort ada di Components toolbar. Jangan lupa, set
properties Enabled di komponen Timer menjadi true. Kemudian
properties Interval di-set menjadi 500 ms.


4. Set ukuran panel menjadi 500x180.


5. Buat objGraphic di panel1 seperti di praktikum sebelumnya.


6. Tambahkan program berikut untuk control button1:


if (button1.Text== "Connect") {
button1.Text= "Disconnect";
serialPort1.Open();
}
else {
button1.Text= "Connect";
serialPort1.Close();
}


7. Tambahkan program berikut ke event DataReceived-nya serial:


rxString=serialPort1.ReadLine();
this.Invoke(new EventHandler(DisplayText));
Kita menggunakan method Invoke karena thread untuk receive
serial berbeda dengan thread program utama. Padahal object
TextBox atau Label, tempat kita untuk menampilkan data serial,
terletak di thread utama. Invoke membuat kita dapat melakukan
cross-thread.
Program di atas akan membuat event DataReceived memanggil
event handler baru yang terletak di thread utama, yaitu
DisplayText.


8. Untuk method DisplayText, tambahkan program berikut:


private void DisplayText(object sender, EventArgs e)
{
textBox1.Text += rxString;
float tinggi= float.Parse(rxString;
tinggi = 179-(tinggi/1023*179);
// geser arraynya
for (int i=0;i<99;i++) {
lokasiY[i] =lokasiY[i+1];
}
lokasiY[99] = (int)tinggi;
}


9. rxString maupun lokasiY adalah variabel global. lokasiY adalah
array berukuran 100 yang berisi 100 kondisi tegangan terakhir.
Sehingga setiap kali program membaca kondisi tegangan terakhir,
maka array akan bergeser ke kiri, kondisi paling lama akan
dibuang.


10. Untuk menampilkan grafik, kita menggunakan cara yang sama
seperti praktikum grafik. Program akan menggambar tiap
TimerTick, dalam hal ini kita sudah set interval-nya menjadi tiap
500 ms. Tambahkan program berikut di TimerTick:


void Timer1Tick(object sender, EventArgs e)
{
Pen pena = new Pen(Color.Black);
int awalX = 0;
int titikMulaiX, titikMulaiY, titikAkhirX, titikAkhirY;
// hapus dulu semuanya
objGraphic.Clear(Color.White);
for(int i=0;i<99;i++) {
titikMulaiX = awalX + i*5;titikMulaiY = lokasiY[i];titikAkhirX = awalX + (i+1)*5;titikAkhirY = lokasiY[i+1];objGraphic.DrawLine(pena, titikMulaiX,titikMulaiY,titikAkhirX,titikAkhirY);}}


11. Compile dan jalankan program


Ini adalah Contoh aplikasi yang telah saya buat
Ini Contoh Codingannya ::::

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace komunikasi_serial
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Write(textBox1.Text);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.Open();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.BytesToRead != 0)
            {
                textBox2.Text = serialPort1.ReadExisting();
            }
        }
    }
}

Dan ini tampilannya :




Untuk lebih jelas silahkan kunjungi........

https://www.youtube.com/watch?v=adzBEECcYSU