Author Archive for jamal herirudin

18
Mei
12

sahabat

Assalamu’alaiku warahmatullahi wabarakatuh

teruntuk yang spesial ….

sahabat;

kehidupan ini t’lah mendewasakan aku

kehidupan ini t’lah mengajarkanku banyak hal

dan dibalik lembaran kehidupanku itulah kutemukan kalian

canda, tangis, tawa turut menyertainya

sahabat;

belum lama ini, kehidupan berpesan padaku

“just for thank’s”..

itulah pesannya ..

sejenak kupikirkan pesannya

lagi-lagi, pesannya pun menambah kedewasaanku

maka kuucapkan terima kasih padanya

sahabat;

mungkin ini suratku yang pertama bagimu, mungkin juga menjadi surat yang terakhir dariku

aku tak tahu kapan, tapi itu pasti

aku akan pergi, pergi ke tempat yang sangat jauh

apakah kita akan bertemu lagi, aku tak tahu..!

maka akan aku titipkan sedikit pesanku untukmu

aku sangat berharap, pesanku ini menjadi cahaya yang terang itu

cahaya yang banyak dicari orang

cahaya yang menentramkan hati

cahaya orang-orang terkasih

bawalah ia selalu bersamamu

bawalah ia meskipun itu sangat berat

bawalah ia meskipun itu membuatmu menangis

bawalah ia meskipun akan membuatmu tergores luka

dan bawalah ia meskipun itu hanya setitik dariku

sahabat;

kutitipkan pesanku sekarang

karena aku takut esok tak sempat

kutitipkan pesanku untuk kalian yang spesial

sahabat;

hidup ini hanyalah terima kasih

terima ksih untuk semuanya

itu pesanku yang pertama

pesanku yang aku dapati ia ada dalam lembaran kehidupanku

sahabat;

ini berat

namun tiada pilihan lain

aku sudah mencoba, mencoba mencari jalan yang lain

namun apa hasilnya

kekacauan dimana-mana

aku sudah mencoba, mencoba membingkai dengan yang lain

namun apa hasilnya

berantakan, berserakan dimana-mana

kemudian, suatu waktu akupun menanyakan pada kehidupanku

lagi-lagi kehidupan ini mendewasakan aku dengan jawabnya

sahabat;

“tempulah aku dengan jalan Islam

dan bingkailah aku dengan cara Islam pula”…

itulah jawaban yang diberikan oleh kehidupan padaku

jawaban yang telah mendewasakan aku

jawaban yang menjadi pesanku yang kedua dalam suratku untukmu

sahabat;

kuhanturkan kecupan ukhuwah untukmu

kecupan yang aku harap mampu menjadi pelita itu

pelita yang mampu menerangimu dalam kegelapan

pelita yang mampu menjadi pelipur lara

pelita yang mampu menembus cakrawala kepalsuan

sahabat;

mungkin ini pesan terahirku dalam suratku ini

tanyalah aku sebelum kau kehilangan aku

waktuku tak banyak sahabat

aku tak tahu

namun itu pasti

aku pasti akan pergi

pergi ke tempat yang sangat jauh

kita akan bertemu lagi,

entah aku tak tahu..!?

sahabat;

aku berharap

goresan penaku ini mampu menjadi sesuatu bagimu

sesuatu yang mampu menemanimu

sesuatu yang menjadi bukti kasih sayangku padamu

sesuatu yang menjadi arti kata silaturahim itu

sahabat;

tak lupa kututurkan permintaan maafku padamu

permintaan maaf atas setiap titik kesalahanku padamu ….

…ana uhibbuka fillah…

tertanda,

sahabatmu

18
Mei
12

LDmikrokontroller

LDmicro generates native code for certain Microchip PIC16 and Atmel AVR
microcontrollers. Usually software for these microcontrollers is written
in a programming language like assembler, C, or BASIC. A program in one
of these languages comprises a list of statements. These languages are
powerful and well-suited to the architecture of the processor, which
internally executes a list of instructions.

