Jumat, 11 September 2009

Dasar Pemrogramman Robotik

Berdasarkan bentuknya robot dibedakan menjadi beberapa kategori sebagai
berikut:
Turtle
Ditemukan tahun 1970 an dan nama Turtle diambil dari bentuk segi fisiknya yang mirip rumah
kura-kura
Vehicle
Robot jenis ini berbentuk seperti kendaraan yang
dilengkapi dengan roda dan bergerak seperti sebuah
mobil. Perbedaan dengan mobil adalah kemampuan
programmablenya
Rover
Bentuk robot ini cenderung pendek dan juga dilengkapi roda
seperti jenis vehicle seperti pada R2-D2 dalam film Star Wars.


Robot jenis ini juga dilengkapi beberapa fungsi contohnya
kemampuan untuk mendeteksi api atau mendeteksi obyek.
Walker
Robot jenis ini tidak dilengkapi dengan roda seperti jenis vehicle dan rover melainkan
bergerak dengan menggunakan kaki. Biasanya robot ini berbentuk mirip serangga dan
dilengkapi dengan 6 kaki.
Appendage
Robot ini berupa lengan yang biasanya digunakan untuk
mengambil dan memindahkan barang. Lengan ini dapat
terpasang pada robot yang bergerak atau pada sebuah
tempat yang statis.
Android
Robot ini didisain menyerupai manusia dan mempunyai kemampuan untuk
berkomunikasi dengan manusia.
Berdasarkan proses kendalinya, robot dibedakan menjadi:
Automatic
Automatic Robot bergerak berdasarkan perintahperintah
yang telah diprogramkan sebelumnya atau
berdasarkan masukan dari sensor-sensornya
Seperti tampak pada gambar di sebelah adalah sebuah
robot penjejak garis yang dilengkapi dengan sungut
untuk mendeteksi posisi garis


Teleoperated
Robot jenis ini bergerak berdasarkan
perintah-perintah yang dikirimkan secara
manual baik melalui remote control, PC atau
joystick.
CPU
SENSOR
SISTEM
KENDALI
MOTOR
MEKANIK MOTOR DRIVER
ACTION
TOOLS
OUTPUT
INFORMATION
CPU (CENTRAL PROCESSING UNIT)
Istilah CPU biasa digunakan untuk menyebutkan bagian utama dari sebuah PC di
mana semua proses pengolahan data dilakukan pada bagian tersebut. Analogi bagian
ini pada manusia adalah bagian otak di mana segala kegiatan manusia dilakukan
berdasarkan perintah yang dikirim oleh otak. Sama halnya pada sebuah robot, bagian
ini adalah merupakan bagian yang mengolah data-data dan mengambil keputusan
akan kegiatan yang harus dilakukan oleh robot tersebut.
DELTA ELECTRONIC
www.robotindonesia.com
SENSOR
Dalam mengambil keputusan, otak seringkali memerlukan masukan informasi di
mana sensor adalah merupakan salah satu media pemberi masukan tersebut. Pada
tubuh manusia, sensor dapat dianalogikan dengan indera.
Indra Peraba
Pada sebuah robot, fungsi indra ini biasanya diperoleh dari sebuah sensor yang
mendeteksi adanya obyek di dekatnya. Untuk jarak yang sangat dekat, hal ini
dilakukan dengan menggunakan sensor infrared yang mendeteksi adanya pantulan
cahaya yang disebabkan adanya obyek di dekat sensor tersebut. Untuk jarak yang
agak jauh, hal ini dilakukan dengan menggunakan sensor ultrasonic
Indra Penglihatan
Fungsi indra ini diperoleh dari sebuah kamera yang mengubah sinar-sinar pantulan
cahaya dari suatu obyek ke dalam lensanya menjadi bentuk tegangan. Agar tegangan
tersebut dapat diproses oleh mikrokontroler yang ada pada bagian CPU maka
diperlukan ADC (Analog to Digital Converter) yang mengubahnya menjadi bentuk
digital. CMU Cam adalah sebuah kamera yang telah dilengkapi dengan ADC yang
mengubah pantulan-pantulan cahaya menjadi data digital.
Indra Pendengaran
Fungsi indra pendengaran ini pada sebuah robot dapat digantikan dengan microphone
yang merupakan transducer yang mengubah sinyal suara menjadi sinyal-sinyal listrik
sesuai pola suara yang diterima. Sistem elektronik akan merespon sinyal-sinyal suara
menggunakan komponen ini baik untuk direkam ataupun dikenali
MOTOR
DELTA ELECTRONIC
www.robotindonesia.com
Motor dapat dianalogikan sebagai kaki dan lengan dari sebuah robot yaitu bagian
yang berfungsi untuk menggerakkan robot baik berjalan, mencengkeram, melempar
dan lain-lain.
Motor DC
Untuk aplikasi yang membutuhkan kecepatan
tinggi, seperti memindahkan posisi robot dengan
kecepatan tinggi maka motor DC adalah pilihan
yang tepat.
Kecepatan putar motor DC ditentukan dengan
menggunakan satuan RPM atau jumlah putaran
dalam 1 menit.
Sedangkan kekuatan motor DC ditentukan
dengan torsi.
Untuk robot-robot yang memiliki berat cukup
besar, seringkali motor DC tidak cukup kuat
untuk memindahkan robot tersebut, untuk itu
diperlukan tambahan gear yang berfungsi melipat gandakan torsi dari motor tersebut.
Delta

