Monday, December 27, 2010

Pengendalian LED RGB + Arduino dengan VB.net

Terinispirasi beberapa sumber mengenai pengendalian LED RGB dengan mikrokontroler (antara lain dari situs Pa Insan http://insansainsprojects.wordpress.com/2010/12/20/bermain-ribuan-warna-dengan-led-rgb/ dan http://www.sfgate.com/mp/truveo/search/view?id=144115239614471511&stype=burningman), saya mencoba membuat pengendalian LED RGB melalui Arduino, yang dikoneksikan ke Komputer melalui serialport, GUI yang digunakan VB.net (visual studio 2008)
Berikut ini photo dan video hasil eksperimen:


GUI yang direalisasi pada VB.net


Beberapa hasil warna yang dihasilkan, dan
mungkin sulit dicari warnanya untuk LED satuan biasa



Demo Video


Cara Pembuatan:
Skematik pada Arduino (Duemilanove / Severino)


List Program untuk Arduino
// program kontrol LEDRGB melalui serial(RS232) 9600bps
// Mikrokontroler : Arduino Duemilanove
// Oleh :Aan Darmawan
// Tanggal : 26 Desember 2010
// cara pengendalian :terima informasi dari serial dengan kode "000" s/d "999"
// urutan pengendalian 1 byte red, 1 byte green dan 1 byte blue
// 0=berarti tergelap , 9=berarti terterang
// web http://valfa.blogspot.com
//
int ledrPin = 9;
int ledgPin = 10;    // LED dihubungkan ke digital PWM pin 9,10,11
int ledbPin = 11;
int faderValue = 0;
int fadegValue = 0;
int fadebValue = 0;

void setup()  {
Serial.begin(9600);  // aktifkan komunikasi serial 9600 bps
pinMode(ledrPin,OUTPUT);
pinMode(ledgPin,OUTPUT);
pinMode(ledbPin,OUTPUT);
}

void loop()  {
if(Serial.available()>0) // baca byte pertama sebagai data LED merah
{
faderValue = Serial.read();
faderValue=(faderValue-47)*10.34;
}
if(Serial.available()>0) // baca byte kedua sebagai data LED hijau
{
fadegValue = Serial.read();
fadegValue=(fadegValue-47)*22.00;
}
if(Serial.available()>0) // baca byte ketiga sebagai data LED biru
{
fadebValue = Serial.read();
fadebValue=(fadebValue-47)*25.50;
}
// 3 brs berikut untuk cek saja di computer via serial, bisa dihapus  
Serial.print(faderValue);Serial.print(',');
Serial.print(fadegValue);Serial.print(',');
Serial.println(fadebValue);
// kirim ke PIN 9,10,11
analogWrite(ledrPin, faderValue);
analogWrite(ledgPin, fadegValue);     
analogWrite(ledbPin, fadebValue);
delay(500);     
}


Programming pada VB.net (visual studio 2008)

Buat Disain GUI sebagai berikut:



Programming  :

Public Class Form1
    Dim red, green, blue As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ColorDialog1.ShowDialog()
        red = ColorDialog1.Color.R() \ 28.3333
        green = ColorDialog1.Color.G() \ 28.3333
        blue = ColorDialog1.Color.B() \ 28.3333
        TextBox1.Text = red & green & blue
        SerialPort1.Write(TextBox1.Text)
        BackColor = ColorDialog1.Color

    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.ReadOnly=True
SerialPort1.PortName="COM2"  ' Sesuaikan dengan komputer anda
        SerialPort1.Open()
        SerialPort1.Write("000") 'RGB=000=black
    End Sub
End Class

Catatan:
Pada Properties Object SerialPort1, jangan lupa disesuaikan nama port serialnya
(SerialPort1.PortName) dengan yang tersedia di PC/Notebook anda.

Selamat bereksperimen..... GBU


8 comments:

Anonymous said...

keren.. keren... lengkap banget tulisannya. bikin ngiler yang liat.. mantaps...

Oia.. saya ada ide, sudah saya tanggapi komentar mas Aan di blog saya. :) senang punya teman main Arduino.. hehehe

salam kenal

Masduino said...

Very nice project ! Kami tunggu pengembangan yang lebih mantaap ya pak Aan.

Aan Darmawan H said...

Thanks 4 d support

Unknown said...

teman, untuk pembuatan GUI warna pada VB.Net nya lebih mendetail dong jlasinnya.. pliss.. ato kirim ke denimunandar14@gmail.com

Aan Darmawan H said...

@Deni M: saya kira sudah jelas, tidak ada yang disembunyikan... itu semua apa adanya... :-), selamat bereksperimen.....

Unknown said...

mas cara menghitung resistornya gimana?
sama cara mencari (10.34) , (22.00) , (25.50) itu semua ?

Aan Darmawan H said...

@Radit:
menghitung tresistor,tentukan arus maksimum untuk LED, kemudian pakai rumus pembagi tegangan (Vr+VLed=5V)
karena VLed warna Merah,Hijau dan BIru berbeda-beda, maka di sesuaikan dengan parameter pengali tiap warna yang 10.34, 22 dan 25.5.
angkanya dari mana? itu perhitungan dengan asumsi Vled biru ketika mendapat kode "9", maka yang masuk nilai Vled biru adalah 10 (maksimum 10x25.5 = 255)
Untuk parameter warna lain diperoleh secara coba-coba agar menghasilkan warna tampilan mendekati warna yang dipilih di komputer

Unknown said...

mas shere dong pendeteksi warna sensor RGB dengan menampilkan warna ke vb net?
caranya gmna yah?