PLCs, on the other hand, are often programmed in `ladder logic.’ A simple
program might look like this:

||——-]/[———[TON 1.000 s]-+——-]/[————–( )————||
||——-]/[———[TOF 2.000 s]-+
||
||——-]/[———[TON 1.000 s]—-[TOF 1.000 s]———( )———||
||
||——[END]—————————————————————–||

(TON is a turn-on delay; TOF is a turn-off delay. The –] [– statements
are inputs, which behave sort of like the contacts on a relay. The
–( )– statements are outputs, which behave sort of like the coil of a
relay. Many good references for ladder logic are available on the Internet
and elsewhere; details specific to this implementation are given below.)

A number of differences are apparent:

* The program is presented in graphical format, not as a textual list
of statements. Many people will initially find this easier to
understand.

* At the most basic level, programs look like circuit diagrams, with
relay contacts (inputs) and coils (outputs). This is intuitive to
programmers with knowledge of electric circuit theory.

* The ladder logic compiler takes care of what gets calculated
where. You do not have to write code to determine when the outputs
have to get recalculated based on a change in the inputs or a
timer event, and you do not have to specify the order in which
these calculations must take place; the PLC tools do that for you.

LDmicro compiles ladder logic to PIC16 or AVR code. The following
processors are supported:
* PIC16F877
* PIC16F628
* PIC16F876 (untested)
* PIC16F88 (untested)
* PIC16F819 (untested)
* PIC16F887 (untested)
* PIC16F886 (untested)
* ATmega128
* ATmega64
* ATmega162 (untested)
* ATmega32 (untested)
* ATmega16 (untested)
* ATmega8 (untested)

It would be easy to support more AVR or PIC16 chips, but I do not have
any way to test them. If you need one in particular then contact me and
I will see what I can do.

Using LDmicro, you can draw a ladder diagram for your program. You can
simulate the logic in real time on your PC. Then when you are convinced
that it is correct you can assign pins on the microcontroller to the
program inputs and outputs. Once you have assigned the pins, you can
compile PIC or AVR code for your program. The compiler output is a .hex
file that you can program into your microcontroller using any PIC/AVR
programmer.

LDmicro is designed to be somewhat similar to most commercial PLC
programming systems. There are some exceptions, and a lot of things
aren’t standard in industry anyways. Carefully read the description
of each instruction, even if it looks familiar. This document assumes
basic knowledge of ladder logic and of the structure of PLC software
(the execution cycle: read inputs, compute, write outputs).
ADDITIONAL TARGETS
==================

It is also possible to generate ANSI C code. You could use this with any
processor for which you have a C compiler, but you are responsible for
supplying the runtime. That means that LDmicro just generates source
for a function PlcCycle(). You are responsible for calling PlcCycle
every cycle time, and you are responsible for implementing all the I/O
(read/write digital input, etc.) functions that the PlcCycle() calls. See
the comments in the generated source for more details.

Finally, LDmicro can generate processor-independent bytecode for a
virtual machine designed to run ladder logic code. I have provided a
sample implementation of the interpreter/VM, written in fairly portable
C. This target will work for just about any platform, as long as you
can supply your own VM. This might be useful for applications where you
wish to use ladder logic as a `scripting language’ to customize a larger
program. See the comments in the sample interpreter for details.
COMMAND LINE OPTIONS
====================

ldmicro.exe is typically run with no command line options. That means
that you can just make a shortcut to the program, or save it to your
desktop and double-click the icon when you want to run it, and then you
can do everything from within the GUI.