Minggu, 07 Juni 2009

java membuat aplikasi sewa mobil

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class SewaMobil implements ActionListener {
public JLabel labelKode, labelSewa, labelHrg, labelHasil;
public JTextField textField1, textField2, textField3, textField4, textField5;
public JButton button1, button2;


public SewaMobil() {

labelKode = new JLabel("Kode Barang");
labelKode.setLocation(10, 25);
labelKode.setSize(labelKode.getPreferredSize());

textField1 = new JTextField(10);
textField1.setLocation(85, 25);
textField1.setSize(textField1.getPreferredSize());

labelSewa = new JLabel("Lama Sewa");
labelSewa.setLocation(10, 60);
labelSewa.setSize(labelSewa.getPreferredSize());

textField2 = new JTextField(10);
textField2.setLocation(85, 60);
textField2.setSize(textField2.getPreferredSize());

labelHasil = new JLabel("Nama Mobil");
labelHasil.setLocation(10, 105);
labelHasil.setSize(labelHasil.getPreferredSize());

textField3 = new JTextField(10);
textField3.setLocation(85, 105);
textField3.setSize(textField3.getPreferredSize());
textField3.setEditable (false);

labelHrg = new JLabel("Harga Sewa");
labelHrg.setLocation(10, 125);
labelHrg.setSize(labelHrg.getPreferredSize());

textField4 = new JTextField(10);
textField4.setLocation(85, 125);
textField4.setSize(textField3.getPreferredSize());
textField4.setEditable (false);

textField5 = new JTextField(10);
textField5.setBackground(Color.RED);
textField5.setLocation(85, 145);
textField5.setSize(textField3.getPreferredSize());
textField5.setEditable (false);


button1 = new JButton("Click");
button1.setBackground(Color.BLACK);
button1.setForeground(Color.WHITE);
button1.setLocation(245, 40);
button1.setSize(button1.getPreferredSize());
button1.addActionListener(this);
button1.setMnemonic('P');

button2 = new JButton("Close");
button2.setBackground(Color.BLACK);
button2.setForeground(Color.WHITE);
button2.setLocation(245, 80);
button2.setSize(button2.getPreferredSize());
button2.addActionListener(this);
button2.setMnemonic('P');

}

public void createAndShowGUI() {
JFrame frame = new JFrame("Aplikasi Sewa Mobil");
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(labelKode);
frame.getContentPane().add(textField1);
frame.getContentPane().add(labelSewa);
frame.getContentPane().add(textField2);
frame.getContentPane().add(labelHasil);
frame.getContentPane().add(textField3);
frame.getContentPane().add(labelHrg);
frame.getContentPane().add(textField4);
frame.getContentPane().add(textField5);
frame.getContentPane().add(button1);
frame.getContentPane().add(button2);

frame.setBounds(0 ,0 , 400, 300);
frame.setLocationRelativeTo(null);

frame.setVisible(true);
}

public void actionPerformed(ActionEvent event) {
int Lmsw=0, Hrga =0, hasil=0;
String Cod="";
String nam="";
if (event.getSource() == button1){
Cod= textField1.getText();
if (Cod.equals("KD-001")){
Hrga=200000;
nam="Kijang inova";

textField3.setText(new String().valueOf(nam));
textField4.setText(new String().valueOf(Hrga));
}

else if (Cod.equals("KD-002")){
Hrga=100000;
nam="Kijang TOYOTA";

textField3.setText(new String().valueOf(nam));
textField4.setText(new String().valueOf(Hrga));
}
}
else if (event.getSource() == button2){
JOptionPane.showMessageDialog(null, "Thanks to try my program. see you..");
System.exit(0);
}

try {
Hrga= Integer.parseInt(textField4.getText());
Lmsw= Integer.parseInt(textField2.getText());
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}

JButton btn = (JButton) event.getSource();
if (btn == button1) {

hasil= Lmsw * Hrga;

}

textField5.setText(new String().valueOf("TOTAL :" + hasil));
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
SewaMobil mobil = new SewaMobil();
mobil.createAndShowGUI();

}
});
}
}

Selasa, 17 Februari 2009

Calculator by Java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Calculator extends JFrame implements ActionListener {
GridBagConstraints gb = new GridBagConstraints();
JTextField text = new JTextField(25);
String nama[]={"7","4","1","0","8","5","2","+/-","9","6","3",".","/","*","-","+","SQRT","%","1/X","="};
private double hasil;
private int bilangan;
String tanda;
String preTanda;

public Calculator() {
setTitle("My Calculator");
setLayout(new BorderLayout());
getContentPane().add(panelUp(),BorderLayout.SOUTH);
getContentPane().add(panelBottom(),BorderLayout.CENTER);
hasil=0;
bilangan=0;
tanda="";
preTanda="";
}

public JPanel panelUp(){
JPanel panel = new JPanel();
panel.add(text);
return panel;
}

public JPanel panelBottom(){
int counter,counter2;
int i=0;
JPanel panel = new JPanel(new GridBagLayout());
JButton[]b=new JButton[20];
for(counter=0;counter<5;counter++){
for(counter2=0;counter2<4;counter2++){
b[i]=new JButton(nama[i]);
gb.gridwidth = 1;
gb.gridheight = 1;
gb.gridx = counter;
gb.gridy = counter2;
gb.fill = GridBagConstraints.BOTH;
b[i].addActionListener(this);
panel.add(b[i],gb );
i++;
}
}

return panel;
}
public void actionPerformed(ActionEvent e) {
int counter2=0;
int tampung=0;
for(counter2=0;counter2<20;counter2++){
if((nama[counter2].equals(e.getActionCommand()))&&((nama[counter2].equals("1"))||(nama[counter2].equals("2"))||(nama[counter2].equals("3"))||(nama[counter2].equals("4"))||(nama[counter2].equals("5"))||(nama[counter2].equals("6"))||(nama[counter2].equals("7"))||(nama[counter2].equals("8"))||(nama[counter2].equals("9"))||(nama[counter2].equals("0")))){
text.setText(nama[counter2]);
bilangan=Integer.parseInt(nama[counter2]);
//setBilangan(tampung);
}
else if((nama[counter2].equals(e.getActionCommand()))&&((nama[counter2].equals("+"))||(nama[counter2].equals("-"))||(nama[counter2].equals("*"))||(nama[counter2].equals("/"))||(nama[counter2].equals("%"))||(nama[counter2].equals("SQRT"))||(nama[counter2].equals("+/-"))||(nama[counter2].equals("1/X")))){
tanda=e.getActionCommand();
doOperation();
text.setText(""+hasil);
}
else if((nama[counter2].equals(e.getActionCommand()))&&((nama[counter2].equals("=")))){
tanda=e.getActionCommand();
doOperation();
text.setText(""+hasil);
hasil=0;
bilangan=0;
tanda="";
preTanda="";
}
}
}


public void doOperation(){
if(preTanda.equals("")){
hasil=bilangan;
preTanda=tanda;
}
else if(preTanda.equals("+")){
hasil=hasil+bilangan;
preTanda=tanda;
}
else if(preTanda.equals("-")){
hasil=hasil-bilangan;
preTanda=tanda;
}
else if(preTanda.equals("*")){
hasil=hasil*bilangan;
preTanda=tanda;
}
else if(preTanda.equals("/")){
hasil=hasil/bilangan;
preTanda=tanda;
}
else if(preTanda.equals("%")){
hasil=hasil*100;
preTanda=tanda;
}else if(preTanda.equals("SQRT")){
hasil=Math.sqrt(hasil);
preTanda=tanda;
}else if(preTanda.equals("+/-")){
hasil=hasil*-1;
preTanda=tanda;
}else if(preTanda.equals("/")){
hasil=1/hasil;
preTanda=tanda;
}
}

}

class test
{
public static void main(String args[]){
JFrame.setDefaultLookAndFeelDecorated(true);
Calculator aldi = new Calculator();
aldi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aldi.setSize(300, 200);
aldi.setVisible(true);
}
};