If LDmicro is passed a single filename on the command line
(e.g. `ldmicro.exe asd.ld’), then LDmicro will try to open `asd.ld’,
if it exists. An error is produced if `asd.ld’ does not exist. This
means that you can associate ldmicro.exe with .ld files, so that it runs
automatically when you double-click a .ld file.

If LDmicro is passed command line arguments in the form
`ldmicro.exe /c src.ld dest.hex’, then it tries to compile `src.ld’,
and save the output as `dest.hex’. LDmicro exits after compiling,
whether the compile was successful or not. Any messages are printed
to the console. This mode is useful only when running LDmicro from the
command line.
BASICS
======

If you run LDmicro with no arguments then it starts with an empty
program. If you run LDmicro with the name of a ladder program (xxx.ld)
on the command line then it will try to load that program at startup.
LDmicro uses its own internal format for the program; it cannot import
logic from any other tool.

If you did not load an existing program then you will be given a program
with one empty rung. You could add an instruction to it; for example
you could add a set of contacts (Instruction -> Insert Contacts) named
`Xnew’. `X’ means that the contacts will be tied to an input pin on the
microcontroller. You could assign a pin to it later, after choosing a
microcontroller and renaming the contacts. The first letter of a name
indicates what kind of object it is. For example:

* Xname — tied to an input pin on the microcontroller
* Yname — tied to an output pin on the microcontroller
* Rname — `internal relay’: a bit in memory
* Tname — a timer; turn-on delay, turn-off delay, or retentive
* Cname — a counter, either count-up or count-down
* Aname — an integer read from an A/D converter
* name — a general-purpose (integer) variable

Choose the rest of the name so that it describes what the object does,
and so that it is unique within the program. The same name always refers
to the same object within the program. For example, it would be an error
to have a turn-on delay (TON) called `Tdelay’ and a turn-off delay (TOF)
called `Tdelay’ in the same program, since each counter needs its own
memory. On the other hand, it would be correct to have a retentive timer
(RTO) called `Tdelay’ and a reset instruction (RES) associated with
`Tdelay’, since it that case you want both instructions to work with
the same timer.

Variable names can consist of letters, numbers, and underscores
(_). A variable name must not start with a number. Variable names are
case-sensitive.

The general variable instructions (MOV, ADD, EQU, etc.) can work on
variables with any name. This means that they can access timer and
counter accumulators. This may sometimes be useful; for example, you
could check if the count of a timer is in a particular range.

Variables are always 16 bit integers. This means that they can go
from -32768 to 32767. Variables are always treated as signed. You can
specify literals as normal decimal numbers (0, 1234, -56). You can also
specify ASCII character values (‘A’, ‘z’) by putting the character in
single-quotes. You can use an ASCII character code in most places that
you could use a decimal number.

At the bottom of the screen you will see a list of all the objects in
the program. This list is automatically generated from the program;
there is no need to keep it up to date by hand. Most objects do not
need any configuration. `Xname’, `Yname’, and `Aname’ objects must be
assigned to a pin on the microcontroller, however. First choose which
microcontroller you are using (Settings -> Microcontroller). Then assign
your I/O pins by double-clicking them on the list.

You can modify the program by inserting or deleting instructions. The
cursor in the program display blinks to indicate the currently selected
instruction and the current insertion point. If it is not blinking then
press <Tab> or click on an instruction. Now you can delete the current
instruction, or you can insert a new instruction to the right or left
(in series with) or above or below (in parallel with) the selected
instruction. Some operations are not allowed. For example, no instructions
are allowed to the right of a coil.

The program starts with just one rung. You can add more rungs by selecting
Insert Rung Before/After in the Logic menu. You could get the same effect
by placing many complicated subcircuits in parallel within one rung,
but it is more clear to use multiple rungs.

Once you have written a program, you can test it in simulation, and then
you can compile it to a HEX file for the target microcontroller.
SIMULATION
==========

To enter simulation mode, choose Simulate -> Simulation Mode or press
<Ctrl+M>. The program is shown differently in simulation mode. There is
no longer a cursor. The instructions that are energized show up bright
red; the instructions that are not appear greyed. Press the space bar to
run the PLC one cycle. To cycle continuously in real time, choose
Simulate -> Start Real-Time Simulation, or press <Ctrl+R>. The display of
the program will be updated in real time as the program state changes.

You can set the state of the inputs to the program by double-clicking
them in the list at the bottom of the screen, or by double-clicking an
`Xname’ contacts instruction in the program. If you change the state of
an input pin then that change will not be reflected in how the program
is displayed until the PLC cycles; this will happen automatically if
you are running a real time simulation, or when you press the space bar.
COMPILING TO NATIVE CODE
========================

Ultimately the point is to generate a .hex file that you can program
into your microcontroller. First you must select the part number of the
microcontroller, under the Settings -> Microcontroller menu. Then you
must assign an I/O pin to each `Xname’ or `Yname’ object. Do this by
double-clicking the object name in the list at the bottom of the screen.
A dialog will pop up where you can choose an unallocated pin from a list.

Then you must choose the cycle time that you will run with, and you must
tell the compiler what clock speed the micro will be running at. These
are set under the Settings -> MCU Parameters… menu. In general you
should not need to change the cycle time; 10 ms is a good value for most
applications. Type in the frequency of the crystal that you will use
with the microcontroller (or the ceramic resonator, etc.) and click okay.

Now you can generate code from your program. Choose Compile -> Compile,
or Compile -> Compile As… if you have previously compiled this program
and you want to specify a different output file name. If there are no
errors then LDmicro will generate an Intel IHEX file ready for
programming into your chip.

Use whatever programming software and hardware you have to load the hex
file into the microcontroller. Remember to set the configuration bits
(fuses)! For PIC16 processors, the configuration bits are included in the
hex file, and most programming software will look there automatically.
For AVR processors you must set the configuration bits by hand.

Tutorial….klik. LDMICRO_TUTORIAL

18
Mei
12

MOTOR DC

Jenis-jenis Motor DC:

Berdasarkan macamnya, Motor DC terdiri dari:

  1. Motor DC Shunt. Motor DC jenis ini mempunyai ciri kumparan penguatmedandiparalel terhadap kumparan armatur. Kelebihan dari Motor DC jenis ini yaitu tidak terlalu membutuhkan banyak ruangan karena diameter kawat kecil. Sedangkan kelemahannya yaitu daya keluaran yang dihasilkan kecil karena arus penguatnya kecil.
  2. Motor DC Seri. Motor DC jenis ini mempunyai ciri kumparan penguatmedandiseri terhadap kumparan armatur. Kelebihan dari Motor DC jenis ini yaitu daya output yang dihasilkan besar. Sedangkan kelemahannya yaitu arus beban yang diminta sangatlah besar, sesuai dengan beban yang dipikulnya, jika tegangan inputnya tidak stabil maka flux magnit yang dihasilkan oleh kumparan seri tidak stabil pula, sehingga daya output yang dihasilkan tidak stabil.
  3. Motor DC Kompond. Pada umumnya Motor DC Kompond dibuat untuk mengurangi kelemahan yang terjadi pada Motor DC Shunt maupun Seri. Jenisnya ada dua macam, yaitu Motor DC Kompond Panjang dan Motor DC Kompond  Pendek, ciri khas yang membedakan keduanya yaitu tata letak kumparan penguat medan tambahan diletakkan seri dengan kumparan penguat medan pada Motor DC Shunt dan ini desebut Motor DC Kompond Pendek. Sedangkan pada Motor DC Kompond Panjang, kumparan penguatmedantambahan diletakkan secara seri antara  Kumparan armatur dan kumparan penguatmedanshunt pada Motor DC Shunt.
  1. Kecepatan putar motor DC dipengaruhi oleh tiga hal yaitu
    1. Besar kecilnya flux magnet
    2. Besar kecilnya arus armatur
    3. Besar kecilnya tegangan sumber
  2. Semakin besar VR (tegangan pada potensio meter), maka semakin cepat pula perputaran motor DC.
  3. Semakin besar arus armatur (VR minimum), maka semakin cepat pula perputaran motor DC.
  4. Semakin besar sumber tegangan yang diberikan, maka semakin cepat pula perputaran motor DC.
  5. Pemasangan polaritas motor DC akan mempengaruhi arah perputaran motor DC.

 

untuk memperjelas silahkan download motor-DC

 

 

18
Mei
12

pembuatan PCB

Toner Transfer Paper

Toner Transfer adalah cara untuk mencetak gambar layout ke PCB dengan tekanan panas untuk mentransfer toner dari kertas ke board PCB.
Kunci dari cara ini adalah pada jenis kertasnya, ada juga yang menyebutnya dengan kertas press n peel sheet (PNP), tapi saya menganjurkan untuk mencoba coba kertas mana yang hasilnya lebih bagus.

  • Cetak gambar lay out ke kertas transfer paper, dengan gambar yg di mirror / inverse dengan setting toner paling gelap pada printer laser .
  • Potong kertas sesuai gambar lay out.
  • Panaskan setrika baju, jangan pakai setrika uap. dan setting ke temperature maksimum
  • Taruh PCB di permukaan yang datar, kemudian tekan dan tahan setrika di atas permukaan PCB beberapa detik.
    kemudian letakkan kertas transfer paper dengan gambar terbalik ke bawah menghadap PCB, kemudian mulai proses menyetrika, coba dengan arah memutar, atau hanya di tekan beberapa detik.
    Pastikan panasnya merata di permukaan PCB.

Ketika anda sudah yakin bahwa pemanasan ini sudah cukup, biarkan pcb dingin, kemudian coba untuk melepas kertas transfer paper, jika ada gambar yang belum menempel, proses pemanasan bisa di ulang kembali.
Proses ini butuh eksperimen, berapa lama pemanasan dengan kertas yang berbeda, sehingga menghasilkan hasil yang optimal.

Cetak langsung ke PCB

Cara ini di pakai dengan menggunakan printer yang bisa mencetak langsung ke material , atau dengan printer yang sudah di modifikasi.

Etching

Sekarang PCB siap untuk proses etching.
Beberapa bahan kimia untuk proses ecthing :

  1. FeCl3 (Ferric Chloride)

    Perhatian bahan limbah ferric chloride :

    Untuk membuang limbah FeCL3 sebelum di buang ke tempat pembuangan, harus di perhatikan beberapa hal.
    Limbah FeCl3 SANGAT AMAT BERACUN !! .
    Untuk itu siapkan tong yang terbuat dari bahan plastik tebal sebagai tempat pembuangan sementara, kemudian endapkan limbah FeCl3 ke dalam tong tersebut, dan taruh beberapa barang berbahan logam seperti baut bekas, obeng yang sudah rusak, atau barang bekas logam lainnya, dan diamkan dalam beberapa hari atau minggu.
    Logam logam yang di masukkan tadi akan berkarat dan hancur menjadi bubuk, ini akan me-reduksi/ mengurangi racun dari sisa etching PCB, karena FeCL3 ini setelah tereduksi dengan logam akan menjadi FeCL2, dimana sedikit lebih aman dari pada FeCl3.
    Treatment terbaik setelah menjadi FeCl2 adalah di larutkan dengan soda (Na2CO3) atau detergent.
    Dan ini akan menjadi Fe(CO3) (insoluble rusty mud) dan NaCl (garam dapur ).
    Setelah di keringkan masukkan ke dalam kantong plastik, dan bisa di buang ke tong sampah.

  2. Ammonium Persulphate
    Kelebihan dari ammonium persulphate ini adalah cairannya bening, sehingga proses etching bisa di lihat tanpa memindahkan board PCB.
  3. Peroxide of hydrogen

Etching Board PCB ke dalam plastik tupperware , bagian yang tidak terlapisi akan hilang, dan bagian yang terlapisi akan tinggal.
Setelah itu bilas dengan air, kemudian gosok PCB dengan scotchbrite untuk membersihkan sisa residu tinta.

 

Drilling

Pakai bor duduk yang kecil yang bisa di gunakan untuk mata bor ukuran kecil , dengan diameter 5 – 0.3 milimeter.
Diamater bor yang sering di pakai :

Mata bor 0,8 mili untuk kaki IC
Mata bor 1 mili untuk pad yang lebih besar, header, atau yang lainnya
Mata bor 1,5 mili untuk relay, switch , dan yang lain
Mata bor 3 mili untuk spacer / tempat baut.

 

Silver Coated

Lapisan perak bisa untuk mengurangi / mereduksi tembaga dari oksidasi.
Anda dapat membuat lapisan ini dengan menggunakan AgNo3 ( Silver Nitrat ) + Potasium + air bersih.

 

salam sukses

 

17
Mei
12

APLIKASI OP-AMP

Inverting

Inverting amplifier ini, input dengan outputnya berlawanan polaritas. Jadi ada tanda minus
pada rumus penguatannya. Penguatan inverting amplifier adalah bisa lebih kecil nilai besaran dari 1,
misalnya -0.2 , -0.5 , -0.7 , dst dan selalu negatif. Rumus nya :

 

 

 

17
Mei
12

FUNCTION & PROCEDURE DALAM BAHASA C/C++ ( SECARA PROCEDURAL)

Issue pemrograman berkembang setiap saat, diawali dengan issue terstruktur sekitar tahun 70’an kemudian issue modular dan yang sedang berkembang adalah issue object oriented. Issue terstruktur dan modular merupakan paradigma prosedural sedangkan issue object oriented adalah berada dalam paradigma object-oriented. Function&Procedure berkembang pada saat terjadinya issue modular, hal itu memudahkan programmer untuk memecah program menjadi bagian-bagian sub program kecil. Untuk mempelajari function & procedure dalam paradigma prosedural perlu diperhatikan dahulu tentang struktur data. Struktur data terbagi dalam beberapa type :

  1. Dasar : integer, real, boolean, character. Nama informasi yang didefinisikan dengan type dasar ini setiap saat hanya dapat menyimpan satu nilai.
  2. Bentukan(user-defined type) : structure, union, enumeration. Type bentukan yaitu type yang merupakan komposisi dari type bentukan. Nama informasi yang didefinisikan dengan type ini setiap saat hanya mengandung satu nilai sesuai dengan komposisi dari type yang didefinisikan.

Definisi Type Structure :

typedef struct {

   float x , y;

}Point;

 

Deklarasi Variabel Bertype Point :

Point P;

Cara akses(baca & tulis) Point :

      P.x = 10;   // baca

P.y = 20;   // baca

Definisi Type Enumeration : (lihat Schaum’S hal 45, 138,139)

enum shape {circle, square, triagle };    // circle=0, square=1, triangle=2

enum  color {red, blue, green, yellow };  // red=0, green=1, green=2, yellow=3;

Deklarasi Variabel Bertype Enumeration :

shape  ellipse;

color    background;

Cara akses(baca & tulis) Enumeration :

ellipse=circle;   // baca,  circle bernilai 0

color  =yellow;   // baca, yellow  bernilai 3

cout << “ellipse : “ << ellipse << endl;   // tulis, tercetak  “ellipse : 0”

cout << “color : “ << color << endl;       //  tulis, tercetak  “color : 3”

  1. Derived type(array/tabel, function, pointer).

Procedure&Function dalam pemrograman prosedural merupakan aksi(dari operator-operator)  yang memanipulasi struktur data. Lihat Schaum’S hal 89 – 126!!!

Contoh 1 : terdapat dua buah bilangan bertype integer(struktur data dasar, integer), aksi yang dapat dilakukan terhadap bilangan-bilangan tersebut adalah aksi tambah, kurang, bagi , kali dsb. Aksi-aksi tersebut dapat dipandang sebagai sebuah prosedur atau function. Umumnya, aksi terhadap type dasar  sudah built-in dalam compiler.

Contoh  2 : Terdefinisi 1 variabel bertype Point, aksi yang dapat dilakukan terhadap variabel tersebut adalah tambahpoint, kurangpoint, setpoint, getpoint. Umumnya, aksi terhadap type buatan belum terdefinisi di dalam compiler seperti  C, programmer perlu mendefinisikannya sendiri  sehingga user-programmer dapat menggunakannya. Aksi  tambahpoint,kurangpoint,setpoint diimplementasikan dalam prosedur& function.

Perlu diperhatikan beberapa aspek, ketika akan mengimplementasikan prosedur&function dalam sebuah bahasa pemrograman C/C++(prosedural) yaitu : struktur umum dalam program, relationship antara function&procedure dengan  data (global&lokal), Format penulisan procedure&function.

 Format Penulisan Function&Procedure dalam Program C/C++

Ditulis dalam satu file dengan program utama/Driver

#include <……………>

//————Definisi type data

//————Deklarasi variabel/data global

//————Deklarasi function&procedure (primitif)/Prototipe : lihat Schaum’S hal

//                94-95

//————Realisasi Prototipe : lihat Schaum’S hal 94-95

//————Program Utama/Driver : Bagian pemanggil function&procedure, terbagi

//                dua yaitu call by reference dan value : lihat Schaum’S hal 103 – 108

Contoh :

#include <…..>

// Definisi type

typedef struct

{

float x;  //absis

float y;  //ordinat

}Titik;

// Deklarasi variabel

Titik T;

// Deklarasi Prototipe

void CreateTitik();

// Untuk mendefinisikan titik

//  Initial State(IS)   : Titik T sembarang

//  Final State(FS)     : T.x=0, T.y=0

void SetTitik(float x, float y);

// IS  : T Sembarang

// FS  : T.x=x, T.y=y

void GetTitik(float &x, float &y);

// IS : T sembarang

// FS : x=T.x;  y=T.y

void CetakTitik(float xx, float yy);

// IS : Layar sembarang

// FS : xx dan yy tercetak ke layar

// Realisasi Prototipe

void CreateTitik()

{  T.x=0; T.y=0; }

void SetTitik(float x, float y)

{ T.x=x; T.y=y; }

void GetTitik(float &x, float &y)

{ x=T.x; y=T.y; }

void CetakTitik(float xx, float yy)

{ cout << “Absis   : ” << xx <<endl;

cout << “Ordinat : “ << yy <<endl;

}

// Program Utama

int main()

{

// Deklarasi lokal /Kamus lokal

float xx, yy;

// Algoritma

CreateTitik();

GetTitik(xx,yy);

CetakTitik(xx,yy);

SetTitik(4,5);

GetTitik(xx,yy);

CetakTitik(xx,yy);

return 0;

}

Contoh :

#include <…..>

// Definisi type

typedef struct

{

float x;  //absis

float y;  //ordinat

}Titik;

// Deklarasi variabel global

Titik T1,T2;

// Deklarasi Prototipe

Titik CreateTitik();

// Pre-Condition  : Titik belum terdefinisi

// Fungsi CreateTitik akan membentuk sebuah titik dan

mengembalikan nilai bertype titik.

Titik SetTitik(int x, int y);

// Pre-condition : Titik sudah terdefinisi

// Fungsi mengembalikan T, dgn T.x diset x; T.y diset y

Titik AddTitik(Titik T1, Titik T2);

// Pre-condition : T1 dan T2 telah terdefinisi

// Fungsi akan mengembalikan hasil penambahan 2 titik,

void GetTitik(Titik T, int &x, int &y);

// IS : T telah terdefinisi

// FS : x=T.x;  y=T.y

void CetakTitik(Titik T);

// IS : Layar sembarang, T telah terdefinisi

// FS : T.x dan T.y tercetak ke layar

// Realisasi Prototipe

Titik CreateTitik()

{ Titik T;  // deklarasi lokal

T.x=0; T.y=0;  return T;        }

Titik SetTitik(int x, int y)

{

Titik T;   // Deklarasi lokal

T.x=x; T.y=y;

return T;

}

Titik AddTitik(Titik T1, Titik T2)

{ Titik T;  // Deklarasi lokal

T.x=T1.x + T2.x;  T.y=T1.y + T2.y;

return T;

}

void CetakTitik(Titik T)

{

cout << “Absis : “<< T.x << endl;

cout << “Ordinat :” << T.y << endl;

}

// Program Utama

int main()

{

// Deklarasi lokal /Kamus lokal

// T1,T2 dan T3 bisa dideklarasikan di sini

// Algoritma

T1=CreateTitik();

T2=CreateTitik();

Titik T3=CreateTitik();    // Deklarasi sekaligus inisialisasi

CetakTitik(T1);  CetakTitik(T2); CetakTitik(T3);

T1=SetTitik(4,5); T2=SetTitik(4,7);

CetakTitik(T1);  CetakTitik(T2); CetakTitik(T3);

T3=AddTitik(T1,T2);

CetakTitik(T1);  CetakTitik(T2); CetakTitik(T3);

return 0;

}

Kelebihan bahasa C++ dalam hal function adalah

–          Function bisa mengembalikan (return) by reference. Contoh 6.7 lihat Schaum’S hal 162.

–          Overloading : Menggunakan nama yang sama untuk fungsi yang berbeda. Lihat Schaum’S hal 111.


 Ditulis dalam beberapa file (file header, realisasi, driver)

–          Header : berisi definisi type dan deklarasi prototipe

// Nama file : Titik.h

// Deskripsi : Header dari titik

#ifndef Titik_H

#define Titik_H

// Definisi type

typedef struct

{

float x;  //absis

float y;  //ordinat

}Titik;

// Deklarasi Prototipe

void CreateTitik();

// Untuk mendefinisikan titik

//  Initial State(IS)   : Titik T sembarang

//  Final State(FS)     : T.x=0, T.y=0

void SetTitik(float x, float y);

// IS  : T Sembarang

// FS  : T.x=x, T.y=y

void GetTitik(float &x, float &y);

// IS : T sembarang

// FS : x=T.x;  y=T.y

void CetakTitik(float xx, float yy);

// IS : Layar sembarang

// FS : xx dan yy tercetak ke layar

#endif

–          Realisasi : Coding dari  prototipe

// Nama file : Titik.cpp

// Deskripsi : Realisasi dari titik.h

#include <iostream.h>

#include “Titik.h”

// Deklarasi variabel

Titik T;

// Realisasi Prototipe

void CreateTitik()

{  T.x=0; T.y=0; }

void SetTitik(float x, float y)

{ T.x=x; T.y=y; }

void GetTitik(float &x, float &y)

{ x=T.x; y=T.y; }

void CetakTitik(float xx, float yy)

{ cout << “Absis   : ” << xx <<endl;

cout << “Ordinat : ” << yy <<endl;

}

–          Driver   : Menguji / memanggil  realisasi prototipe

// Nama file : UTitik.cpp

// Deskripsi : Driver/Program Utama untuk menguji Titik

#include “Titik.h”

#include <conio.h>

int main()

{

// Deklarasi lokal /Kamus lokal

float xx, yy;

// Algoritma

clrscr();

CreateTitik();

GetTitik(xx,yy);

CetakTitik(xx,yy);

SetTitik(6,9);

GetTitik(xx,yy);

CetakTitik(xx,yy);

return 0;

}

 

Pengantar Paradigma Object-Oriented

  • Perhatikan ADT(Abstract Data Type)
  • Data dan Function dalam ADT  dipandang sebagai satu kesatuan.
  • Data merupakan elemen kritis dalam pengembangan program OO, harus ada mekanisme untuk menjaga agar function-function luar tidak melakukan modifikasi.
  • Dalam OOP terjadi dekomposisi masalah menjadi sejumlah object-object.
  • Data dan function diorganisasikan dalam gambar sebagai berikut :

Features dari OOP :

  • Program terbagi kedalam object-object.
  • Struktur data merupakan karakteristik object.
  • Data dapat disembunyikan dan tidak dapat diakses oleh function external.
  • Object-object berkomunikasi melalui function yang dapat digunakan secara bersama.
  • Data dan function baru dengan mudah dapat ditambahkan ketika perlu
  • Design program secara bottom-up.

 

Konsep dasar dari OOP :

  • Objects
  • Classes
  • Data abstraction  dan encapsulation
  • Inheritence
  • Polymorphism
  • Message passing

Aplikasi dari OOP :

  • Real-time systems
  • Simulation and modelling
  • Object-oriented databases
  • Hypertext, hypermedia and expertext
  • AI and expert systems
  • Neural networks nd parallel programming
  • Decision support and office automation systems
  • CAD/CAM systems

 

Contoh :

#include <iostream.h>

typedef struct

{

char name[30];

int  age;

}person;

person p;    // object

void getdata(void);

void display(void);

// Member Function

void getdata(void)

{

cout << “Enter name : “;

cin >> p.name;

cout << “Enter age : “;

cin >> p.age;

}

void display(void)

{

cout << “\nName : ” << p.name;

cout << “\nAge  : ” << p.age;

}

main()

{

getdata();

display();

}

#include <iostream.h>

class person

{

private :

char name[30];

int  age;

public  :

void getdata(void);

void display(void);

};

// Member Function

void person::getdata(void)

{

cout << “Enter name : “;

cin >> name;

cout << “Enter age : “;

cin >> age;

}

void person::display(void)

{

cout << “\nName : ” << name;

cout << “\nAge  : ” << age;

}

main()

{

person p;    // object

p.getdata();

p.display();

}

14
Mei
12

water purification

“JamalHR”Air merupakan kebutuhan dasar bagi manusia dan kehidupan mahluk  hidup lainnya. Manfaat air diantaranya untuk minum, pembawa zat makanan  pada tumbuhan, zat pelarut, pembersih dan sebagainya. kebutuhan air dapat digolongkan lima kategori yaitu keperluan masyarakat, keperluan industri, pembangkit tenaga listrik, kebutuhan pertanian dan sarana rekreasi.  Penyediaan air bersih merupakan kebutuhan utama manusia untuk kelangsungan  hidupnya dan menjadi faktor penentu kesehatan dan kesejahteraan manusia.  Karena itu diperlukan peningkatan kualitas dan kuantitas air bersih dengan cara pengolahan sumber air bersih.

Pengolahan air bersih merupakan upaya pengubahan sifat fisika, kimia dan biologi untuk mendapatkan air yang bersih dan sehat sesuai dengan standar mutu air untuk kesehatan. Sistem pengolahan air yang digunakan tergantung pada  kualitas air yang dan tingkat kemurnian air yang diinginkan. Dalam mengolah air sungai yang kotor dan keruh saya menggunakan pengolahan air secara lengkap baik fisika, kimia maupun bakteriologik.

Berdasarkan latar belakang di atas penulis berinisiatif untuk membuat alat water purification yang dapat mengolah air sungai yang kotor dan keruh menjadi air bersih yang dapat memenuhi kebutuhan masyarakat di daerah yang kesusahan akan air bersih, dan diberi judul. “PENGONTROLAN PROSES PENGOLAHAN AIR SUNGAI MENJADI AIR YANG DAPAT DI KONSUMSI BERBASIS PLC”.

alat di atas dalam proses pengerjaan….tidak lama lagi akan rampung pengerjaannya.

 

12
Mei
12

kestabilan sistem

Sistem didefinisikan sebagai kombinasi dari beberapa komponen yang memiliki keterkaitan, sehingga menjadi suatu kesatuan dan mendukung suatu fungsi tertentu. Sistem dapat dipandang sebagai bagian yang ditetapkan dengan suatu pembatas sehingga keseluruhan bagian di luarnya merupakan lingkungan. Pembatas sistem dari lingkungan bersifat konseptual, tidak harus eksplisit secara fisik seperti halnya sebuah tembok pembatas, tetapi lebih diarahkan untuk membedakan komponen mana yang menjadi bagian dari sistem dan komponen mana yang bukan bagian dari sistem.

Dinamika dapat diartikan sebagai perubahan dari nilai suatu variabel sistem terhadap waktu. Dinamika sistem mempelajari identifikasi parameter karakteristik dinamik suatu sistem yang terkait dengan proses yang dapat berlangsung di dalamnya. Sistem statis memiliki respons output terhadap input yang tidak berubah terhadap waktu. Sedangkan pada sistem dinamik memiliki respon terhadap input yang tidak serentak proporsional terhadap input atau gangguan dan akan berlanjut meskipun input sudah tetap. Sistem dinamik dapat merespon terhadap sinyal input, gangguan atau kondisi awal.

Seiring dengan interaksi sistem dengan lingkungan dapat digambarkan dengan variabel input dan output. Variabel input berasal dari luar sistem dan tidak secara langsung tergantung oleh kejadian di dalam sistem. Sedangkan variabel output berasal dari dalam sistem ketika berinteraksi dengan lingkungan. Variabel keadaan diperlukan untuk menggambarkan sistem yang merupakan variabel sistem yang dapat menyatakan keadaan sistem pada suatu waktu tertentu.

untuk lebih jelas klik disini Slide Kestabilan

12
Mei
12

PLC

introduksi Programmable logic Controller “PLC”

Teknik kontrol telah berkembang dari waktu ke waktu. Dalam perkembangan manusia masa lalu metode utama untuk controlling sistem. Baru-baru ini listrik telah digunakan untuk pengendalian dan kontrol listrik awal adalah berdasarkan relay. Relay ini memungkinkan daya harus diaktifkan dan dimatikan tanpasaklar mekanik. hal umum ini untuk menggunakan relay untuk membuat keputusan sederhana kontrol logis.Perkembangan komputer biaya rendah telah membawa revolusi paling terakhir, Programmable Logic Controller (PLC). Munculnya PLC dimulai pada tahun 1970an, dan telah menjadi pilihan yang paling umum untuk kontrol manufaktur.

untuk lebih jelas silahkan download. Introduksi PLC




Arsip